| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <QuartzCore/QuartzCore.h> | 5 #include <QuartzCore/QuartzCore.h> | 
| 6 | 6 | 
| 7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" | 7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" | 
| 8 | 8 | 
| 9 #include "app/app_switches.h" | 9 #include "app/app_switches.h" | 
| 10 #include "app/surface/io_surface_support_mac.h" | 10 #include "app/surface/io_surface_support_mac.h" | 
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 683 void RenderWidgetHostViewMac::ImeCancelComposition() { | 683 void RenderWidgetHostViewMac::ImeCancelComposition() { | 
| 684   [cocoa_view_ cancelComposition]; | 684   [cocoa_view_ cancelComposition]; | 
| 685 } | 685 } | 
| 686 | 686 | 
| 687 void RenderWidgetHostViewMac::DidUpdateBackingStore( | 687 void RenderWidgetHostViewMac::DidUpdateBackingStore( | 
| 688     const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy, | 688     const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy, | 
| 689     const std::vector<gfx::Rect>& copy_rects) { | 689     const std::vector<gfx::Rect>& copy_rects) { | 
| 690   if (!is_hidden_) { | 690   if (!is_hidden_) { | 
| 691     std::vector<gfx::Rect> rects(copy_rects); | 691     std::vector<gfx::Rect> rects(copy_rects); | 
| 692 | 692 | 
| 693     // Because the findbar might be open, we cannot use scrollRect:by: here.  Fo
      r | 693     // Because the findbar might be open, we cannot use scrollRect:by: here. For | 
| 694     // now, simply mark all of scroll rect as dirty. | 694     // now, simply mark all of scroll rect as dirty. | 
| 695     if (!scroll_rect.IsEmpty()) | 695     if (!scroll_rect.IsEmpty()) | 
| 696       rects.push_back(scroll_rect); | 696       rects.push_back(scroll_rect); | 
| 697 | 697 | 
| 698     for (size_t i = 0; i < rects.size(); ++i) { | 698     for (size_t i = 0; i < rects.size(); ++i) { | 
| 699       NSRect ns_rect = [cocoa_view_ flipRectToNSRect:rects[i]]; | 699       NSRect ns_rect = [cocoa_view_ flipRectToNSRect:rects[i]]; | 
| 700 | 700 | 
| 701       if (about_to_validate_and_paint_) { | 701       if (about_to_validate_and_paint_) { | 
| 702         // As much as we'd like to use -setNeedsDisplayInRect: here, we can't. | 702         // As much as we'd like to use -setNeedsDisplayInRect: here, we can't. | 
| 703         // We're in the middle of executing a -drawRect:, and as soon as it | 703         // We're in the middle of executing a -drawRect:, and as soon as it | 
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 943   if (plugin_container_manager_.SurfaceShouldBeVisible(window)) | 943   if (plugin_container_manager_.SurfaceShouldBeVisible(window)) | 
| 944     [view setHidden:NO]; | 944     [view setHidden:NO]; | 
| 945   [view setSurfaceWasSwapped:YES]; | 945   [view setSurfaceWasSwapped:YES]; | 
| 946 } | 946 } | 
| 947 | 947 | 
| 948 void RenderWidgetHostViewMac::UpdateRootGpuViewVisibility( | 948 void RenderWidgetHostViewMac::UpdateRootGpuViewVisibility( | 
| 949     bool show_gpu_widget) { | 949     bool show_gpu_widget) { | 
| 950   // Plugins are destroyed on page navigate. The compositor layer on the other | 950   // Plugins are destroyed on page navigate. The compositor layer on the other | 
| 951   // hand is created on demand and then stays alive until its renderer process | 951   // hand is created on demand and then stays alive until its renderer process | 
| 952   // dies (usually on cross-domain navigation). Instead, only a flag | 952   // dies (usually on cross-domain navigation). Instead, only a flag | 
| 953   // |is_gpu_rendering_active()| is flipped when the compositor output should be | 953   // |is_accelerated_compositing_active()| is flipped when the compositor output | 
| 954   // shown/hidden. | 954   // should be shown/hidden. | 
| 955   // Show/hide the view belonging to the compositor here. | 955   // Show/hide the view belonging to the compositor here. | 
| 956   plugin_container_manager_.set_gpu_rendering_active(show_gpu_widget); | 956   plugin_container_manager_.set_gpu_rendering_active(show_gpu_widget); | 
| 957 | 957 | 
| 958   gfx::PluginWindowHandle root_handle = | 958   gfx::PluginWindowHandle root_handle = | 
| 959       plugin_container_manager_.root_container_handle(); | 959       plugin_container_manager_.root_container_handle(); | 
| 960   if (root_handle != gfx::kNullPluginWindow) { | 960   if (root_handle != gfx::kNullPluginWindow) { | 
| 961     PluginViewMap::iterator it = plugin_views_.find(root_handle); | 961     PluginViewMap::iterator it = plugin_views_.find(root_handle); | 
| 962     DCHECK(plugin_views_.end() != it); | 962     DCHECK(plugin_views_.end() != it); | 
| 963     if (plugin_views_.end() == it) { | 963     if (plugin_views_.end() == it) { | 
| 964       return; | 964       return; | 
| 965     } | 965     } | 
| 966     bool visible = | 966     bool visible = | 
| 967         plugin_container_manager_.SurfaceShouldBeVisible(root_handle); | 967         plugin_container_manager_.SurfaceShouldBeVisible(root_handle); | 
| 968     [[it->second window] disableScreenUpdatesUntilFlush]; | 968     [[it->second window] disableScreenUpdatesUntilFlush]; | 
| 969     [it->second setHidden:!visible]; | 969     [it->second setHidden:!visible]; | 
| 970   } | 970   } | 
| 971 } | 971 } | 
| 972 | 972 | 
| 973 void RenderWidgetHostViewMac::HandleDelayedGpuViewHiding() { | 973 void RenderWidgetHostViewMac::HandleDelayedGpuViewHiding() { | 
| 974   if (needs_gpu_visibility_update_after_repaint_) { | 974   if (needs_gpu_visibility_update_after_repaint_) { | 
| 975     UpdateRootGpuViewVisibility(false); | 975     UpdateRootGpuViewVisibility(false); | 
| 976     needs_gpu_visibility_update_after_repaint_ = false; | 976     needs_gpu_visibility_update_after_repaint_ = false; | 
| 977   } | 977   } | 
| 978 } | 978 } | 
| 979 | 979 | 
| 980 void RenderWidgetHostViewMac::GpuRenderingStateDidChange() { | 980 void RenderWidgetHostViewMac::GpuRenderingStateDidChange() { | 
| 981   CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 981   CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 
| 982   if (GetRenderWidgetHost()->is_gpu_rendering_active()) { | 982   if (GetRenderWidgetHost()->is_accelerated_compositing_active()) { | 
| 983     UpdateRootGpuViewVisibility( | 983     UpdateRootGpuViewVisibility( | 
| 984         GetRenderWidgetHost()->is_gpu_rendering_active()); | 984         GetRenderWidgetHost()->is_accelerated_compositing_active()); | 
| 985   } else { | 985   } else { | 
| 986     needs_gpu_visibility_update_after_repaint_ = true; | 986     needs_gpu_visibility_update_after_repaint_ = true; | 
| 987   } | 987   } | 
| 988 } | 988 } | 
| 989 | 989 | 
| 990 void RenderWidgetHostViewMac::DrawAcceleratedSurfaceInstance( | 990 void RenderWidgetHostViewMac::DrawAcceleratedSurfaceInstance( | 
| 991       CGLContextObj context, | 991       CGLContextObj context, | 
| 992       gfx::PluginWindowHandle plugin_handle, | 992       gfx::PluginWindowHandle plugin_handle, | 
| 993       NSSize size) { | 993       NSSize size) { | 
| 994   // Called on the display link thread. | 994   // Called on the display link thread. | 
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1572 - (void)drawRect:(NSRect)dirtyRect { | 1572 - (void)drawRect:(NSRect)dirtyRect { | 
| 1573   if (!renderWidgetHostView_->render_widget_host_) { | 1573   if (!renderWidgetHostView_->render_widget_host_) { | 
| 1574     // TODO(shess): Consider using something more noticable? | 1574     // TODO(shess): Consider using something more noticable? | 
| 1575     [[NSColor whiteColor] set]; | 1575     [[NSColor whiteColor] set]; | 
| 1576     NSRectFill(dirtyRect); | 1576     NSRectFill(dirtyRect); | 
| 1577     return; | 1577     return; | 
| 1578   } | 1578   } | 
| 1579 | 1579 | 
| 1580   const gfx::Rect damagedRect([self flipNSRectToRect:dirtyRect]); | 1580   const gfx::Rect damagedRect([self flipNSRectToRect:dirtyRect]); | 
| 1581 | 1581 | 
| 1582   if (renderWidgetHostView_->render_widget_host_->is_gpu_rendering_active()) { | 1582   if (renderWidgetHostView_->render_widget_host_-> | 
|  | 1583       is_accelerated_compositing_active()) { | 
| 1583     gfx::Rect gpuRect; | 1584     gfx::Rect gpuRect; | 
| 1584 | 1585 | 
| 1585     gfx::PluginWindowHandle root_handle = | 1586     gfx::PluginWindowHandle root_handle = | 
| 1586        renderWidgetHostView_->plugin_container_manager_.root_container_handle(); | 1587        renderWidgetHostView_->plugin_container_manager_.root_container_handle(); | 
| 1587     if (root_handle != gfx::kNullPluginWindow) { | 1588     if (root_handle != gfx::kNullPluginWindow) { | 
| 1588       RenderWidgetHostViewMac::PluginViewMap::iterator it = | 1589       RenderWidgetHostViewMac::PluginViewMap::iterator it = | 
| 1589           renderWidgetHostView_->plugin_views_.find(root_handle); | 1590           renderWidgetHostView_->plugin_views_.find(root_handle); | 
| 1590       DCHECK(it != renderWidgetHostView_->plugin_views_.end()); | 1591       DCHECK(it != renderWidgetHostView_->plugin_views_.end()); | 
| 1591       if (it != renderWidgetHostView_->plugin_views_.end() && | 1592       if (it != renderWidgetHostView_->plugin_views_.end() && | 
| 1592           ![it->second isHidden]) { | 1593           ![it->second isHidden]) { | 
| (...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2568   if (!string) return NO; | 2569   if (!string) return NO; | 
| 2569 | 2570 | 
| 2570   // If the user is currently using an IME, confirm the IME input, | 2571   // If the user is currently using an IME, confirm the IME input, | 
| 2571   // and then insert the text from the service, the same as TextEdit and Safari. | 2572   // and then insert the text from the service, the same as TextEdit and Safari. | 
| 2572   [self confirmComposition]; | 2573   [self confirmComposition]; | 
| 2573   [self insertText:string]; | 2574   [self insertText:string]; | 
| 2574   return YES; | 2575   return YES; | 
| 2575 } | 2576 } | 
| 2576 | 2577 | 
| 2577 @end | 2578 @end | 
| OLD | NEW | 
|---|