Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 388803003: [Mac] Replace SetOverlayView with AllowOtherViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased, fixed comments Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 10
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 // RenderWidgetHostViewMac, public: 481 // RenderWidgetHostViewMac, public:
482 482
483 RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget) 483 RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget)
484 : render_widget_host_(RenderWidgetHostImpl::From(widget)), 484 : render_widget_host_(RenderWidgetHostImpl::From(widget)),
485 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), 485 text_input_type_(ui::TEXT_INPUT_TYPE_NONE),
486 can_compose_inline_(true), 486 can_compose_inline_(true),
487 browser_compositor_view_placeholder_( 487 browser_compositor_view_placeholder_(
488 new BrowserCompositorViewPlaceholderMac), 488 new BrowserCompositorViewPlaceholderMac),
489 backing_store_scale_factor_(1), 489 backing_store_scale_factor_(1),
490 is_loading_(false), 490 is_loading_(false),
491 allow_pause_for_resize_or_repaint_(true),
491 weak_factory_(this), 492 weak_factory_(this),
492 fullscreen_parent_host_view_(NULL), 493 fullscreen_parent_host_view_(NULL),
493 overlay_view_weak_factory_(this),
494 software_frame_weak_ptr_factory_(this) { 494 software_frame_weak_ptr_factory_(this) {
495 software_frame_manager_.reset(new SoftwareFrameManager( 495 software_frame_manager_.reset(new SoftwareFrameManager(
496 software_frame_weak_ptr_factory_.GetWeakPtr())); 496 software_frame_weak_ptr_factory_.GetWeakPtr()));
497 // |cocoa_view_| owns us and we will be deleted when |cocoa_view_| 497 // |cocoa_view_| owns us and we will be deleted when |cocoa_view_|
498 // goes away. Since we autorelease it, our caller must put 498 // goes away. Since we autorelease it, our caller must put
499 // |GetNativeView()| into the view hierarchy right after calling us. 499 // |GetNativeView()| into the view hierarchy right after calling us.
500 cocoa_view_ = [[[RenderWidgetHostViewCocoa alloc] 500 cocoa_view_ = [[[RenderWidgetHostViewCocoa alloc]
501 initWithRenderWidgetHostViewMac:this] autorelease]; 501 initWithRenderWidgetHostViewMac:this] autorelease];
502 502
503 background_layer_.reset([[CALayer alloc] init]); 503 background_layer_.reset([[CALayer alloc] init]);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 536
537 void RenderWidgetHostViewMac::SetDelegate( 537 void RenderWidgetHostViewMac::SetDelegate(
538 NSObject<RenderWidgetHostViewMacDelegate>* delegate) { 538 NSObject<RenderWidgetHostViewMacDelegate>* delegate) {
539 [cocoa_view_ setResponderDelegate:delegate]; 539 [cocoa_view_ setResponderDelegate:delegate];
540 } 540 }
541 541
542 void RenderWidgetHostViewMac::SetAllowOverlappingViews(bool overlapping) { 542 void RenderWidgetHostViewMac::SetAllowOverlappingViews(bool overlapping) {
543 // TODO(ccameron): Remove callers of this function. 543 // TODO(ccameron): Remove callers of this function.
544 } 544 }
545 545
546 void RenderWidgetHostViewMac::SetAllowPauseForResizeOrRepaint(bool allow) {
547 allow_pause_for_resize_or_repaint_ = allow;
548 }
549
546 /////////////////////////////////////////////////////////////////////////////// 550 ///////////////////////////////////////////////////////////////////////////////
547 // RenderWidgetHostViewMac, RenderWidgetHostView implementation: 551 // RenderWidgetHostViewMac, RenderWidgetHostView implementation:
548 552
549 bool RenderWidgetHostViewMac::EnsureCompositedIOSurface() { 553 bool RenderWidgetHostViewMac::EnsureCompositedIOSurface() {
550 // If the context or the IOSurface's context has had an error, re-build 554 // If the context or the IOSurface's context has had an error, re-build
551 // everything from scratch. 555 // everything from scratch.
552 if (compositing_iosurface_context_ && 556 if (compositing_iosurface_context_ &&
553 compositing_iosurface_context_->HasBeenPoisoned()) { 557 compositing_iosurface_context_->HasBeenPoisoned()) {
554 LOG(ERROR) << "Failing EnsureCompositedIOSurface because " 558 LOG(ERROR) << "Failing EnsureCompositedIOSurface because "
555 << "context was poisoned"; 559 << "context was poisoned";
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 // Request that a new frame be generated and dirty the view. 1563 // Request that a new frame be generated and dirty the view.
1560 if (render_widget_host_) 1564 if (render_widget_host_)
1561 render_widget_host_->ScheduleComposite(); 1565 render_widget_host_->ScheduleComposite();
1562 [cocoa_view_ setNeedsDisplay:YES]; 1566 [cocoa_view_ setNeedsDisplay:YES];
1563 1567
1564 // TODO(ccameron): It may be a good idea to request that the renderer recreate 1568 // TODO(ccameron): It may be a good idea to request that the renderer recreate
1565 // its GL context as well, and fall back to software if this happens 1569 // its GL context as well, and fall back to software if this happens
1566 // repeatedly. 1570 // repeatedly.
1567 } 1571 }
1568 1572
1569 void RenderWidgetHostViewMac::SetOverlayView(
1570 RenderWidgetHostViewMac* overlay, const gfx::Point& offset) {
1571 if (overlay_view_)
1572 overlay_view_->underlay_view_.reset();
1573
1574 overlay_view_ = overlay->overlay_view_weak_factory_.GetWeakPtr();
1575 overlay_view_->underlay_view_ = overlay_view_weak_factory_.GetWeakPtr();
1576 }
1577
1578 void RenderWidgetHostViewMac::RemoveOverlayView() {
1579 if (overlay_view_) {
1580 overlay_view_->underlay_view_.reset();
1581 overlay_view_.reset();
1582 }
1583 }
1584
1585 bool RenderWidgetHostViewMac::GetLineBreakIndex( 1573 bool RenderWidgetHostViewMac::GetLineBreakIndex(
1586 const std::vector<gfx::Rect>& bounds, 1574 const std::vector<gfx::Rect>& bounds,
1587 const gfx::Range& range, 1575 const gfx::Range& range,
1588 size_t* line_break_point) { 1576 size_t* line_break_point) {
1589 DCHECK(line_break_point); 1577 DCHECK(line_break_point);
1590 if (range.start() >= bounds.size() || range.is_reversed() || range.is_empty()) 1578 if (range.start() >= bounds.size() || range.is_reversed() || range.is_empty())
1591 return false; 1579 return false;
1592 1580
1593 // We can't check line breaking completely from only rectangle array. Thus we 1581 // We can't check line breaking completely from only rectangle array. Thus we
1594 // assume the line breaking as the next character's y offset is larger than 1582 // assume the line breaking as the next character's y offset is larger than
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
2187 2175
2188 void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() { 2176 void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() {
2189 if (!render_widget_host_ || render_widget_host_->is_hidden()) 2177 if (!render_widget_host_ || render_widget_host_->is_hidden())
2190 return; 2178 return;
2191 2179
2192 // Synchronized resizing does not yet work with browser compositor. 2180 // Synchronized resizing does not yet work with browser compositor.
2193 // http://crbug.com/388005 2181 // http://crbug.com/388005
2194 if (delegated_frame_host_) 2182 if (delegated_frame_host_)
2195 return; 2183 return;
2196 2184
2197 // Pausing for the overlay/underlay view prevents the other one from receiving 2185 // Pausing for one view prevents others from receiving frames.
2198 // frames. This may lead to large delays, causing overlaps. 2186 // This may lead to large delays, causing overlaps. See crbug.com/352020.
2199 // See crbug.com/352020. 2187 if (!allow_pause_for_resize_or_repaint_)
2200 if (underlay_view_ || overlay_view_)
2201 return; 2188 return;
2202 2189
2203 // Ensure that all frames are acked before waiting for a frame to come in. 2190 // Ensure that all frames are acked before waiting for a frame to come in.
2204 // Note that we will draw a frame at the end of this function, so it is safe 2191 // Note that we will draw a frame at the end of this function, so it is safe
2205 // to ack a never-drawn frame here. 2192 // to ack a never-drawn frame here.
2206 SendPendingSwapAck(); 2193 SendPendingSwapAck();
2207 2194
2208 // Wait for a frame of the right size to come in. 2195 // Wait for a frame of the right size to come in.
2209 render_widget_host_->PauseForPendingResizeOrRepaints(); 2196 render_widget_host_->PauseForPendingResizeOrRepaints();
2210 2197
(...skipping 1743 matching lines...) Expand 10 before | Expand all | Expand 10 after
3954 3941
3955 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding 3942 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding
3956 // regions that are not draggable. (See ControlRegionView in 3943 // regions that are not draggable. (See ControlRegionView in
3957 // native_app_window_cocoa.mm). This requires the render host view to be 3944 // native_app_window_cocoa.mm). This requires the render host view to be
3958 // draggable by default. 3945 // draggable by default.
3959 - (BOOL)mouseDownCanMoveWindow { 3946 - (BOOL)mouseDownCanMoveWindow {
3960 return YES; 3947 return YES;
3961 } 3948 }
3962 3949
3963 @end 3950 @end
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.h ('k') | content/browser/web_contents/web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698