diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-16 08:10:02 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-16 08:10:02 +0000 |
commit | f04680cdce9b6969d01823e7da530739b18eb05c (patch) | |
tree | 0550e17f5feb58d148bc56a475aee52724d5d4bd /content/browser/renderer_host | |
parent | fb6e65d7c455f351f220805f25478890ae3464f7 (diff) | |
download | chromium_src-f04680cdce9b6969d01823e7da530739b18eb05c.zip chromium_src-f04680cdce9b6969d01823e7da530739b18eb05c.tar.gz chromium_src-f04680cdce9b6969d01823e7da530739b18eb05c.tar.bz2 |
Revert 110262 - Have ExtensionHost use TabContents instead of RenderViewHost. Try #2.
The first landing broke popups on the Mac. Specifically, the auto-resizing of TabContents interfered with how ExtensionViewMac tried to resize itself, causing an infinite feedback loop. Also, we need to defer updating the size of the container until the ExtensionHost is loaded so that we don't display an empty window.
BUG=84146
TEST=extensions still work
Review URL: http://codereview.chromium.org/8498022
TBR=mpcomplete@chromium.org
Review URL: http://codereview.chromium.org/8520036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110270 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host')
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_mac.h | 7 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_mac.mm | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h index 6a1a130..f2c01fd 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.h +++ b/content/browser/renderer_host/render_widget_host_view_mac.h @@ -130,6 +130,13 @@ class RenderWidgetHostViewMacEditCommandHelper; - (void)setTakesFocusOnlyOnMouseDown:(BOOL)b; - (void)setCloseOnDeactivate:(BOOL)b; - (void)setToolTipAtMousePoint:(NSString *)string; +// Set frame, then notify the RenderWidgetHost that the frame has been changed, +// but do it in a separate task, using |performSelector:withObject:afterDelay:|. +// This stops the flickering issue in http://crbug.com/31970 +- (void)setFrameWithDeferredUpdate:(NSRect)frame; +// Notify the RenderWidgetHost that the frame was updated so it can resize +// its contents. +- (void)renderWidgetHostWasResized; // Cancel ongoing composition (abandon the marked text). - (void)cancelComposition; // Confirm ongoing composition. diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index a042d7b..f559281 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -1670,6 +1670,18 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) { renderWidgetHostView_->render_widget_host_->WasResized(); } +- (void)setFrameWithDeferredUpdate:(NSRect)frameRect { + [super setFrame:frameRect]; + [self performSelector:@selector(renderWidgetHostWasResized) + withObject:nil + afterDelay:0]; +} + +- (void)renderWidgetHostWasResized { + if (renderWidgetHostView_->render_widget_host_) + renderWidgetHostView_->render_widget_host_->WasResized(); +} + - (void)callSetNeedsDisplayInRect { DCHECK([NSThread isMainThread]); DCHECK(renderWidgetHostView_->call_set_needs_display_in_rect_pending_); |