| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 class WebSettingsImpl; | 95 class WebSettingsImpl; |
| 96 class WebViewScheduler; | 96 class WebViewScheduler; |
| 97 | 97 |
| 98 class WEB_EXPORT WebViewImpl final | 98 class WEB_EXPORT WebViewImpl final |
| 99 : NON_EXPORTED_BASE(public WebViewBase), | 99 : NON_EXPORTED_BASE(public WebViewBase), |
| 100 NON_EXPORTED_BASE(public WebGestureCurveTarget), | 100 NON_EXPORTED_BASE(public WebGestureCurveTarget), |
| 101 public PageWidgetEventHandler, | 101 public PageWidgetEventHandler, |
| 102 public WebScheduler::InterventionReporter, | 102 public WebScheduler::InterventionReporter, |
| 103 public WebViewScheduler::WebViewSchedulerSettings { | 103 public WebViewScheduler::WebViewSchedulerSettings { |
| 104 public: | 104 public: |
| 105 static WebViewImpl* Create(WebViewClient*, WebPageVisibilityState); | 105 static WebViewBase* Create(WebViewClient*, WebPageVisibilityState); |
| 106 | 106 |
| 107 // WebWidget methods: | 107 // WebWidget methods: |
| 108 void Close() override; | 108 void Close() override; |
| 109 WebSize Size() override; | 109 WebSize Size() override; |
| 110 void Resize(const WebSize&) override; | 110 void Resize(const WebSize&) override; |
| 111 void ResizeVisualViewport(const WebSize&) override; | 111 void ResizeVisualViewport(const WebSize&) override; |
| 112 void DidEnterFullscreen() override; | 112 void DidEnterFullscreen() override; |
| 113 void DidExitFullscreen() override; | 113 void DidExitFullscreen() override; |
| 114 | 114 |
| 115 void SetSuppressFrameRequestsWorkaroundFor704763Only(bool) override; | 115 void SetSuppressFrameRequestsWorkaroundFor704763Only(bool) override; |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 void InvalidateRect(const IntRect&) override; | 268 void InvalidateRect(const IntRect&) override; |
| 269 | 269 |
| 270 void SetBaseBackgroundColor(WebColor) override; | 270 void SetBaseBackgroundColor(WebColor) override; |
| 271 void SetBaseBackgroundColorOverride(WebColor) override; | 271 void SetBaseBackgroundColorOverride(WebColor) override; |
| 272 void ClearBaseBackgroundColorOverride() override; | 272 void ClearBaseBackgroundColorOverride() override; |
| 273 void SetBackgroundColorOverride(WebColor) override; | 273 void SetBackgroundColorOverride(WebColor) override; |
| 274 void ClearBackgroundColorOverride() override; | 274 void ClearBackgroundColorOverride() override; |
| 275 void SetZoomFactorOverride(float) override; | 275 void SetZoomFactorOverride(float) override; |
| 276 void SetCompositorDeviceScaleFactorOverride(float) override; | 276 void SetCompositorDeviceScaleFactorOverride(float) override; |
| 277 void SetDeviceEmulationTransform(const TransformationMatrix&) override; | 277 void SetDeviceEmulationTransform(const TransformationMatrix&) override; |
| 278 TransformationMatrix GetDeviceEmulationTransformForTesting() const; | 278 TransformationMatrix GetDeviceEmulationTransformForTesting() const override; |
| 279 | 279 |
| 280 Color BaseBackgroundColor() const override; | 280 Color BaseBackgroundColor() const override; |
| 281 bool BackgroundColorOverrideEnabled() const override { | 281 bool BackgroundColorOverrideEnabled() const override { |
| 282 return background_color_override_enabled_; | 282 return background_color_override_enabled_; |
| 283 } | 283 } |
| 284 WebColor BackgroundColorOverride() const override { | 284 WebColor BackgroundColorOverride() const override { |
| 285 return background_color_override_; | 285 return background_color_override_; |
| 286 } | 286 } |
| 287 | 287 |
| 288 Frame* FocusedCoreFrame() const override; | 288 Frame* FocusedCoreFrame() const override; |
| 289 | 289 |
| 290 // Returns the currently focused Element or null if no element has focus. | 290 // Returns the currently focused Element or null if no element has focus. |
| 291 Element* FocusedElement() const; | 291 Element* FocusedElement() const override; |
| 292 | 292 |
| 293 static WebViewImpl* FromPage(Page*); | 293 static WebViewBase* FromPage(Page*); |
| 294 | 294 |
| 295 WebViewClient* Client() override { return client_; } | 295 WebViewClient* Client() override { return client_; } |
| 296 | 296 |
| 297 WebSpellCheckClient* SpellCheckClient() override { | 297 WebSpellCheckClient* SpellCheckClient() override { |
| 298 return spell_check_client_; | 298 return spell_check_client_; |
| 299 } | 299 } |
| 300 | 300 |
| 301 // Returns the page object associated with this view. This may be null when | 301 // Returns the page object associated with this view. This may be null when |
| 302 // the page is shutting down, but will be valid at all other times. | 302 // the page is shutting down, but will be valid at all other times. |
| 303 Page* GetPage() const override { return page_.Get(); } | 303 Page* GetPage() const override { return page_.Get(); } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 PagePopup* OpenPagePopup(PagePopupClient*) override; | 373 PagePopup* OpenPagePopup(PagePopupClient*) override; |
| 374 void ClosePagePopup(PagePopup*) override; | 374 void ClosePagePopup(PagePopup*) override; |
| 375 void CleanupPagePopup() override; | 375 void CleanupPagePopup() override; |
| 376 LocalDOMWindow* PagePopupWindow() const override; | 376 LocalDOMWindow* PagePopupWindow() const override; |
| 377 | 377 |
| 378 // Returns the input event we're currently processing. This is used in some | 378 // Returns the input event we're currently processing. This is used in some |
| 379 // cases where the WebCore DOM event doesn't have the information we need. | 379 // cases where the WebCore DOM event doesn't have the information we need. |
| 380 static const WebInputEvent* CurrentInputEvent() { | 380 static const WebInputEvent* CurrentInputEvent() { |
| 381 return current_input_event_; | 381 return current_input_event_; |
| 382 } | 382 } |
| 383 static void SetCurrentInputEventForTest(const WebInputEvent* event) { |
| 384 current_input_event_ = event; |
| 385 } |
| 383 | 386 |
| 384 GraphicsLayer* RootGraphicsLayer() override; | 387 GraphicsLayer* RootGraphicsLayer() override; |
| 385 void RegisterViewportLayersWithCompositor() override; | 388 void RegisterViewportLayersWithCompositor() override; |
| 386 PaintLayerCompositor* Compositor() const override; | 389 PaintLayerCompositor* Compositor() const override; |
| 387 CompositorAnimationTimeline* LinkHighlightsTimeline() const override { | 390 CompositorAnimationTimeline* LinkHighlightsTimeline() const override { |
| 388 return link_highlights_timeline_.get(); | 391 return link_highlights_timeline_.get(); |
| 389 } | 392 } |
| 390 | 393 |
| 391 WebViewScheduler* Scheduler() const override; | 394 WebViewScheduler* Scheduler() const override; |
| 392 void SetVisibilityState(WebPageVisibilityState, bool) override; | 395 void SetVisibilityState(WebPageVisibilityState, bool) override; |
| 393 | 396 |
| 394 bool HasOpenedPopup() const override { return page_popup_.Get(); } | 397 bool HasOpenedPopup() const override { return page_popup_.Get(); } |
| 395 | 398 |
| 396 // Called by a full frame plugin inside this view to inform it that its | 399 // Called by a full frame plugin inside this view to inform it that its |
| 397 // zoom level has been updated. The plugin should only call this function | 400 // zoom level has been updated. The plugin should only call this function |
| 398 // if the zoom change was triggered by the browser, it's only needed in case | 401 // if the zoom change was triggered by the browser, it's only needed in case |
| 399 // a plugin can update its own zoom, say because of its own UI. | 402 // a plugin can update its own zoom, say because of its own UI. |
| 400 void FullFramePluginZoomLevelChanged(double zoom_level); | 403 void FullFramePluginZoomLevelChanged(double zoom_level); |
| 401 | 404 |
| 402 void ComputeScaleAndScrollForBlockRect( | 405 void ComputeScaleAndScrollForBlockRect( |
| 403 const WebPoint& hit_point, | 406 const WebPoint& hit_point, |
| 404 const WebRect& block_rect, | 407 const WebRect& block_rect, |
| 405 float padding, | 408 float padding, |
| 406 float default_scale_when_already_legible, | 409 float default_scale_when_already_legible, |
| 407 float& scale, | 410 float& scale, |
| 408 WebPoint& scroll); | 411 WebPoint& scroll) override; |
| 409 Node* BestTapNode(const GestureEventWithHitTestResults& targeted_tap_event); | 412 Node* BestTapNode( |
| 413 const GestureEventWithHitTestResults& targeted_tap_event) override; |
| 410 void EnableTapHighlightAtPoint( | 414 void EnableTapHighlightAtPoint( |
| 411 const GestureEventWithHitTestResults& targeted_tap_event); | 415 const GestureEventWithHitTestResults& targeted_tap_event) override; |
| 412 void EnableTapHighlights(HeapVector<Member<Node>>&); | 416 void EnableTapHighlights(HeapVector<Member<Node>>&) override; |
| 413 void ComputeScaleAndScrollForFocusedNode(Node* focused_node, | 417 void ComputeScaleAndScrollForFocusedNode(Node* focused_node, |
| 414 bool zoom_in_to_legible_scale, | 418 bool zoom_in_to_legible_scale, |
| 415 float& scale, | 419 float& scale, |
| 416 IntPoint& scroll, | 420 IntPoint& scroll, |
| 417 bool& need_animation); | 421 bool& need_animation) override; |
| 418 | 422 |
| 419 void AnimateDoubleTapZoom(const IntPoint&); | 423 void AnimateDoubleTapZoom(const IntPoint&) override; |
| 420 | 424 |
| 421 void ResolveTapDisambiguation(double timestamp_seconds, | 425 void ResolveTapDisambiguation(double timestamp_seconds, |
| 422 WebPoint tap_viewport_offset, | 426 WebPoint tap_viewport_offset, |
| 423 bool is_long_press) override; | 427 bool is_long_press) override; |
| 424 | 428 |
| 425 void EnableFakePageScaleAnimationForTesting(bool); | 429 void EnableFakePageScaleAnimationForTesting(bool) override; |
| 426 bool FakeDoubleTapAnimationPendingForTesting() const { | 430 bool FakeDoubleTapAnimationPendingForTesting() const override { |
| 427 return double_tap_zoom_pending_; | 431 return double_tap_zoom_pending_; |
| 428 } | 432 } |
| 429 IntPoint FakePageScaleAnimationTargetPositionForTesting() const { | 433 IntPoint FakePageScaleAnimationTargetPositionForTesting() const override { |
| 430 return fake_page_scale_animation_target_position_; | 434 return fake_page_scale_animation_target_position_; |
| 431 } | 435 } |
| 432 float FakePageScaleAnimationPageScaleForTesting() const { | 436 float FakePageScaleAnimationPageScaleForTesting() const override { |
| 433 return fake_page_scale_animation_page_scale_factor_; | 437 return fake_page_scale_animation_page_scale_factor_; |
| 434 } | 438 } |
| 435 bool FakePageScaleAnimationUseAnchorForTesting() const { | 439 bool FakePageScaleAnimationUseAnchorForTesting() const override { |
| 436 return fake_page_scale_animation_use_anchor_; | 440 return fake_page_scale_animation_use_anchor_; |
| 437 } | 441 } |
| 438 | 442 |
| 439 void EnterFullscreen(LocalFrame&) override; | 443 void EnterFullscreen(LocalFrame&) override; |
| 440 void ExitFullscreen(LocalFrame&) override; | 444 void ExitFullscreen(LocalFrame&) override; |
| 441 void FullscreenElementChanged(Element*, Element*) override; | 445 void FullscreenElementChanged(Element*, Element*) override; |
| 442 | 446 |
| 443 // Exposed for the purpose of overriding device metrics. | 447 // Exposed for the purpose of overriding device metrics. |
| 444 void SendResizeEventAndRepaint(); | 448 void SendResizeEventAndRepaint(); |
| 445 | 449 |
| 446 // Exposed for testing purposes. | 450 // Exposed for testing purposes. |
| 447 bool HasHorizontalScrollbar(); | 451 bool HasHorizontalScrollbar() override; |
| 448 bool HasVerticalScrollbar(); | 452 bool HasVerticalScrollbar() override; |
| 449 | 453 |
| 450 // Exposed for tests. | 454 // Exposed for tests. |
| 451 unsigned NumLinkHighlights() { return link_highlights_.size(); } | 455 unsigned NumLinkHighlights() override { return link_highlights_.size(); } |
| 452 LinkHighlightImpl* GetLinkHighlight(int i) { | 456 LinkHighlightImpl* GetLinkHighlight(int i) override { |
| 453 return link_highlights_[i].get(); | 457 return link_highlights_[i].get(); |
| 454 } | 458 } |
| 455 | 459 |
| 456 WebSettingsImpl* SettingsImpl() override; | 460 WebSettingsImpl* SettingsImpl() override; |
| 457 | 461 |
| 458 // Returns the bounding box of the block type node touched by the WebPoint. | 462 // Returns the bounding box of the block type node touched by the WebPoint. |
| 459 WebRect ComputeBlockBound(const WebPoint&, bool ignore_clipping); | 463 WebRect ComputeBlockBound(const WebPoint&, bool ignore_clipping) override; |
| 460 | 464 |
| 461 WebLayerTreeView* LayerTreeView() const override { return layer_tree_view_; } | 465 WebLayerTreeView* LayerTreeView() const override { return layer_tree_view_; } |
| 462 CompositorAnimationHost* AnimationHost() const override { | 466 CompositorAnimationHost* AnimationHost() const override { |
| 463 return animation_host_.get(); | 467 return animation_host_.get(); |
| 464 } | 468 } |
| 465 | 469 |
| 466 bool MatchesHeuristicsForGpuRasterizationForTesting() const { | 470 bool MatchesHeuristicsForGpuRasterizationForTesting() const override { |
| 467 return matches_heuristics_for_gpu_rasterization_; | 471 return matches_heuristics_for_gpu_rasterization_; |
| 468 } | 472 } |
| 469 | 473 |
| 470 void UpdateBrowserControlsState(WebBrowserControlsState constraint, | 474 void UpdateBrowserControlsState(WebBrowserControlsState constraint, |
| 471 WebBrowserControlsState current, | 475 WebBrowserControlsState current, |
| 472 bool animate) override; | 476 bool animate) override; |
| 473 | 477 |
| 474 BrowserControls& GetBrowserControls(); | 478 BrowserControls& GetBrowserControls() override; |
| 475 // Called anytime browser controls layout height or content offset have | 479 // Called anytime browser controls layout height or content offset have |
| 476 // changed. | 480 // changed. |
| 477 void DidUpdateBrowserControls() override; | 481 void DidUpdateBrowserControls() override; |
| 478 | 482 |
| 479 void ForceNextWebGLContextCreationToFail() override; | 483 void ForceNextWebGLContextCreationToFail() override; |
| 480 void ForceNextDrawingBufferCreationToFail() override; | 484 void ForceNextDrawingBufferCreationToFail() override; |
| 481 | 485 |
| 482 CompositorWorkerProxyClient* CreateCompositorWorkerProxyClient() override; | 486 CompositorWorkerProxyClient* CreateCompositorWorkerProxyClient() override; |
| 483 AnimationWorkletProxyClient* CreateAnimationWorkletProxyClient() override; | 487 AnimationWorkletProxyClient* CreateAnimationWorkletProxyClient() override; |
| 484 | 488 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 | 536 |
| 533 // TODO(lfg): Remove once WebViewFrameWidget is deleted. | 537 // TODO(lfg): Remove once WebViewFrameWidget is deleted. |
| 534 void ScheduleAnimationForWidget() override; | 538 void ScheduleAnimationForWidget() override; |
| 535 bool GetCompositionCharacterBounds(WebVector<WebRect>&) override; | 539 bool GetCompositionCharacterBounds(WebVector<WebRect>&) override; |
| 536 | 540 |
| 537 void UpdateBaseBackgroundColor(); | 541 void UpdateBaseBackgroundColor(); |
| 538 | 542 |
| 539 friend class WebView; // So WebView::Create can call our constructor | 543 friend class WebView; // So WebView::Create can call our constructor |
| 540 friend class WebViewFrameWidget; | 544 friend class WebViewFrameWidget; |
| 541 friend class WTF::RefCounted<WebViewImpl>; | 545 friend class WTF::RefCounted<WebViewImpl>; |
| 542 friend void SetCurrentInputEventForTest(const WebInputEvent*); | |
| 543 | 546 |
| 544 explicit WebViewImpl(WebViewClient*, WebPageVisibilityState); | 547 explicit WebViewImpl(WebViewClient*, WebPageVisibilityState); |
| 545 ~WebViewImpl() override; | 548 ~WebViewImpl() override; |
| 546 | 549 |
| 547 void HideSelectPopup(); | 550 void HideSelectPopup(); |
| 548 | 551 |
| 549 HitTestResult HitTestResultForRootFramePos(const IntPoint&); | 552 HitTestResult HitTestResultForRootFramePos(const IntPoint&); |
| 550 HitTestResult HitTestResultForViewportPos(const IntPoint&); | 553 HitTestResult HitTestResultForViewportPos(const IntPoint&); |
| 551 | 554 |
| 552 void ConfigureAutoResizeMode(); | 555 void ConfigureAutoResizeMode(); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 746 Persistent<ResizeViewportAnchor> resize_viewport_anchor_; | 749 Persistent<ResizeViewportAnchor> resize_viewport_anchor_; |
| 747 }; | 750 }; |
| 748 | 751 |
| 749 // We have no ways to check if the specified WebView is an instance of | 752 // We have no ways to check if the specified WebView is an instance of |
| 750 // WebViewImpl because WebViewImpl is the only implementation of WebView. | 753 // WebViewImpl because WebViewImpl is the only implementation of WebView. |
| 751 DEFINE_TYPE_CASTS(WebViewImpl, WebView, webView, true, true); | 754 DEFINE_TYPE_CASTS(WebViewImpl, WebView, webView, true, true); |
| 752 | 755 |
| 753 } // namespace blink | 756 } // namespace blink |
| 754 | 757 |
| 755 #endif | 758 #endif |
| OLD | NEW |