summaryrefslogtreecommitdiff
path: root/chromium/content/browser/android/java
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/content/browser/android/java
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/content/browser/android/java')
-rw-r--r--chromium/content/browser/android/java/gin_java_bridge_dispatcher_host.cc15
-rw-r--r--chromium/content/browser/android/java/gin_java_bridge_message_filter.cc3
2 files changed, 14 insertions, 4 deletions
diff --git a/chromium/content/browser/android/java/gin_java_bridge_dispatcher_host.cc b/chromium/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
index df359f8c122..e1e9597a09d 100644
--- a/chromium/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
+++ b/chromium/content/browser/android/java/gin_java_bridge_dispatcher_host.cc
@@ -11,6 +11,7 @@
#include "content/browser/android/java/gin_java_bound_object_delegate.h"
#include "content/browser/android/java/gin_java_bridge_message_filter.h"
#include "content/browser/android/java/java_bridge_thread.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/android/gin_java_bridge_value.h"
#include "content/common/android/hash_set.h"
#include "content/common/gin_java_bridge_messages.h"
@@ -208,7 +209,12 @@ void GinJavaBridgeDispatcherHost::AddNamedObject(
// notified the observers about new RenderFrame, it is necessary to ensure
// here that all render frame IDs are registered with the filter.
InstallFilterAndRegisterAllRoutingIds();
- web_contents()->SendToAllFrames(
+ // We should include pending RenderFrameHosts, otherwise they will miss the
+ // chance when calling add or remove methods when they are created but not
+ // committed. See: http://crbug.com/1087806
+ WebContentsImpl* web_contents_impl =
+ static_cast<WebContentsImpl*>(web_contents());
+ web_contents_impl->SendToAllFramesIncludingPending(
new GinJavaBridgeMsg_AddNamedObject(MSG_ROUTING_NONE, name, object_id));
}
@@ -234,7 +240,12 @@ void GinJavaBridgeDispatcherHost::RemoveNamedObject(
// hold it. All the transient objects and removed named objects will be purged
// during the cleansing caused by DocumentAvailableInMainFrame event.
- web_contents()->SendToAllFrames(
+ // We should include pending RenderFrameHosts, otherwise they will miss the
+ // chance when calling add or remove methods when they are created but not
+ // committed. See: http://crbug.com/1087806
+ WebContentsImpl* web_contents_impl =
+ static_cast<WebContentsImpl*>(web_contents());
+ web_contents_impl->SendToAllFramesIncludingPending(
new GinJavaBridgeMsg_RemoveNamedObject(MSG_ROUTING_NONE, copied_name));
}
diff --git a/chromium/content/browser/android/java/gin_java_bridge_message_filter.cc b/chromium/content/browser/android/java/gin_java_bridge_message_filter.cc
index 53dba1f9e84..f16d73b4ec7 100644
--- a/chromium/content/browser/android/java/gin_java_bridge_message_filter.cc
+++ b/chromium/content/browser/android/java/gin_java_bridge_message_filter.cc
@@ -5,7 +5,6 @@
#include "content/browser/android/java/gin_java_bridge_message_filter.h"
#include "base/auto_reset.h"
-#include "base/task/post_task.h"
#include "build/build_config.h"
#include "content/browser/android/java/gin_java_bridge_dispatcher_host.h"
#include "content/browser/android/java/java_bridge_thread.h"
@@ -40,7 +39,7 @@ void GinJavaBridgeMessageFilter::OnDestruct() const {
if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
delete this;
} else {
- base::DeleteSoon(FROM_HERE, {BrowserThread::UI}, this);
+ GetUIThreadTaskRunner({})->DeleteSoon(FROM_HERE, this);
}
}