epel8
parent
e422e4af62
commit
4f9d92dcdf
@ -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,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
|
||||||
|
}
|
Loading…
Reference in new issue