Index: content/browser/renderer_host/render_widget_host_view_mac.mm |
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 bb24a63ae1ca6c7aa9190df4cf459abe1ff7541f..55ed9007f4dd04842d2f9a7af6ee344160f4ab21 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -495,10 +495,14 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget) |
[cocoa_view_ setLayer:background_layer_]; |
[cocoa_view_ setWantsLayer:YES]; |
+ gfx::Screen::GetScreenFor(cocoa_view_)->AddObserver(this); |
+ |
render_widget_host_->SetView(this); |
} |
RenderWidgetHostViewMac::~RenderWidgetHostViewMac() { |
+ gfx::Screen::GetScreenFor(cocoa_view_)->RemoveObserver(this); |
+ |
// This is being called from |cocoa_view_|'s destructor, so invalidate the |
// pointer. |
cocoa_view_ = nil; |
@@ -2298,6 +2302,24 @@ void RenderWidgetHostViewMac::AcceleratedLayerDidDrawFrame(bool succeeded) { |
GotAcceleratedCompositingError(); |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+// gfx::DisplayObserver, public: |
+ |
+void RenderWidgetHostViewMac::OnDisplayAdded(const gfx::Display& display) { |
+} |
+ |
+void RenderWidgetHostViewMac::OnDisplayRemoved(const gfx::Display& display) { |
+} |
+ |
+void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
+ const gfx::Display& display, uint32_t metrics) { |
+ gfx::Screen* screen = gfx::Screen::GetScreenFor(cocoa_view_); |
+ if (display.id() != screen->GetDisplayNearestWindow(cocoa_view_).id()) |
+ return; |
+ |
+ UpdateScreenInfo(cocoa_view_); |
+} |
+ |
} // namespace content |
// RenderWidgetHostViewCocoa --------------------------------------------------- |