| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" |
| 6 | 6 |
| 7 #import <objc/runtime.h> | 7 #import <objc/runtime.h> |
| 8 #include <OpenGL/gl.h> | 8 #include <OpenGL/gl.h> |
| 9 #include <QuartzCore/QuartzCore.h> | 9 #include <QuartzCore/QuartzCore.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 void RenderWidgetHostViewMac::DelegatedFrameHostOnLostCompositorResources() { | 475 void RenderWidgetHostViewMac::DelegatedFrameHostOnLostCompositorResources() { |
| 476 render_widget_host_->ScheduleComposite(); | 476 render_widget_host_->ScheduleComposite(); |
| 477 } | 477 } |
| 478 | 478 |
| 479 void RenderWidgetHostViewMac::DelegatedFrameHostUpdateVSyncParameters( | 479 void RenderWidgetHostViewMac::DelegatedFrameHostUpdateVSyncParameters( |
| 480 const base::TimeTicks& timebase, | 480 const base::TimeTicks& timebase, |
| 481 const base::TimeDelta& interval) { | 481 const base::TimeDelta& interval) { |
| 482 render_widget_host_->UpdateVSyncParameters(timebase, interval); | 482 render_widget_host_->UpdateVSyncParameters(timebase, interval); |
| 483 } | 483 } |
| 484 | 484 |
| 485 void RenderWidgetHostViewMac::SetBeginFrameSource( |
| 486 cc::BeginFrameSource* source) { |
| 487 if (begin_frame_source_ && needs_begin_frames_) |
| 488 begin_frame_source_->RemoveObserver(this); |
| 489 begin_frame_source_ = source; |
| 490 if (begin_frame_source_ && needs_begin_frames_) |
| 491 begin_frame_source_->AddObserver(this); |
| 492 } |
| 493 |
| 494 //////////////////////////////////////////////////////////////////////////////// |
| 495 // cc::BeginFrameSourceBase, public: |
| 496 |
| 497 void RenderWidgetHostViewMac::OnSetNeedsBeginFrames(bool needs_begin_frames) { |
| 498 if (needs_begin_frames_ == needs_begin_frames) |
| 499 return; |
| 500 |
| 501 needs_begin_frames_ = needs_begin_frames; |
| 502 if (begin_frame_source_) { |
| 503 if (needs_begin_frames_) |
| 504 begin_frame_source_->AddObserver(this); |
| 505 else |
| 506 begin_frame_source_->RemoveObserver(this); |
| 507 } |
| 508 } |
| 509 |
| 510 bool RenderWidgetHostViewMac::OnBeginFrameDerivedImpl( |
| 511 const cc::BeginFrameArgs& args) { |
| 512 delegated_frame_host_->SetVSyncParameters(args.frame_time, args.interval); |
| 513 render_widget_host_->Send( |
| 514 new ViewMsg_BeginFrame(render_widget_host_->GetRoutingID(), args)); |
| 515 return true; |
| 516 } |
| 517 |
| 518 void RenderWidgetHostViewMac::OnBeginFrameSourcePausedChanged( |
| 519 bool paused) { |
| 520 // Nothing to do here. |
| 521 } |
| 522 |
| 485 //////////////////////////////////////////////////////////////////////////////// | 523 //////////////////////////////////////////////////////////////////////////////// |
| 486 // AcceleratedWidgetMacNSView, public: | 524 // AcceleratedWidgetMacNSView, public: |
| 487 | 525 |
| 488 NSView* RenderWidgetHostViewMac::AcceleratedWidgetGetNSView() const { | 526 NSView* RenderWidgetHostViewMac::AcceleratedWidgetGetNSView() const { |
| 489 return cocoa_view_; | 527 return cocoa_view_; |
| 490 } | 528 } |
| 491 | 529 |
| 492 void RenderWidgetHostViewMac::AcceleratedWidgetGetVSyncParameters( | 530 void RenderWidgetHostViewMac::AcceleratedWidgetGetVSyncParameters( |
| 493 base::TimeTicks* timebase, base::TimeDelta* interval) const { | 531 base::TimeTicks* timebase, base::TimeDelta* interval) const { |
| 494 if (display_link_ && | 532 if (display_link_ && |
| (...skipping 25 matching lines...) Expand all Loading... |
| 520 : render_widget_host_(RenderWidgetHostImpl::From(widget)), | 558 : render_widget_host_(RenderWidgetHostImpl::From(widget)), |
| 521 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), | 559 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
| 522 can_compose_inline_(true), | 560 can_compose_inline_(true), |
| 523 browser_compositor_state_(BrowserCompositorDestroyed), | 561 browser_compositor_state_(BrowserCompositorDestroyed), |
| 524 browser_compositor_placeholder_(new BrowserCompositorMacPlaceholder), | 562 browser_compositor_placeholder_(new BrowserCompositorMacPlaceholder), |
| 525 page_at_minimum_scale_(true), | 563 page_at_minimum_scale_(true), |
| 526 is_loading_(false), | 564 is_loading_(false), |
| 527 allow_pause_for_resize_or_repaint_(true), | 565 allow_pause_for_resize_or_repaint_(true), |
| 528 is_guest_view_hack_(is_guest_view_hack), | 566 is_guest_view_hack_(is_guest_view_hack), |
| 529 wheel_gestures_enabled_(UseGestureBasedWheelScrolling()), | 567 wheel_gestures_enabled_(UseGestureBasedWheelScrolling()), |
| 530 fullscreen_parent_host_view_(NULL), | 568 fullscreen_parent_host_view_(nullptr), |
| 569 begin_frame_source_(nullptr), |
| 570 needs_begin_frames_(false), |
| 531 weak_factory_(this) { | 571 weak_factory_(this) { |
| 532 // |cocoa_view_| owns us and we will be deleted when |cocoa_view_| | 572 // |cocoa_view_| owns us and we will be deleted when |cocoa_view_| |
| 533 // goes away. Since we autorelease it, our caller must put | 573 // goes away. Since we autorelease it, our caller must put |
| 534 // |GetNativeView()| into the view hierarchy right after calling us. | 574 // |GetNativeView()| into the view hierarchy right after calling us. |
| 535 cocoa_view_ = [[[RenderWidgetHostViewCocoa alloc] | 575 cocoa_view_ = [[[RenderWidgetHostViewCocoa alloc] |
| 536 initWithRenderWidgetHostViewMac:this] autorelease]; | 576 initWithRenderWidgetHostViewMac:this] autorelease]; |
| 537 | 577 |
| 538 // Paint this view host with |background_color_| when there is no content | 578 // Paint this view host with |background_color_| when there is no content |
| 539 // ready to draw. | 579 // ready to draw. |
| 540 background_layer_.reset([[CALayer alloc] init]); | 580 background_layer_.reset([[CALayer alloc] init]); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 // This should only be reached if |render_widget_host_| is hidden, destroyed, | 720 // This should only be reached if |render_widget_host_| is hidden, destroyed, |
| 681 // or in the process of being destroyed. | 721 // or in the process of being destroyed. |
| 682 DestroyBrowserCompositorView(); | 722 DestroyBrowserCompositorView(); |
| 683 } | 723 } |
| 684 | 724 |
| 685 bool RenderWidgetHostViewMac::OnMessageReceived(const IPC::Message& message) { | 725 bool RenderWidgetHostViewMac::OnMessageReceived(const IPC::Message& message) { |
| 686 bool handled = true; | 726 bool handled = true; |
| 687 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewMac, message) | 727 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewMac, message) |
| 688 IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedTextCompleted, | 728 IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedTextCompleted, |
| 689 OnGetRenderedTextCompleted) | 729 OnGetRenderedTextCompleted) |
| 730 IPC_MESSAGE_HANDLER(ViewHostMsg_SetNeedsBeginFrames, |
| 731 OnSetNeedsBeginFrames) |
| 690 IPC_MESSAGE_UNHANDLED(handled = false) | 732 IPC_MESSAGE_UNHANDLED(handled = false) |
| 691 IPC_END_MESSAGE_MAP() | 733 IPC_END_MESSAGE_MAP() |
| 692 return handled; | 734 return handled; |
| 693 } | 735 } |
| 694 | 736 |
| 695 void RenderWidgetHostViewMac::InitAsChild( | 737 void RenderWidgetHostViewMac::InitAsChild( |
| 696 gfx::NativeView parent_view) { | 738 gfx::NativeView parent_view) { |
| 697 } | 739 } |
| 698 | 740 |
| 699 void RenderWidgetHostViewMac::InitAsPopup( | 741 void RenderWidgetHostViewMac::InitAsPopup( |
| (...skipping 2697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3397 | 3439 |
| 3398 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding | 3440 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding |
| 3399 // regions that are not draggable. (See ControlRegionView in | 3441 // regions that are not draggable. (See ControlRegionView in |
| 3400 // native_app_window_cocoa.mm). This requires the render host view to be | 3442 // native_app_window_cocoa.mm). This requires the render host view to be |
| 3401 // draggable by default. | 3443 // draggable by default. |
| 3402 - (BOOL)mouseDownCanMoveWindow { | 3444 - (BOOL)mouseDownCanMoveWindow { |
| 3403 return YES; | 3445 return YES; |
| 3404 } | 3446 } |
| 3405 | 3447 |
| 3406 @end | 3448 @end |
| OLD | NEW |