diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc b/chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc index abcd00fc0ab..3f3e8ccf983 100644 --- a/chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc +++ b/chromium/third_party/blink/renderer/core/page/chrome_client_impl.cc @@ -168,7 +168,9 @@ class CompositorAnimationTimeline; ChromeClientImpl::ChromeClientImpl(WebViewImpl* web_view) : web_view_(web_view), cursor_overridden_(false), - did_request_non_empty_tool_tip_(false) {} + did_request_non_empty_tool_tip_(false) { + DCHECK(web_view_); +} ChromeClientImpl::~ChromeClientImpl() { DCHECK(file_chooser_queue_.IsEmpty()); @@ -185,10 +187,13 @@ WebViewImpl* ChromeClientImpl::GetWebView() const { } void ChromeClientImpl::ChromeDestroyed() { - // Our lifetime is bound to the WebViewImpl. + // Clear |web_view_| since it is refcounted and this class is a GC'd object + // and may outlive the WebViewImpl. + web_view_ = nullptr; } void ChromeClientImpl::SetWindowRect(const IntRect& r, LocalFrame& frame) { + DCHECK(web_view_); DCHECK_EQ(&frame, web_view_->MainFrameImpl()->GetFrame()); web_view_->MainFrameViewWidget()->SetWindowRect(r); } @@ -200,10 +205,12 @@ IntRect ChromeClientImpl::RootWindowRect(LocalFrame& frame) { } void ChromeClientImpl::FocusPage() { + DCHECK(web_view_); web_view_->Focus(); } void ChromeClientImpl::DidFocusPage() { + DCHECK(web_view_); if (web_view_->Client()) web_view_->Client()->DidFocus(); } @@ -215,10 +222,12 @@ bool ChromeClientImpl::CanTakeFocus(mojom::blink::FocusType) { } void ChromeClientImpl::TakeFocus(mojom::blink::FocusType type) { + DCHECK(web_view_); web_view_->TakeFocus(type == mojom::blink::FocusType::kBackward); } void ChromeClientImpl::SetKeyboardFocusURL(Element* new_focus_element) { + DCHECK(web_view_); KURL focus_url; if (new_focus_element && new_focus_element->IsLiveLink() && new_focus_element->ShouldHaveFocusAppearance()) @@ -237,6 +246,7 @@ void ChromeClientImpl::StartDragging(LocalFrame* frame, } bool ChromeClientImpl::AcceptsLoadDrops() const { + DCHECK(web_view_); return web_view_->GetRendererPreferences().can_accept_load_drops; } @@ -248,6 +258,7 @@ Page* ChromeClientImpl::CreateWindowDelegate( network::mojom::blink::WebSandboxFlags sandbox_flags, const SessionStorageNamespaceId& session_storage_namespace_id, bool& consumed_user_gesture) { + DCHECK(web_view_); if (!web_view_->Client()) return nullptr; @@ -272,6 +283,7 @@ void ChromeClientImpl::DidOverscroll( const gfx::Vector2dF& accumulated_overscroll, const gfx::PointF& position_in_viewport, const gfx::Vector2dF& velocity_in_viewport) { + DCHECK(web_view_); if (!web_view_->does_composite()) return; // TODO(darin): Change caller to pass LocalFrame. @@ -304,6 +316,7 @@ void ChromeClientImpl::Show(const blink::LocalFrameToken& opener_frame_token, NavigationPolicy navigation_policy, const IntRect& initial_rect, bool user_gesture) { + DCHECK(web_view_); web_view_->Show(opener_frame_token, navigation_policy, initial_rect, user_gesture); } @@ -342,6 +355,7 @@ void ChromeClientImpl::AddMessageToConsole(LocalFrame* local_frame, } bool ChromeClientImpl::CanOpenBeforeUnloadConfirmPanel() { + DCHECK(web_view_); return !!web_view_->Client(); } @@ -366,6 +380,7 @@ void ChromeClientImpl::SetBeforeUnloadConfirmPanelResultForTesting( } void ChromeClientImpl::CloseWindowSoon() { + DCHECK(web_view_); web_view_->CloseWindowSoon(); } @@ -420,10 +435,12 @@ bool ChromeClientImpl::OpenJavaScriptPromptDelegate(LocalFrame* frame, return success; } bool ChromeClientImpl::TabsToLinks() { + DCHECK(web_view_); return web_view_->TabsToLinks(); } void ChromeClientImpl::InvalidateContainer() { + DCHECK(web_view_); web_view_->InvalidateContainer(); } @@ -482,17 +499,20 @@ const display::ScreenInfos& ChromeClientImpl::GetScreenInfos( void ChromeClientImpl::OverrideVisibleRectForMainFrame( LocalFrame& frame, IntRect* visible_rect) const { + DCHECK(web_view_); DCHECK(frame.IsMainFrame()); return web_view_->GetDevToolsEmulator()->OverrideVisibleRect( IntRect(frame.GetWidgetForLocalRoot()->ViewRect()).Size(), visible_rect); } float ChromeClientImpl::InputEventsScaleForEmulation() const { + DCHECK(web_view_); return web_view_->GetDevToolsEmulator()->InputEventsScaleForEmulation(); } void ChromeClientImpl::ContentsSizeChanged(LocalFrame* frame, const IntSize& size) const { + DCHECK(web_view_); web_view_->DidChangeContentsSize(); WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame); @@ -500,41 +520,50 @@ void ChromeClientImpl::ContentsSizeChanged(LocalFrame* frame, } bool ChromeClientImpl::DoubleTapToZoomEnabled() const { + DCHECK(web_view_); return web_view_->SettingsImpl()->DoubleTapToZoomEnabled(); } void ChromeClientImpl::EnablePreferredSizeChangedMode() { + DCHECK(web_view_); web_view_->EnablePreferredSizeChangedMode(); } void ChromeClientImpl::ZoomToFindInPageRect( const gfx::Rect& rect_in_root_frame) { + DCHECK(web_view_); web_view_->ZoomToFindInPageRect(rect_in_root_frame); } void ChromeClientImpl::PageScaleFactorChanged() const { + DCHECK(web_view_); web_view_->PageScaleFactorChanged(); } void ChromeClientImpl::MainFrameScrollOffsetChanged( LocalFrame& main_frame) const { + DCHECK(web_view_); DCHECK(main_frame.IsMainFrame()); web_view_->MainFrameScrollOffsetChanged(); } float ChromeClientImpl::ClampPageScaleFactorToLimits(float scale) const { + DCHECK(web_view_); return web_view_->ClampPageScaleFactorToLimits(scale); } void ChromeClientImpl::ResizeAfterLayout() const { + DCHECK(web_view_); web_view_->ResizeAfterLayout(); } void ChromeClientImpl::MainFrameLayoutUpdated() const { + DCHECK(web_view_); web_view_->MainFrameLayoutUpdated(); } void ChromeClientImpl::ShowMouseOverURL(const HitTestResult& result) { + DCHECK(web_view_); if (!web_view_->Client()) return; @@ -594,6 +623,7 @@ void ChromeClientImpl::UpdateTooltipFromKeyboard(LocalFrame& frame, void ChromeClientImpl::DispatchViewportPropertiesDidChange( const ViewportDescription& description) const { + DCHECK(web_view_); web_view_->UpdatePageDefinedViewportConstraints(description); } @@ -717,6 +747,7 @@ void ChromeClientImpl::SetCursor(const ui::Cursor& cursor, void ChromeClientImpl::SetCursorInternal(const ui::Cursor& cursor, LocalFrame* local_frame) { + DCHECK(web_view_); if (cursor_overridden_) return; @@ -765,6 +796,7 @@ void ChromeClientImpl::AutoscrollEnd(LocalFrame* local_frame) { } String ChromeClientImpl::AcceptLanguages() { + DCHECK(web_view_); return String::FromUTF8(web_view_->GetRendererPreferences().accept_languages); } @@ -804,10 +836,12 @@ void ChromeClientImpl::DetachCompositorAnimationTimeline( void ChromeClientImpl::EnterFullscreen(LocalFrame& frame, const FullscreenOptions* options, FullscreenRequestType request_type) { + DCHECK(web_view_); web_view_->EnterFullscreen(frame, options, request_type); } void ChromeClientImpl::ExitFullscreen(LocalFrame& frame) { + DCHECK(web_view_); web_view_->ExitFullscreen(frame); } @@ -816,12 +850,14 @@ void ChromeClientImpl::FullscreenElementChanged( Element* new_element, const FullscreenOptions* options, FullscreenRequestType request_type) { + DCHECK(web_view_); web_view_->FullscreenElementChanged(old_element, new_element, options, request_type); } void ChromeClientImpl::AnimateDoubleTapZoom(const gfx::Point& point, const gfx::Rect& rect) { + DCHECK(web_view_); web_view_->AnimateDoubleTapZoom(point, rect); } @@ -836,6 +872,7 @@ void ChromeClientImpl::UpdateLayerSelection( } bool ChromeClientImpl::HasOpenedPopup() const { + DCHECK(web_view_); return web_view_->HasOpenedPopup(); } @@ -850,20 +887,24 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, } PagePopup* ChromeClientImpl::OpenPagePopup(PagePopupClient* client) { + DCHECK(web_view_); return web_view_->OpenPagePopup(client); } void ChromeClientImpl::ClosePagePopup(PagePopup* popup) { + DCHECK(web_view_); web_view_->ClosePagePopup(popup); } DOMWindow* ChromeClientImpl::PagePopupWindowForTesting() const { + DCHECK(web_view_); return web_view_->PagePopupWindow(); } void ChromeClientImpl::SetBrowserControlsState(float top_height, float bottom_height, bool shrinks_layout) { + DCHECK(web_view_); DCHECK(web_view_->MainFrameWidget()); gfx::Size size = web_view_->MainFrameWidget()->Size(); if (shrinks_layout) @@ -875,6 +916,7 @@ void ChromeClientImpl::SetBrowserControlsState(float top_height, void ChromeClientImpl::SetBrowserControlsShownRatio(float top_ratio, float bottom_ratio) { + DCHECK(web_view_); web_view_->GetBrowserControls().SetShownRatio(top_ratio, bottom_ratio); } @@ -941,6 +983,7 @@ void ChromeClientImpl::SetEventListenerProperties( LocalFrame* frame, cc::EventListenerClass event_class, cc::EventListenerProperties properties) { + DCHECK(web_view_); // This method is only useful when compositing is enabled. if (!web_view_->does_composite()) return; @@ -983,6 +1026,7 @@ cc::EventListenerProperties ChromeClientImpl::EventListenerProperties( } void ChromeClientImpl::BeginLifecycleUpdates(LocalFrame& main_frame) { + DCHECK(web_view_); DCHECK(main_frame.IsMainFrame()); web_view_->StopDeferringMainFrameUpdate(); } @@ -1152,10 +1196,12 @@ void ChromeClientImpl::AjaxSucceeded(LocalFrame* frame) { } TransformationMatrix ChromeClientImpl::GetDeviceEmulationTransform() const { + DCHECK(web_view_); return web_view_->GetDeviceEmulationTransform(); } void ChromeClientImpl::DidUpdateBrowserControls() const { + DCHECK(web_view_); web_view_->DidUpdateBrowserControls(); } @@ -1179,6 +1225,7 @@ void ChromeClientImpl::NotifyPopupOpeningObservers() const { } FloatSize ChromeClientImpl::ElasticOverscroll() const { + DCHECK(web_view_); return web_view_->ElasticOverscroll(); } @@ -1195,6 +1242,7 @@ WebAutofillClient* ChromeClientImpl::AutofillClientFromFrame( void ChromeClientImpl::DidUpdateTextAutosizerPageInfo( const mojom::blink::TextAutosizerPageInfo& page_info) { + DCHECK(web_view_); web_view_->TextAutosizerPageInfoChanged(page_info); } @@ -1206,6 +1254,7 @@ void ChromeClientImpl::DocumentDetached(Document& document) { } double ChromeClientImpl::UserZoomFactor() const { + DCHECK(web_view_); return PageZoomLevelToZoomFactor(web_view_->ZoomLevel()); } |