commit
3c5c85c4d8
@ -0,0 +1,53 @@
|
||||
From c0b32910da192edf1b41eb52c088d0213ab2807a Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Sun, 05 Apr 2020 08:29:21 +0000
|
||||
Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for NodeSetSizePosInSetInfo
|
||||
|
||||
std::unordered_map<T, U> requires U to be fully declared. ax_tree.h
|
||||
has only forward declaration of NodeSetSizePosInSetInfo. Therefore,
|
||||
move declaration from ax_tree.cc.
|
||||
Bug: 957519
|
||||
Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868
|
||||
---
|
||||
|
||||
diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
|
||||
index 7b8d9b1..e915402 100644
|
||||
--- a/ui/accessibility/ax_tree.cc
|
||||
+++ b/ui/accessibility/ax_tree.cc
|
||||
@@ -567,14 +567,8 @@
|
||||
const AXTree& tree;
|
||||
};
|
||||
|
||||
-struct AXTree::NodeSetSizePosInSetInfo {
|
||||
- NodeSetSizePosInSetInfo() = default;
|
||||
- ~NodeSetSizePosInSetInfo() = default;
|
||||
-
|
||||
- int32_t pos_in_set = 0;
|
||||
- int32_t set_size = 0;
|
||||
- base::Optional<int> lowest_hierarchical_level;
|
||||
-};
|
||||
+AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default;
|
||||
+AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default;
|
||||
|
||||
struct AXTree::OrderedSetContent {
|
||||
explicit OrderedSetContent(const AXNode* ordered_set = nullptr)
|
||||
diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
|
||||
index a51ca8d..8c1c575 100644
|
||||
--- a/ui/accessibility/ax_tree.h
|
||||
+++ b/ui/accessibility/ax_tree.h
|
||||
@@ -328,7 +328,14 @@
|
||||
bool enable_extra_mac_nodes_ = false;
|
||||
|
||||
// Contains pos_in_set and set_size data for an AXNode.
|
||||
- struct NodeSetSizePosInSetInfo;
|
||||
+ struct NodeSetSizePosInSetInfo {
|
||||
+ NodeSetSizePosInSetInfo();
|
||||
+ ~NodeSetSizePosInSetInfo();
|
||||
+
|
||||
+ int32_t pos_in_set = 0;
|
||||
+ int32_t set_size = 0;
|
||||
+ base::Optional<int> lowest_hierarchical_level;
|
||||
+ };
|
||||
|
||||
// Represents the content of an ordered set which includes the ordered set
|
||||
// items and the ordered set container if it exists.
|
@ -0,0 +1,23 @@
|
||||
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
|
||||
index b3c7624..85936aa 100644
|
||||
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
|
||||
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_CONTAINER_FRAGMENT_H_
|
||||
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_CONTAINER_FRAGMENT_H_
|
||||
|
||||
+#include <iterator>
|
||||
+
|
||||
#include "base/containers/span.h"
|
||||
#include "third_party/blink/renderer/core/core_export.h"
|
||||
#include "third_party/blink/renderer/core/layout/geometry/physical_rect.h"
|
||||
@@ -31,7 +33,8 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment {
|
||||
PostLayoutChildLinkList(wtf_size_t count, const NGLink* buffer)
|
||||
: count_(count), buffer_(buffer) {}
|
||||
|
||||
- class ConstIterator {
|
||||
+ class ConstIterator : public std::iterator<std::input_iterator_tag,
|
||||
+ NGLink> {
|
||||
STACK_ALLOCATED();
|
||||
|
||||
public:
|
@ -0,0 +1,35 @@
|
||||
diff --git a/ui/color/color_set.cc b/ui/color/color_set.cc
|
||||
index 56564d7..2798a3c 100644
|
||||
--- a/ui/color/color_set.cc
|
||||
+++ b/ui/color/color_set.cc
|
||||
@@ -11,7 +11,7 @@ ColorSet::ColorSet(ColorSetId id, ColorMap&& colors)
|
||||
|
||||
ColorSet::ColorSet(ColorSet&&) noexcept = default;
|
||||
|
||||
-ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default;
|
||||
+ColorSet& ColorSet::operator=(ColorSet&&) = default;
|
||||
|
||||
ColorSet::~ColorSet() = default;
|
||||
|
||||
diff --git a/third_party/blink/public/platform/cross_variant_mojo_util.h b/third_party/blink/public/platform/cross_variant_mojo_util.h
|
||||
index dee0b95..0c83580 100644
|
||||
--- a/third_party/blink/public/platform/cross_variant_mojo_util.h
|
||||
+++ b/third_party/blink/public/platform/cross_variant_mojo_util.h
|
||||
@@ -124,7 +124,7 @@ class CrossVariantMojoAssociatedReceiver {
|
||||
~CrossVariantMojoAssociatedReceiver() = default;
|
||||
|
||||
CrossVariantMojoAssociatedReceiver(
|
||||
- CrossVariantMojoAssociatedReceiver&&) noexcept = default;
|
||||
+ CrossVariantMojoAssociatedReceiver&&) = default;
|
||||
CrossVariantMojoAssociatedReceiver& operator=(
|
||||
CrossVariantMojoAssociatedReceiver&&) noexcept = default;
|
||||
|
||||
@@ -155,7 +155,7 @@ class CrossVariantMojoAssociatedRemote {
|
||||
~CrossVariantMojoAssociatedRemote() = default;
|
||||
|
||||
CrossVariantMojoAssociatedRemote(
|
||||
- CrossVariantMojoAssociatedRemote&&) noexcept = default;
|
||||
+ CrossVariantMojoAssociatedRemote&&) = default;
|
||||
CrossVariantMojoAssociatedRemote& operator=(
|
||||
CrossVariantMojoAssociatedRemote&&) noexcept = default;
|
||||
|
@ -0,0 +1,50 @@
|
||||
diff --git a/content/public/browser/web_ui.h b/content/public/browser/web_ui.h
|
||||
index 4e6aa0e..fa6f10c 100644
|
||||
--- a/content/public/browser/web_ui.h
|
||||
+++ b/content/public/browser/web_ui.h
|
||||
@@ -138,22 +138,6 @@ class CONTENT_EXPORT WebUI {
|
||||
template <typename T>
|
||||
static T GetValue(const base::Value& value);
|
||||
|
||||
- template <>
|
||||
- inline bool GetValue<bool>(const base::Value& value) {
|
||||
- return value.GetBool();
|
||||
- }
|
||||
-
|
||||
- template <>
|
||||
- inline int GetValue<int>(const base::Value& value) {
|
||||
- return value.GetInt();
|
||||
- }
|
||||
-
|
||||
- template <>
|
||||
- inline const std::string& GetValue<const std::string&>(
|
||||
- const base::Value& value) {
|
||||
- return value.GetString();
|
||||
- }
|
||||
-
|
||||
template <typename Is, typename... Args>
|
||||
struct Call;
|
||||
|
||||
@@ -169,6 +153,22 @@ class CONTENT_EXPORT WebUI {
|
||||
};
|
||||
};
|
||||
|
||||
+template <>
|
||||
+inline bool WebUI::GetValue<bool>(const base::Value& value) {
|
||||
+ return value.GetBool();
|
||||
+}
|
||||
+
|
||||
+template <>
|
||||
+inline int WebUI::GetValue<int>(const base::Value& value) {
|
||||
+ return value.GetInt();
|
||||
+}
|
||||
+
|
||||
+template <>
|
||||
+inline const std::string& WebUI::GetValue<const std::string&>(
|
||||
+ const base::Value& value) {
|
||||
+ return value.GetString();
|
||||
+}
|
||||
+
|
||||
} // namespace content
|
||||
|
||||
#endif // CONTENT_PUBLIC_BROWSER_WEB_UI_H_
|
@ -0,0 +1,75 @@
|
||||
From 3681c96f54b34f60493cbbf5ec830f158e469799 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Thu, 2 Apr 2020 14:35:44 +0000
|
||||
Subject: [PATCH] IWYU: std::find is defined in algorithm
|
||||
|
||||
---
|
||||
extensions/browser/install/crx_install_error.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc
|
||||
index a9765bb..bd0d3e3 100644
|
||||
--- a/extensions/browser/install/crx_install_error.cc
|
||||
+++ b/extensions/browser/install/crx_install_error.cc
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "extensions/browser/install/crx_install_error.h"
|
||||
|
||||
+#include <algorithm>
|
||||
+
|
||||
#include "base/logging.h"
|
||||
#include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
|
||||
|
||||
--
|
||||
2.24.1
|
||||
|
||||
From 80044e30e0014c4c322178e4b56ddbb10eede304 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Thu, 9 Apr 2020 17:58:06 +0000
|
||||
Subject: [PATCH] IWYU: std::unique_ptr is defined in memory
|
||||
|
||||
---
|
||||
.../blink/renderer/core/html/trust_token_attribute_parsing.h | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
|
||||
index f5a7ab0..ef19cfa 100644
|
||||
--- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
|
||||
+++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
|
||||
#define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
|
||||
|
||||
+#include <memory>
|
||||
+
|
||||
#include "base/optional.h"
|
||||
#include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h"
|
||||
#include "third_party/blink/renderer/core/core_export.h"
|
||||
--
|
||||
2.24.1
|
||||
|
||||
From 4f4d0a6d453bc22a6397dadaf6d866b4eb2d6b95 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Fri, 10 Apr 2020 08:31:08 +0000
|
||||
Subject: [PATCH] IWYU: std::numeric_limits is defined in limits
|
||||
|
||||
---
|
||||
.../graph/policies/background_tab_loading_policy_helpers.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
|
||||
index 6ab117b..43aa602 100644
|
||||
--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
|
||||
+++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
|
||||
@@ -2,6 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
+#include <limits>
|
||||
+
|
||||
#include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h"
|
||||
#include "base/logging.h"
|
||||
|
||||
--
|
||||
2.24.1
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 4abcf0a76a7cb5c343be7d17c60cb908f3673c3d Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Thu, 9 Apr 2020 17:03:38 +0000
|
||||
Subject: [PATCH] libstdc++: replace std::any_of in blink::SerializedScriptValue
|
||||
|
||||
Use of std::any_of requires STL compliant iterator. However,
|
||||
HashTableIterator does not define iterator_tag and therefore
|
||||
is no STL iterator.
|
||||
---
|
||||
.../core/v8/serialization/serialized_script_value.h | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
|
||||
index bbf10ef..53d98c9 100644
|
||||
--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
|
||||
+++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h
|
||||
@@ -268,12 +268,17 @@ class CORE_EXPORT SerializedScriptValue
|
||||
MessagePortChannelArray& GetStreamChannels() { return stream_channels_; }
|
||||
|
||||
bool IsLockedToAgentCluster() const {
|
||||
+ auto AnyOfIsLockedToAgentCluster = [&]() {
|
||||
+ for (auto entry = attachments_.begin();
|
||||
+ entry != attachments_.end(); ++entry) {
|
||||
+ if (entry->value->IsLockedToAgentCluster())
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ };
|
||||
return !wasm_modules_.IsEmpty() ||
|
||||
!shared_array_buffers_contents_.IsEmpty() ||
|
||||
- std::any_of(attachments_.begin(), attachments_.end(),
|
||||
- [](const auto& entry) {
|
||||
- return entry.value->IsLockedToAgentCluster();
|
||||
- });
|
||||
+ AnyOfIsLockedToAgentCluster();
|
||||
}
|
||||
|
||||
// Returns true after serializing script values that remote origins cannot
|
||||
--
|
||||
2.24.1
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff -up chromium-83.0.4103.61/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h.gcc-ozone-wayland chromium-83.0.4103.61/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h
|
||||
--- chromium-83.0.4103.61/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h.gcc-ozone-wayland 2020-06-05 09:16:08.903282140 -0400
|
||||
+++ chromium-83.0.4103.61/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h 2020-06-05 09:16:31.131863653 -0400
|
||||
@@ -68,7 +68,7 @@ class XDGSurfaceWrapperImpl : public She
|
||||
static void CloseTopLevelV6(void* data,
|
||||
struct zxdg_toplevel_v6* zxdg_toplevel_v6);
|
||||
|
||||
- xdg_surface* xdg_surface() const;
|
||||
+ struct xdg_surface* xdg_surface() const;
|
||||
zxdg_surface_v6* zxdg_surface() const;
|
||||
|
||||
private:
|
@ -0,0 +1,31 @@
|
||||
From fdf2767e8dc54727c9536a4d39d230a959e3698c Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Thu, 2 Apr 2020 16:16:14 +0000
|
||||
Subject: [PATCH] GCC: add missing apps namespace to BrowserAppLauncher
|
||||
|
||||
GCC does not get namespace of BrowserAppLauncher right and
|
||||
fails like this:
|
||||
|
||||
chrome/browser/apps/app_service/app_service_proxy.h:82:23: error:
|
||||
declaration of 'apps::BrowserAppLauncher&
|
||||
apps::AppServiceProxy::BrowserAppLauncher()' changes meaning of
|
||||
'BrowserAppLauncher' [-fpermissive]
|
||||
---
|
||||
chrome/browser/apps/app_service/app_service_proxy.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/apps/app_service/app_service_proxy.h b/chrome/browser/apps/app_service/app_service_proxy.h
|
||||
index b7fff63..1ecd49d 100644
|
||||
--- a/chrome/browser/apps/app_service/app_service_proxy.h
|
||||
+++ b/chrome/browser/apps/app_service/app_service_proxy.h
|
||||
@@ -79,7 +79,7 @@ class AppServiceProxy : public KeyedService,
|
||||
apps::InstanceRegistry& InstanceRegistry();
|
||||
#endif
|
||||
|
||||
- BrowserAppLauncher& BrowserAppLauncher();
|
||||
+ apps::BrowserAppLauncher& BrowserAppLauncher();
|
||||
|
||||
apps::PreferredAppsList& PreferredApps();
|
||||
|
||||
--
|
||||
2.24.1
|
@ -0,0 +1,130 @@
|
||||
From 0914a38252f205fc04fa50e858b24fa5f535ab11 Mon Sep 17 00:00:00 2001
|
||||
From: Hiroki Nakagawa <nhiroki@chromium.org>
|
||||
Date: Wed, 29 Apr 2020 11:46:54 +0900
|
||||
Subject: [PATCH] ServiceWorker: Avoid double destruction of ServiceWorkerObjectHost on connection error
|
||||
|
||||
This CL avoids the case where ServiceWorkerObjectHost is destroyed twice
|
||||
on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built
|
||||
with the GCC build toolchain.
|
||||
|
||||
> How does the issue happen?
|
||||
|
||||
ServiceWorkerObjectHost has a cyclic reference like this:
|
||||
|
||||
ServiceWorkerObjectHost
|
||||
--([1] scoped_refptr)--> ServiceWorkerVersion
|
||||
--([2] std::unique_ptr)--> ServiceWorkerProviderHost
|
||||
--([3] std::unique_ptr)--> ServiceWorkerContainerHost
|
||||
--([4] std::unique_ptr)--> ServiceWorkerObjectHost
|
||||
|
||||
Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in
|
||||
map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>.
|
||||
|
||||
When ServiceWorkerObjectHost::OnConnectionError() is called, the
|
||||
function removes the reference [4] from the map, and destroys
|
||||
ServiceWorkerObjectHost. If the object host has the last reference [1]
|
||||
to ServiceWorkerVersion, the destruction also cuts off the references
|
||||
[2] and [3], and destroys ServiceWorkerProviderHost and
|
||||
ServiceWorkerContainerHost.
|
||||
|
||||
This seems to work well on the Chromium's default toolchain, but not
|
||||
work on the GCC toolchain. According to the report, destruction of
|
||||
ServiceWorkerContainerHost happens while the map owned by the container
|
||||
host is erasing the ServiceWorkerObjectHost, and this results in crash
|
||||
due to double destruction of the object host.
|
||||
|
||||
I don't know the reason why this happens only on the GCC toolchain, but
|
||||
I suspect the order of object destruction on std::map::erase() could be
|
||||
different depending on the toolchains.
|
||||
|
||||
> How does this CL fix this?
|
||||
|
||||
The ideal fix is to redesign the ownership model of
|
||||
ServiceWorkerVersion, but it's not feasible in the short term.
|
||||
|
||||
Instead, this CL avoids destruction of ServiceWorkerObjectHost on
|
||||
std::map::erase(). The new code takes the ownership of the object host
|
||||
from the map first, and then erases the entry from the map. This
|
||||
separates timings to erase the map entry and to destroy the object host,
|
||||
so the crash should no longer happen.
|
||||
|
||||
Bug: 1056598
|
||||
Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613
|
||||
---
|
||||
|
||||
diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
|
||||
index c631bcd..ff917f8 100644
|
||||
--- a/content/browser/service_worker/service_worker_container_host.cc
|
||||
+++ b/content/browser/service_worker/service_worker_container_host.cc
|
||||
@@ -717,6 +717,16 @@
|
||||
int64_t version_id) {
|
||||
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
|
||||
DCHECK(base::Contains(service_worker_object_hosts_, version_id));
|
||||
+
|
||||
+ // ServiceWorkerObjectHost to be deleted may have the last reference to
|
||||
+ // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost.
|
||||
+ // If we erase the object host directly from the map, |this| could be deleted
|
||||
+ // during the map operation and may crash. To avoid the case, we take the
|
||||
+ // ownership of the object host from the map first, and then erase the entry
|
||||
+ // from the map. See https://crbug.com/1056598 for details.
|
||||
+ std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted =
|
||||
+ std::move(service_worker_object_hosts_[version_id]);
|
||||
+ DCHECK(to_be_deleted);
|
||||
service_worker_object_hosts_.erase(version_id);
|
||||
}
|
||||
|
||||
diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
|
||||
index 238cb8b..f60c7a2 100644
|
||||
--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
|
||||
+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
|
||||
@@ -200,6 +200,19 @@
|
||||
return registration_info;
|
||||
}
|
||||
|
||||
+ void CallOnConnectionError(ServiceWorkerContainerHost* container_host,
|
||||
+ int64_t version_id) {
|
||||
+ // ServiceWorkerObjectHost has the last reference to the version.
|
||||
+ ServiceWorkerObjectHost* object_host =
|
||||
+ GetServiceWorkerObjectHost(container_host, version_id);
|
||||
+ EXPECT_TRUE(object_host->version_->HasOneRef());
|
||||
+
|
||||
+ // Make sure that OnConnectionError induces destruction of the version and
|
||||
+ // the object host.
|
||||
+ object_host->receivers_.Clear();
|
||||
+ object_host->OnConnectionError();
|
||||
+ }
|
||||
+
|
||||
BrowserTaskEnvironment task_environment_;
|
||||
std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
|
||||
scoped_refptr<ServiceWorkerRegistration> registration_;
|
||||
@@ -409,5 +422,30 @@
|
||||
events[0]->source_info_for_client->client_type);
|
||||
}
|
||||
|
||||
+// This is a regression test for https://crbug.com/1056598.
|
||||
+TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) {
|
||||
+ const GURL scope("https://www.example.com/");
|
||||
+ const GURL script_url("https://www.example.com/service_worker.js");
|
||||
+ Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
|
||||
+ SetUpRegistration(scope, script_url);
|
||||
+
|
||||
+ // Create the provider host.
|
||||
+ ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
|
||||
+ StartServiceWorker(version_.get()));
|
||||
+
|
||||
+ // Set up the case where the last reference to the version is owned by the
|
||||
+ // service worker object host.
|
||||
+ ServiceWorkerContainerHost* container_host =
|
||||
+ version_->provider_host()->container_host();
|
||||
+ ServiceWorkerVersion* version_rawptr = version_.get();
|
||||
+ version_ = nullptr;
|
||||
+ ASSERT_TRUE(version_rawptr->HasOneRef());
|
||||
+
|
||||
+ // Simulate the connection error that induces the object host destruction.
|
||||
+ // This shouldn't crash.
|
||||
+ CallOnConnectionError(container_host, version_rawptr->version_id());
|
||||
+ base::RunLoop().RunUntilIdle();
|
||||
+}
|
||||
+
|
||||
} // namespace service_worker_object_host_unittest
|
||||
} // namespace content
|
@ -0,0 +1,69 @@
|
||||
From 8d115ddda495d0d2e1e1447392db6e9e6a8a1b32 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Hartmann <stha09@googlemail.com>
|
||||
Date: Tue, 07 Apr 2020 00:23:57 +0000
|
||||
Subject: [PATCH] GCC: fix template specialization in WTF::VectorMover
|
||||
|
||||
GCC complains that explicit specialization in non-namespace scope
|
||||
is happening for MoveOverlappingImpl. However, secialization is
|
||||
not really necessary here with templates and can be moved
|
||||
into MoveOverlappingImpl method without changing generated code.
|
||||
|
||||
Bug: 819294
|
||||
Change-Id: I90b893b9701748302f7b900fbcc2c341685fe0d3
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2126290
|
||||
Reviewed-by: Kent Tamura <tkent@chromium.org>
|
||||
Commit-Queue: Kent Tamura <tkent@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/master@{#756880}
|
||||
---
|
||||
|
||||
diff --git a/third_party/blink/renderer/platform/wtf/vector.h b/third_party/blink/renderer/platform/wtf/vector.h
|
||||
index 632d308..82aaf96 100644
|
||||
--- a/third_party/blink/renderer/platform/wtf/vector.h
|
||||
+++ b/third_party/blink/renderer/platform/wtf/vector.h
|
||||
@@ -205,30 +205,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
- template <bool = Allocator::kIsGarbageCollected>
|
||||
- static void MoveOverlappingImpl(const T* src, const T* src_end, T* dst);
|
||||
- template <>
|
||||
- static void MoveOverlappingImpl<false>(const T* src,
|
||||
- const T* src_end,
|
||||
- T* dst) {
|
||||
- memmove(dst, src,
|
||||
- reinterpret_cast<const char*>(src_end) -
|
||||
- reinterpret_cast<const char*>(src));
|
||||
- }
|
||||
- template <>
|
||||
- static void MoveOverlappingImpl<true>(const T* src,
|
||||
- const T* src_end,
|
||||
- T* dst) {
|
||||
- if (src == dst)
|
||||
- return;
|
||||
- if (dst < src) {
|
||||
- for (; src < src_end; ++src, ++dst)
|
||||
- AtomicWriteMemcpy<sizeof(T)>(dst, src);
|
||||
+ static void MoveOverlappingImpl(const T* src, const T* src_end, T* dst) {
|
||||
+ if (Allocator::kIsGarbageCollected) {
|
||||
+ if (src == dst)
|
||||
+ return;
|
||||
+ if (dst < src) {
|
||||
+ for (; src < src_end; ++src, ++dst)
|
||||
+ AtomicWriteMemcpy<sizeof(T)>(dst, src);
|
||||
+ } else {
|
||||
+ --src_end;
|
||||
+ T* dst_end = dst + (src_end - src);
|
||||
+ for (; src_end >= src; --src_end, --dst_end)
|
||||
+ AtomicWriteMemcpy<sizeof(T)>(dst_end, src_end);
|
||||
+ }
|
||||
} else {
|
||||
- --src_end;
|
||||
- T* dst_end = dst + (src_end - src);
|
||||
- for (; src_end >= src; --src_end, --dst_end)
|
||||
- AtomicWriteMemcpy<sizeof(T)>(dst_end, src_end);
|
||||
+ memmove(dst, src,
|
||||
+ reinterpret_cast<const char*>(src_end) -
|
||||
+ reinterpret_cast<const char*>(src));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,13 @@
|
||||
diff -up chromium-83.0.4103.61/base/test/BUILD.gn.nofontconfigcache chromium-83.0.4103.61/base/test/BUILD.gn
|
||||
--- chromium-83.0.4103.61/base/test/BUILD.gn.nofontconfigcache 2020-05-29 12:30:03.409707011 -0400
|
||||
+++ chromium-83.0.4103.61/base/test/BUILD.gn 2020-05-29 12:30:22.593275137 -0400
|
||||
@@ -188,9 +188,6 @@ static_library("test_support") {
|
||||
sources += [ "test_file_util_linux.cc" ]
|
||||
public_deps += [ ":fontconfig_util_linux" ]
|
||||
data_deps = [ "//third_party/test_fonts" ]
|
||||
- if (current_toolchain == host_toolchain) {
|
||||
- data_deps += [ ":do_generate_fontconfig_caches" ]
|
||||
- }
|
||||
}
|
||||
|
||||
if (is_mac) {
|
@ -0,0 +1,34 @@
|
||||
diff -up chromium-83.0.4103.61/chrome/browser/search/background/ntp_backgrounds.h.missing-cstddef chromium-83.0.4103.61/chrome/browser/search/background/ntp_backgrounds.h
|
||||
--- chromium-83.0.4103.61/chrome/browser/search/background/ntp_backgrounds.h.missing-cstddef 2020-05-18 14:39:11.000000000 -0400
|
||||
+++ chromium-83.0.4103.61/chrome/browser/search/background/ntp_backgrounds.h 2020-05-29 15:37:52.370693881 -0400
|
||||
@@ -6,6 +6,7 @@
|
||||
#define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstddef>
|
||||
|
||||
class GURL;
|
||||
|
||||
diff -up chromium-83.0.4103.61/media/cdm/supported_cdm_versions.h.missing-cstddef chromium-83.0.4103.61/media/cdm/supported_cdm_versions.h
|
||||
diff -up chromium-83.0.4103.61/third_party/angle/include/platform/Platform.h.missing-cstddef chromium-83.0.4103.61/third_party/angle/include/platform/Platform.h
|
||||
--- chromium-83.0.4103.61/third_party/angle/include/platform/Platform.h.missing-cstddef 2020-05-29 15:37:52.374693782 -0400
|
||||
+++ chromium-83.0.4103.61/third_party/angle/include/platform/Platform.h 2020-05-29 15:39:47.343874233 -0400
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <array>
|
||||
+#include <cstddef>
|
||||
|
||||
#define EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX 0x3482
|
||||
|
||||
diff -up chromium-83.0.4103.61/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h.missing-cstddef chromium-83.0.4103.61/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
|
||||
--- chromium-83.0.4103.61/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h.missing-cstddef 2020-05-18 14:42:43.000000000 -0400
|
||||
+++ chromium-83.0.4103.61/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-05-29 15:37:52.376693733 -0400
|
||||
@@ -12,6 +12,7 @@
|
||||
#define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstddef>
|
||||
|
||||
namespace webrtc {
|
||||
|
@ -0,0 +1,79 @@
|
||||
diff -up chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn
|
||||
--- chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn.nounrar 2020-05-29 12:21:53.249790785 -0400
|
||||
+++ chromium-83.0.4103.61/chrome/common/safe_browsing/BUILD.gn 2020-05-29 12:22:27.825004615 -0400
|
||||
@@ -57,39 +57,6 @@ if (safe_browsing_mode == 1) {
|
||||
public_deps = [ "//components/safe_browsing/core:csd_proto" ]
|
||||
}
|
||||
|
||||
- source_set("rar_analyzer") {
|
||||
- sources = [
|
||||
- "rar_analyzer.cc",
|
||||
- "rar_analyzer.h",
|
||||
- ]
|
||||
-
|
||||
- deps = [
|
||||
- ":archive_analyzer_results",
|
||||
- ":download_type_util",
|
||||
- "//base",
|
||||
- "//base:i18n",
|
||||
- "//components/safe_browsing/core:features",
|
||||
- "//components/safe_browsing/core:file_type_policies",
|
||||
- "//third_party/unrar:unrar",
|
||||
- ]
|
||||
-
|
||||
- defines = [
|
||||
- "_FILE_OFFSET_BITS=64",
|
||||
- "LARGEFILE_SOURCE",
|
||||
- "RAR_SMP",
|
||||
- "SILENT",
|
||||
-
|
||||
- # The following is set to disable certain macro definitions in the unrar
|
||||
- # source code.
|
||||
- "CHROMIUM_UNRAR",
|
||||
-
|
||||
- # Disables exceptions in unrar, replaces them with process termination.
|
||||
- "UNRAR_NO_EXCEPTIONS",
|
||||
- ]
|
||||
-
|
||||
- public_deps = [ "//components/safe_browsing/core:csd_proto" ]
|
||||
- }
|
||||
-
|
||||
source_set("disk_image_type_sniffer_mac") {
|
||||
sources = [
|
||||
"disk_image_type_sniffer_mac.cc",
|
||||
@@ -156,7 +123,6 @@ source_set("safe_browsing") {
|
||||
":archive_analyzer_results",
|
||||
":binary_feature_extractor",
|
||||
":download_type_util",
|
||||
- ":rar_analyzer",
|
||||
"//components/safe_browsing/core:features",
|
||||
]
|
||||
|
||||
diff -up chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS.nounrar chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS
|
||||
--- chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS.nounrar 2020-05-18 14:39:13.000000000 -0400
|
||||
+++ chromium-83.0.4103.61/chrome/common/safe_browsing/DEPS 2020-05-29 12:21:08.563806866 -0400
|
||||
@@ -1,6 +1,5 @@
|
||||
include_rules = [
|
||||
"+components/safe_browsing",
|
||||
"+third_party/protobuf",
|
||||
- "+third_party/unrar",
|
||||
"+third_party/zlib",
|
||||
]
|
||||
diff -up chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc
|
||||
--- chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc.nounrar 2020-05-18 14:39:13.000000000 -0400
|
||||
+++ chromium-83.0.4103.61/chrome/services/file_util/safe_archive_analyzer.cc 2020-05-29 12:21:08.565806820 -0400
|
||||
@@ -46,10 +46,14 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile
|
||||
void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
|
||||
base::File temporary_file,
|
||||
AnalyzeRarFileCallback callback) {
|
||||
+#if 0
|
||||
DCHECK(rar_file.IsValid());
|
||||
|
||||
safe_browsing::ArchiveAnalyzerResults results;
|
||||
safe_browsing::rar_analyzer::AnalyzeRarFile(
|
||||
std::move(rar_file), std::move(temporary_file), &results);
|
||||
std::move(callback).Run(results);
|
||||
+#else
|
||||
+ NOTREACHED();
|
||||
+#endif
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
diff -up chromium-83.0.4103.97/media/gpu/vaapi/BUILD.gn.i686permissive chromium-83.0.4103.97/media/gpu/vaapi/BUILD.gn
|
||||
--- chromium-83.0.4103.97/media/gpu/vaapi/BUILD.gn.i686permissive 2020-06-07 10:58:00.309383632 -0400
|
||||
+++ chromium-83.0.4103.97/media/gpu/vaapi/BUILD.gn 2020-06-07 10:58:47.532340933 -0400
|
||||
@@ -13,6 +13,10 @@ import("//ui/ozone/ozone.gni")
|
||||
assert(is_linux) # is_chromeos is a subset of is_linux
|
||||
assert(use_vaapi)
|
||||
|
||||
+config("vaapi_permissive") {
|
||||
+ cflags = [ "-fpermissive" ]
|
||||
+}
|
||||
+
|
||||
generate_stubs("libva_stubs") {
|
||||
extra_header = "va_stub_header.fragment"
|
||||
sigs = [ "va.sigs" ]
|
||||
@@ -108,6 +112,8 @@ source_set("vaapi") {
|
||||
]
|
||||
}
|
||||
|
||||
+ configs += [ ":vaapi_permissive" ]
|
||||
+
|
||||
if (use_x11) {
|
||||
configs += [ "//build/config/linux:x11" ]
|
||||
deps += [ "//ui/gfx/x" ]
|
Loading…
Reference in new issue