diff options
Diffstat (limited to 'chromium/content/browser/android')
18 files changed, 140 insertions, 111 deletions
diff --git a/chromium/content/browser/android/content_feature_list.cc b/chromium/content/browser/android/content_feature_list.cc index d5feae1e48b..a297f8db048 100644 --- a/chromium/content/browser/android/content_feature_list.cc +++ b/chromium/content/browser/android/content_feature_list.cc @@ -6,6 +6,7 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" +#include "base/notreached.h" #include "base/stl_util.h" #include "content/public/android/content_jni_headers/ContentFeatureListImpl_jni.h" #include "content/public/common/content_features.h" @@ -23,8 +24,8 @@ namespace { // in other locations in the code base (e.g. content_features.h). const base::Feature* kFeaturesExposedToJava[] = { &features::kBackgroundMediaRendererHasModerateBinding, + &features::kWebBluetoothNewPermissionsBackend, &features::kWebNfc, - &features::kWebXrPermissionsApi, &kServiceGroupImportance, }; diff --git a/chromium/content/browser/android/content_ui_event_handler.cc b/chromium/content/browser/android/content_ui_event_handler.cc index 5b2621ef435..0a7042d033e 100644 --- a/chromium/content/browser/android/content_ui_event_handler.cc +++ b/chromium/content/browser/android/content_ui_event_handler.cc @@ -113,7 +113,7 @@ void ContentUiEventHandler::SendMouseWheelEvent( ui::MotionEventAndroid event( env, nullptr, 1.f / view->GetDipScale(), ticks_x, ticks_y, pixels_per_tick, time_ms, 0 /* action */, 1 /* pointer_count */, - 0 /* history_size */, 0 /* action_index */, 0, 0, 0, + 0 /* history_size */, 0 /* action_index */, 0, 0, 0, 0, 0 /* raw_offset_x_pixels */, 0 /* raw_offset_y_pixels */, false /* for_touch_handle */, &pointer, nullptr); event_handler->OnMouseWheelEvent(event); @@ -147,10 +147,10 @@ void ContentUiEventHandler::SendMouseEvent(JNIEnv* env, env, nullptr /* event */, 1.f / web_contents_->GetNativeView()->GetDipScale(), 0.f, 0.f, 0.f, time_ms, android_action, 1 /* pointer_count */, 0 /* history_size */, - 0 /* action_index */, android_action_button, android_button_state, - android_meta_state, 0 /* raw_offset_x_pixels */, - 0 /* raw_offset_y_pixels */, false /* for_touch_handle */, &pointer, - nullptr); + 0 /* action_index */, android_action_button, + 0 /* gesture_classification */, android_button_state, android_meta_state, + 0 /* raw_offset_x_pixels */, 0 /* raw_offset_y_pixels */, + false /* for_touch_handle */, &pointer, nullptr); event_handler->OnMouseEvent(event); } diff --git a/chromium/content/browser/android/dialog_overlay_impl.cc b/chromium/content/browser/android/dialog_overlay_impl.cc index 4210aa23e05..4392c67e89e 100644 --- a/chromium/content/browser/android/dialog_overlay_impl.cc +++ b/chromium/content/browser/android/dialog_overlay_impl.cc @@ -4,7 +4,6 @@ #include "content/browser/android/dialog_overlay_impl.h" -#include "base/task/post_task.h" #include "content/browser/frame_host/render_frame_host_impl.h" #include "content/browser/renderer_host/render_widget_host_view_base.h" #include "content/browser/web_contents/web_contents_impl.h" @@ -136,7 +135,7 @@ void DialogOverlayImpl::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { DCHECK_CURRENTLY_ON(BrowserThread::UI); UnregisterCallbacksIfNeeded(); // We delete soon since this might be part of an onDismissed callback. - base::DeleteSoon(FROM_HERE, {BrowserThread::UI}, this); + GetUIThreadTaskRunner({})->DeleteSoon(FROM_HERE, this); } void DialogOverlayImpl::GetCompositorOffset( diff --git a/chromium/content/browser/android/gesture_listener_manager.cc b/chromium/content/browser/android/gesture_listener_manager.cc index 3a0e3d7b3b8..275713620c1 100644 --- a/chromium/content/browser/android/gesture_listener_manager.cc +++ b/chromium/content/browser/android/gesture_listener_manager.cc @@ -137,6 +137,16 @@ void GestureListenerManager::SetMultiTouchZoomSupportEnabled( rwhva_->SetMultiTouchZoomSupportEnabled(enabled); } +void GestureListenerManager::SetHasListenersAttached(JNIEnv* env, + jboolean enabled) { + if (has_listeners_attached_ == enabled) + return; + + has_listeners_attached_ = enabled; + if (rwhva_) + rwhva_->UpdateReportAllRootScrolls(); +} + void GestureListenerManager::GestureEventAck( const blink::WebGestureEvent& event, blink::mojom::InputEventResultState ack_result) { @@ -219,14 +229,24 @@ void GestureListenerManager::UpdateOnTouchDown() { Java_GestureListenerManagerImpl_updateOnTouchDown(env, obj); } +void GestureListenerManager::OnRootScrollOffsetChanged( + const gfx::Vector2dF& root_scroll_offset) { + JNIEnv* env = AttachCurrentThread(); + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); + if (obj.is_null()) + return; + + Java_GestureListenerManagerImpl_onRootScrollOffsetChanged( + env, obj, root_scroll_offset.x(), root_scroll_offset.y()); +} + void GestureListenerManager::UpdateRenderProcessConnection( RenderWidgetHostViewAndroid* old_rwhva, RenderWidgetHostViewAndroid* new_rwhva) { if (old_rwhva) - old_rwhva->set_gesture_listener_manager(nullptr); - if (new_rwhva) { - new_rwhva->set_gesture_listener_manager(this); - } + old_rwhva->SetGestureListenerManager(nullptr); + if (new_rwhva) + new_rwhva->SetGestureListenerManager(this); rwhva_ = new_rwhva; } diff --git a/chromium/content/browser/android/gesture_listener_manager.h b/chromium/content/browser/android/gesture_listener_manager.h index 12c831f4ed8..57923d96aa7 100644 --- a/chromium/content/browser/android/gesture_listener_manager.h +++ b/chromium/content/browser/android/gesture_listener_manager.h @@ -43,6 +43,8 @@ class CONTENT_EXPORT GestureListenerManager : public RenderWidgetHostConnector { JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, jboolean enabled); + bool has_listeners_attached() const { return has_listeners_attached_; } + void SetHasListenersAttached(JNIEnv* env, jboolean enabled); void GestureEventAck(const blink::WebGestureEvent& event, blink::mojom::InputEventResultState ack_result); void DidStopFlinging(); @@ -60,6 +62,7 @@ class CONTENT_EXPORT GestureListenerManager : public RenderWidgetHostConnector { const float top_shown_pix, bool top_changed); void UpdateOnTouchDown(); + void OnRootScrollOffsetChanged(const gfx::Vector2dF& root_scroll_offset); // RendetWidgetHostConnector implementation. void UpdateRenderProcessConnection( @@ -83,6 +86,9 @@ class CONTENT_EXPORT GestureListenerManager : public RenderWidgetHostConnector { // A weak reference to the Java GestureListenerManager object. JavaObjectWeakGlobalRef java_ref_; + // True if there is at least one listener attached. + bool has_listeners_attached_ = false; + DISALLOW_COPY_AND_ASSIGN(GestureListenerManager); }; diff --git a/chromium/content/browser/android/ime_adapter_android.cc b/chromium/content/browser/android/ime_adapter_android.cc index 0ba2b4dc7f0..32463e294fc 100644 --- a/chromium/content/browser/android/ime_adapter_android.cc +++ b/chromium/content/browser/android/ime_adapter_android.cc @@ -177,19 +177,21 @@ void ImeAdapterAndroid::UpdateRenderProcessConnection( rwhva_ = new_rwhva; } -void ImeAdapterAndroid::UpdateState(const TextInputState& state) { +void ImeAdapterAndroid::UpdateState(const ui::mojom::TextInputState& state) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env); if (obj.is_null()) return; ScopedJavaLocalRef<jstring> jstring_text = - ConvertUTF16ToJavaString(env, state.value); + ConvertUTF16ToJavaString(env, state.value.value_or(base::string16())); Java_ImeAdapterImpl_updateState( env, obj, static_cast<int>(state.type), state.flags, state.mode, static_cast<int>(state.action), state.show_ime_if_needed, - state.always_hide_ime, jstring_text, state.selection_start, - state.selection_end, state.composition_start, state.composition_end, + state.always_hide_ime, jstring_text, state.selection.start(), + state.selection.end(), + state.composition ? state.composition.value().start() : -1, + state.composition ? state.composition.value().end() : -1, state.reply_to_request); } @@ -366,7 +368,7 @@ void ImeAdapterAndroid::SetEditableSelectionOffsets( const JavaParamRef<jobject>&, int start, int end) { - auto* input_handler = GetFocusedFrameInputHandler(); + auto* input_handler = GetFocusedFrameWidgetInputHandler(); if (!input_handler) return; @@ -400,7 +402,7 @@ void ImeAdapterAndroid::SetComposingRegion(JNIEnv*, const JavaParamRef<jobject>&, int start, int end) { - auto* input_handler = GetFocusedFrameInputHandler(); + auto* input_handler = GetFocusedFrameWidgetInputHandler(); if (!input_handler) return; @@ -418,7 +420,7 @@ void ImeAdapterAndroid::DeleteSurroundingText(JNIEnv*, const JavaParamRef<jobject>&, int before, int after) { - auto* input_handler = GetFocusedFrameInputHandler(); + auto* input_handler = GetFocusedFrameWidgetInputHandler(); if (!input_handler) return; input_handler->DeleteSurroundingText(before, after); @@ -429,7 +431,7 @@ void ImeAdapterAndroid::DeleteSurroundingTextInCodePoints( const JavaParamRef<jobject>&, int before, int after) { - auto* input_handler = GetFocusedFrameInputHandler(); + auto* input_handler = GetFocusedFrameWidgetInputHandler(); if (!input_handler) return; input_handler->DeleteSurroundingTextInCodePoints(before, after); @@ -480,11 +482,12 @@ RenderFrameHost* ImeAdapterAndroid::GetFocusedFrame() { return nullptr; } -mojom::FrameInputHandler* ImeAdapterAndroid::GetFocusedFrameInputHandler() { - auto* focused_frame = static_cast<RenderFrameHostImpl*>(GetFocusedFrame()); - if (!focused_frame) +blink::mojom::FrameWidgetInputHandler* +ImeAdapterAndroid::GetFocusedFrameWidgetInputHandler() { + RenderWidgetHostImpl* rwhi = GetFocusedWidget(); + if (!rwhi) return nullptr; - return focused_frame->GetFrameInputHandler(); + return rwhi->GetFrameWidgetInputHandler(); } std::vector<ui::ImeTextSpan> ImeAdapterAndroid::GetImeTextSpansFromJava( diff --git a/chromium/content/browser/android/ime_adapter_android.h b/chromium/content/browser/android/ime_adapter_android.h index 9ef72bb7d99..f22506b6cf9 100644 --- a/chromium/content/browser/android/ime_adapter_android.h +++ b/chromium/content/browser/android/ime_adapter_android.h @@ -17,22 +17,27 @@ namespace ui { +namespace mojom { +class TextInputState; +} // namespace mojom + struct ImeTextSpan; } // namespace ui -namespace content { - +namespace blink { namespace mojom { -class FrameInputHandler; +class FrameWidgetInputHandler; } // namespace mojom +} // namespace blink + +namespace content { class RenderFrameHost; class RenderWidgetHostImpl; class RenderWidgetHostViewAndroid; -struct TextInputState; // This class is in charge of dispatching key events from the java side // and forward to renderer along with input method results via @@ -112,7 +117,7 @@ class CONTENT_EXPORT ImeAdapterAndroid : public RenderWidgetHostConnector { return java_ime_adapter_.get(env); } - void UpdateState(const TextInputState& state); + void UpdateState(const ui::mojom::TextInputState& state); void UpdateOnTouchDown(); void AdvanceFocusInForm(JNIEnv*, @@ -122,7 +127,7 @@ class CONTENT_EXPORT ImeAdapterAndroid : public RenderWidgetHostConnector { private: RenderWidgetHostImpl* GetFocusedWidget(); RenderFrameHost* GetFocusedFrame(); - mojom::FrameInputHandler* GetFocusedFrameInputHandler(); + blink::mojom::FrameWidgetInputHandler* GetFocusedFrameWidgetInputHandler(); std::vector<ui::ImeTextSpan> GetImeTextSpansFromJava( JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, 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); } } diff --git a/chromium/content/browser/android/nfc_host.cc b/chromium/content/browser/android/nfc_host.cc index 86c84a299c4..30517f69b3d 100644 --- a/chromium/content/browser/android/nfc_host.cc +++ b/chromium/content/browser/android/nfc_host.cc @@ -44,8 +44,8 @@ void NFCHost::GetNFC(RenderFrameHost* render_frame_host, } GURL origin_url = render_frame_host->GetLastCommittedOrigin().GetURL(); - if (permission_controller_->GetPermissionStatus(PermissionType::NFC, - origin_url, origin_url) != + if (permission_controller_->GetPermissionStatusForFrame( + PermissionType::NFC, render_frame_host, origin_url) != blink::mojom::PermissionStatus::GRANTED) { return; } diff --git a/chromium/content/browser/android/render_widget_host_connector.cc b/chromium/content/browser/android/render_widget_host_connector.cc index 661519bf455..b18f43617bf 100644 --- a/chromium/content/browser/android/render_widget_host_connector.cc +++ b/chromium/content/browser/android/render_widget_host_connector.cc @@ -23,8 +23,6 @@ class RenderWidgetHostConnector::Observer void RenderViewReady() override; void RenderViewHostChanged(RenderViewHost* old_host, RenderViewHost* new_host) override; - void DidAttachInterstitialPage() override; - void DidDetachInterstitialPage() override; // WebContentsAndroid::DestructionObserver implementation. void WebContentsAndroidDestroyed( @@ -44,8 +42,7 @@ class RenderWidgetHostConnector::Observer RenderWidgetHostConnector* const connector_; - // Active RenderWidgetHostView connected to this instance. Can also point to - // an interstitial while it is showing. + // Active RenderWidgetHostView connected to this instance. RenderWidgetHostViewAndroid* active_rwhva_; DISALLOW_COPY_AND_ASSIGN(Observer); @@ -82,14 +79,6 @@ void RenderWidgetHostConnector::Observer::RenderViewHostChanged( UpdateRenderWidgetHostView(new_view_android); } -void RenderWidgetHostConnector::Observer::DidAttachInterstitialPage() { - UpdateRenderWidgetHostView(GetRenderWidgetHostViewAndroid()); -} - -void RenderWidgetHostConnector::Observer::DidDetachInterstitialPage() { - UpdateRenderWidgetHostView(GetRenderWidgetHostViewAndroid()); -} - void RenderWidgetHostConnector::Observer::WebContentsAndroidDestroyed( WebContentsAndroid* web_contents_android) { DoDestroy(web_contents_android); diff --git a/chromium/content/browser/android/scoped_surface_request_manager.cc b/chromium/content/browser/android/scoped_surface_request_manager.cc index 9fe2f6b45d2..8ce3b1a4191 100644 --- a/chromium/content/browser/android/scoped_surface_request_manager.cc +++ b/chromium/content/browser/android/scoped_surface_request_manager.cc @@ -5,7 +5,6 @@ #include "content/browser/android/scoped_surface_request_manager.h" #include "base/bind.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "gpu/command_buffer/service/texture_owner.h" @@ -69,8 +68,8 @@ void ScopedSurfaceRequestManager::FulfillScopedSurfaceRequest( gl::ScopedJavaSurface surface) { // base::Unretained is safe because the lifetime of this object is tied to // the lifetime of the browser process. - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&ScopedSurfaceRequestManager::CompleteRequestOnUiThread, base::Unretained(this), request_token, std::move(surface))); diff --git a/chromium/content/browser/android/synchronous_compositor_host.cc b/chromium/content/browser/android/synchronous_compositor_host.cc index 9a61f070139..7afaf4ea786 100644 --- a/chromium/content/browser/android/synchronous_compositor_host.cc +++ b/chromium/content/browser/android/synchronous_compositor_host.cc @@ -12,7 +12,6 @@ #include "base/memory/ptr_util.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/writable_shared_memory_region.h" -#include "base/task/post_task.h" #include "base/threading/thread_restrictions.h" #include "base/trace_event/traced_value.h" #include "content/browser/android/synchronous_compositor_sync_call_bridge.h" @@ -66,7 +65,7 @@ void EstablishGpuChannelToEstablishVizConnection() { // This class runs on the IO thread and is destroyed when the renderer // side closes the mojo channel. class SynchronousCompositorControlHost - : public mojom::SynchronousCompositorControlHost { + : public blink::mojom::SynchronousCompositorControlHost { public: SynchronousCompositorControlHost( scoped_refptr<SynchronousCompositorSyncCallBridge> bridge, @@ -78,17 +77,19 @@ class SynchronousCompositorControlHost } static void Create( - mojo::PendingReceiver<mojom::SynchronousCompositorControlHost> receiver, + mojo::PendingReceiver<blink::mojom::SynchronousCompositorControlHost> + receiver, scoped_refptr<SynchronousCompositorSyncCallBridge> bridge, int process_id) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - base::PostTask(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&CreateOnIOThread, std::move(receiver), + GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&CreateOnIOThread, std::move(receiver), std::move(bridge), process_id)); } static void CreateOnIOThread( - mojo::PendingReceiver<mojom::SynchronousCompositorControlHost> receiver, + mojo::PendingReceiver<blink::mojom::SynchronousCompositorControlHost> + receiver, scoped_refptr<SynchronousCompositorSyncCallBridge> bridge, int process_id) { DCHECK_CURRENTLY_ON(BrowserThread::IO); @@ -113,7 +114,7 @@ class SynchronousCompositorControlHost } void BeginFrameResponse( - mojom::SyncCompositorCommonRendererParamsPtr params) override { + blink::mojom::SyncCompositorCommonRendererParamsPtr params) override { if (!bridge_->BeginFrameResponseOnIOThread(std::move(params))) { bad_message::ReceivedBadMessage( process_id_, bad_message::SYNC_COMPOSITOR_NO_BEGIN_FRAME); @@ -168,7 +169,8 @@ SynchronousCompositorHost::~SynchronousCompositorHost() { } void SynchronousCompositorHost::InitMojo() { - mojo::PendingRemote<mojom::SynchronousCompositorControlHost> host_control; + mojo::PendingRemote<blink::mojom::SynchronousCompositorControlHost> + host_control; SynchronousCompositorControlHost::Create( host_control.InitWithNewPipeAndPassReceiver(), bridge_, @@ -201,11 +203,11 @@ SynchronousCompositorHost::DemandDrawHwAsync( return frame_future; } - mojom::SyncCompositorDemandDrawHwParamsPtr params = - mojom::SyncCompositorDemandDrawHwParams::New( + blink::mojom::SyncCompositorDemandDrawHwParamsPtr params = + blink::mojom::SyncCompositorDemandDrawHwParams::New( viewport_size, viewport_rect_for_tile_priority, transform_for_tile_priority); - mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); + blink::mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); if (!bridge_->SetFrameFutureOnUIThread(frame_future)) { frame_future->SetFrame(nullptr); } else { @@ -219,15 +221,15 @@ SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw( const gfx::Size& viewport_size, const gfx::Rect& viewport_rect_for_tile_priority, const gfx::Transform& transform_for_tile_priority) { - mojom::SyncCompositorDemandDrawHwParamsPtr params = - mojom::SyncCompositorDemandDrawHwParams::New( + blink::mojom::SyncCompositorDemandDrawHwParamsPtr params = + blink::mojom::SyncCompositorDemandDrawHwParams::New( viewport_size, viewport_rect_for_tile_priority, transform_for_tile_priority); uint32_t layer_tree_frame_sink_id; uint32_t metadata_version = 0u; base::Optional<viz::CompositorFrame> compositor_frame; base::Optional<viz::HitTestRegionList> hit_test_region_list; - mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; { mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; @@ -290,11 +292,11 @@ bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_base_sync_primitives; - mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; base::Optional<viz::CompositorFrameMetadata> metadata; ScopedSetSkCanvas set_sk_canvas(canvas); - mojom::SyncCompositorDemandDrawSwParamsPtr params = - mojom::SyncCompositorDemandDrawSwParams::New(); // Unused. + blink::mojom::SyncCompositorDemandDrawSwParamsPtr params = + blink::mojom::SyncCompositorDemandDrawSwParams::New(); // Unused. uint32_t metadata_version = 0u; invalidate_needs_draw_ = false; if (!IsReadyForSynchronousCall() || @@ -336,8 +338,8 @@ bool SynchronousCompositorHost::DemandDrawSw(SkCanvas* canvas) { if (use_in_process_zero_copy_software_draw_) return DemandDrawSwInProc(canvas); - mojom::SyncCompositorDemandDrawSwParamsPtr params = - mojom::SyncCompositorDemandDrawSwParams::New(); + blink::mojom::SyncCompositorDemandDrawSwParamsPtr params = + blink::mojom::SyncCompositorDemandDrawSwParams::New(); params->size = gfx::Size(canvas->getBaseLayerSize().width(), canvas->getBaseLayerSize().height()); SkIRect canvas_clip = canvas->getDeviceClipBounds(); @@ -360,7 +362,7 @@ bool SynchronousCompositorHost::DemandDrawSw(SkCanvas* canvas) { base::Optional<viz::CompositorFrameMetadata> metadata; uint32_t metadata_version = 0u; - mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; { mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope @@ -418,7 +420,7 @@ void SynchronousCompositorHost::SetSoftwareDrawSharedMemoryIfNeeded( } bool success = false; - mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; { mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope @@ -436,7 +438,8 @@ void SynchronousCompositorHost::SetSoftwareDrawSharedMemoryIfNeeded( void SynchronousCompositorHost::SendZeroMemory() { // No need to check return value. - if (mojom::SynchronousCompositor* compositor = GetSynchronousCompositor()) + if (blink::mojom::SynchronousCompositor* compositor = + GetSynchronousCompositor()) compositor->ZeroSharedMemory(); } @@ -444,7 +447,8 @@ void SynchronousCompositorHost::ReturnResources( uint32_t layer_tree_frame_sink_id, const std::vector<viz::ReturnedResource>& resources) { DCHECK(!resources.empty()); - if (mojom::SynchronousCompositor* compositor = GetSynchronousCompositor()) + if (blink::mojom::SynchronousCompositor* compositor = + GetSynchronousCompositor()) compositor->ReclaimResources(layer_tree_frame_sink_id, resources); } @@ -472,7 +476,8 @@ void SynchronousCompositorHost::SetMemoryPolicy(size_t bytes_limit) { return; bytes_limit_ = bytes_limit; - if (mojom::SynchronousCompositor* compositor = GetSynchronousCompositor()) + if (blink::mojom::SynchronousCompositor* compositor = + GetSynchronousCompositor()) compositor->SetMemoryPolicy(bytes_limit_); } @@ -481,13 +486,14 @@ void SynchronousCompositorHost::DidChangeRootLayerScrollOffset( if (root_scroll_offset_ == root_offset) return; root_scroll_offset_ = root_offset; - if (mojom::SynchronousCompositor* compositor = GetSynchronousCompositor()) + if (blink::mojom::SynchronousCompositor* compositor = + GetSynchronousCompositor()) compositor->SetScroll(root_scroll_offset_); } void SynchronousCompositorHost::SynchronouslyZoomBy(float zoom_delta, const gfx::Point& anchor) { - mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr common_renderer_params; { mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope @@ -535,7 +541,7 @@ void SynchronousCompositorHost::LayerTreeFrameSinkCreated() { // New LayerTreeFrameSink is not aware of state from Browser side. So need to // re-send all browser side state here. - mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); + blink::mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); DCHECK(compositor); compositor->SetMemoryPolicy(bytes_limit_); @@ -544,7 +550,7 @@ void SynchronousCompositorHost::LayerTreeFrameSinkCreated() { } void SynchronousCompositorHost::UpdateState( - mojom::SyncCompositorCommonRendererParamsPtr params) { + blink::mojom::SyncCompositorCommonRendererParamsPtr params) { // Ignore if |renderer_param_version_| is newer than |params.version|. This // comparison takes into account when the unsigned int wraps. if ((renderer_param_version_ - params->version) < 0x80000000) { @@ -597,7 +603,7 @@ RenderProcessHost* SynchronousCompositorHost::GetRenderProcessHost() { return rwhva_->GetRenderWidgetHost()->GetProcess(); } -mojom::SynchronousCompositor* +blink::mojom::SynchronousCompositor* SynchronousCompositorHost::GetSynchronousCompositor() { if (!sync_compositor_) return nullptr; @@ -652,7 +658,8 @@ bool SynchronousCompositorHost::WantsAnimateOnlyBeginFrames() const { } void SynchronousCompositorHost::SendBeginFramePaused() { - if (mojom::SynchronousCompositor* compositor = GetSynchronousCompositor()) + if (blink::mojom::SynchronousCompositor* compositor = + GetSynchronousCompositor()) compositor->SetBeginFrameSourcePaused(begin_frame_paused_); } @@ -663,7 +670,7 @@ void SynchronousCompositorHost::SendBeginFrame(viz::BeginFrameArgs args) { if (!bridge_->WaitAfterVSyncOnUIThread()) return; - mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); + blink::mojom::SynchronousCompositor* compositor = GetSynchronousCompositor(); DCHECK(compositor); compositor->BeginFrame(args, timing_details_); timing_details_.clear(); diff --git a/chromium/content/browser/android/synchronous_compositor_host.h b/chromium/content/browser/android/synchronous_compositor_host.h index 10db0c6de51..e3b50b3d673 100644 --- a/chromium/content/browser/android/synchronous_compositor_host.h +++ b/chromium/content/browser/android/synchronous_compositor_host.h @@ -19,11 +19,11 @@ #include "components/viz/common/quads/compositor_frame.h" #include "components/viz/common/surfaces/frame_sink_id.h" #include "content/common/content_export.h" -#include "content/common/input/synchronous_compositor.mojom.h" #include "content/public/browser/android/synchronous_compositor.h" #include "mojo/public/cpp/bindings/associated_receiver.h" #include "mojo/public/cpp/bindings/associated_remote.h" #include "third_party/blink/public/mojom/input/input_event_result.mojom-shared.h" +#include "third_party/blink/public/mojom/input/synchronous_compositor.mojom.h" #include "ui/android/view_android.h" #include "ui/gfx/geometry/scroll_offset.h" #include "ui/gfx/geometry/size_f.h" @@ -41,7 +41,7 @@ class SynchronousCompositorSyncCallBridge; class CONTENT_EXPORT SynchronousCompositorHost : public SynchronousCompositor, - public mojom::SynchronousCompositorHost, + public blink::mojom::SynchronousCompositorHost, public viz::BeginFrameObserver { public: static std::unique_ptr<SynchronousCompositorHost> Create( @@ -88,10 +88,10 @@ class CONTENT_EXPORT SynchronousCompositorHost void AddBeginFrameCompletionCallback(base::OnceClosure callback); - // mojom::SynchronousCompositorHost overrides. + // blink::mojom::SynchronousCompositorHost overrides. void LayerTreeFrameSinkCreated() override; void UpdateState( - mojom::SyncCompositorCommonRendererParamsPtr params) override; + blink::mojom::SyncCompositorCommonRendererParamsPtr params) override; void SetNeedsBeginFrames(bool needs_begin_frames) override; // viz::BeginFrameObserver implementation. @@ -123,7 +123,7 @@ class CONTENT_EXPORT SynchronousCompositorHost bool DemandDrawSwInProc(SkCanvas* canvas); void SetSoftwareDrawSharedMemoryIfNeeded(size_t stride, size_t buffer_size); void SendZeroMemory(); - mojom::SynchronousCompositor* GetSynchronousCompositor(); + blink::mojom::SynchronousCompositor* GetSynchronousCompositor(); // Whether the synchronous compositor host is ready to // handle blocking calls. bool IsReadyForSynchronousCall(); @@ -139,9 +139,9 @@ class CONTENT_EXPORT SynchronousCompositorHost SynchronousCompositorClient* const client_; const viz::FrameSinkId frame_sink_id_; const bool use_in_process_zero_copy_software_draw_; - mojo::AssociatedRemote<mojom::SynchronousCompositor> sync_compositor_; - mojo::AssociatedReceiver<mojom::SynchronousCompositorHost> host_receiver_{ - this}; + mojo::AssociatedRemote<blink::mojom::SynchronousCompositor> sync_compositor_; + mojo::AssociatedReceiver<blink::mojom::SynchronousCompositorHost> + host_receiver_{this}; bool registered_with_filter_ = false; diff --git a/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.cc b/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.cc index 77afdc2b962..cd944695b05 100644 --- a/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.cc +++ b/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.cc @@ -5,7 +5,6 @@ #include "content/browser/android/synchronous_compositor_sync_call_bridge.h" #include "base/bind.h" -#include "base/task/post_task.h" #include "content/browser/android/synchronous_compositor_host.h" #include "content/browser/renderer_host/render_process_host_impl.h" #include "content/public/browser/browser_task_traits.h" @@ -55,8 +54,8 @@ bool SynchronousCompositorSyncCallBridge::ReceiveFrameOnIOThread( frame_futures_.pop_front(); if (compositor_frame) { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&SynchronousCompositorSyncCallBridge:: + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&SynchronousCompositorSyncCallBridge:: ProcessFrameMetadataOnUIThread, this, metadata_version, compositor_frame->metadata.Clone())); @@ -69,7 +68,7 @@ bool SynchronousCompositorSyncCallBridge::ReceiveFrameOnIOThread( } bool SynchronousCompositorSyncCallBridge::BeginFrameResponseOnIOThread( - mojom::SyncCompositorCommonRendererParamsPtr render_params) { + blink::mojom::SyncCompositorCommonRendererParamsPtr render_params) { DCHECK_CURRENTLY_ON(BrowserThread::IO); base::AutoLock lock(lock_); if (begin_frame_response_valid_) @@ -125,7 +124,7 @@ bool SynchronousCompositorSyncCallBridge::IsRemoteReadyOnUIThread() { void SynchronousCompositorSyncCallBridge::BeginFrameCompleteOnUIThread() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - mojom::SyncCompositorCommonRendererParamsPtr render_params; + blink::mojom::SyncCompositorCommonRendererParamsPtr render_params; { base::AutoLock lock(lock_); if (remote_state_ != RemoteState::READY) @@ -135,7 +134,10 @@ void SynchronousCompositorSyncCallBridge::BeginFrameCompleteOnUIThread() { if (!begin_frame_response_valid_) { base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_base_sync_primitives; - begin_frame_condition_.Wait(); + while (!begin_frame_response_valid_ && + remote_state_ == RemoteState::READY) { + begin_frame_condition_.Wait(); + } } DCHECK(begin_frame_response_valid_ || remote_state_ != RemoteState::READY); begin_frame_response_valid_ = false; diff --git a/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.h b/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.h index 977bcd9899f..262200f8ebf 100644 --- a/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.h +++ b/chromium/content/browser/android/synchronous_compositor_sync_call_bridge.h @@ -10,8 +10,8 @@ #include "base/memory/ref_counted.h" #include "base/thread_annotations.h" #include "components/viz/common/quads/compositor_frame.h" -#include "content/common/input/synchronous_compositor.mojom.h" #include "content/public/browser/android/synchronous_compositor.h" +#include "third_party/blink/public/mojom/input/synchronous_compositor.mojom.h" namespace content { @@ -88,7 +88,7 @@ class SynchronousCompositorSyncCallBridge // Receive a BeginFrameResponse. Returns true if handling the response was // successful or not. bool BeginFrameResponseOnIOThread( - mojom::SyncCompositorCommonRendererParamsPtr render_params); + blink::mojom::SyncCompositorCommonRendererParamsPtr render_params); // Schedule a callback for when vsync finishes and wait for the // BeginFrameResponse callback. @@ -133,7 +133,7 @@ class SynchronousCompositorSyncCallBridge base::Lock lock_; FrameFutureQueue frame_futures_ GUARDED_BY(lock_); bool begin_frame_response_valid_ GUARDED_BY(lock_) = false; - mojom::SyncCompositorCommonRendererParams last_render_params_ + blink::mojom::SyncCompositorCommonRendererParams last_render_params_ GUARDED_BY(lock_); base::ConditionVariable begin_frame_condition_ GUARDED_BY(lock_); RemoteState remote_state_ GUARDED_BY(lock_) = RemoteState::INIT; diff --git a/chromium/content/browser/android/web_contents_observer_proxy.cc b/chromium/content/browser/android/web_contents_observer_proxy.cc index 8d19886333a..a25075d291d 100644 --- a/chromium/content/browser/android/web_contents_observer_proxy.cc +++ b/chromium/content/browser/android/web_contents_observer_proxy.cc @@ -197,16 +197,6 @@ void WebContentsObserverProxy::NavigationEntryChanged( Java_WebContentsObserverProxy_navigationEntriesChanged(env, java_observer_); } -void WebContentsObserverProxy::DidAttachInterstitialPage() { - JNIEnv* env = AttachCurrentThread(); - Java_WebContentsObserverProxy_didAttachInterstitialPage(env, java_observer_); -} - -void WebContentsObserverProxy::DidDetachInterstitialPage() { - JNIEnv* env = AttachCurrentThread(); - Java_WebContentsObserverProxy_didDetachInterstitialPage(env, java_observer_); -} - void WebContentsObserverProxy::DidChangeThemeColor() { JNIEnv* env = AttachCurrentThread(); Java_WebContentsObserverProxy_didChangeThemeColor(env, java_observer_); diff --git a/chromium/content/browser/android/web_contents_observer_proxy.h b/chromium/content/browser/android/web_contents_observer_proxy.h index ef7a133d57e..1b5271cb10a 100644 --- a/chromium/content/browser/android/web_contents_observer_proxy.h +++ b/chromium/content/browser/android/web_contents_observer_proxy.h @@ -58,8 +58,6 @@ class WebContentsObserverProxy : public WebContentsObserver { void NavigationEntryChanged( const EntryChangedDetails& change_details) override; void WebContentsDestroyed() override; - void DidAttachInterstitialPage() override; - void DidDetachInterstitialPage() override; void DidChangeThemeColor() override; void MediaEffectivelyFullscreenChanged(bool is_fullscreen) override; void SetToBaseURLForDataURLIfNeeded(std::string* url); |