summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-16 08:10:02 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-16 08:10:02 +0000
commitf04680cdce9b6969d01823e7da530739b18eb05c (patch)
tree0550e17f5feb58d148bc56a475aee52724d5d4bd /content/browser/renderer_host
parentfb6e65d7c455f351f220805f25478890ae3464f7 (diff)
downloadchromium_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.h7
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.mm12
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_);