OLD | NEW |
---|---|
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_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1012 // NPNVnetscapeWindow property corresponds to the bounds of the webpage. | 1012 // NPNVnetscapeWindow property corresponds to the bounds of the webpage. |
1013 // This is not true in Aura where we have only HWND which is the main Aura | 1013 // This is not true in Aura where we have only HWND which is the main Aura |
1014 // window. If we return this window to plugins like Flash then it causes the | 1014 // window. If we return this window to plugins like Flash then it causes the |
1015 // coordinate translations done by these plugins to break. | 1015 // coordinate translations done by these plugins to break. |
1016 // Additonally the legacy dummy window is needed for accessibility and for | 1016 // Additonally the legacy dummy window is needed for accessibility and for |
1017 // scrolling to work in legacy drivers for trackpoints/trackpads, etc. | 1017 // scrolling to work in legacy drivers for trackpoints/trackpads, etc. |
1018 if (GetNativeViewId()) { | 1018 if (GetNativeViewId()) { |
1019 if (!legacy_render_widget_host_HWND_) { | 1019 if (!legacy_render_widget_host_HWND_) { |
1020 legacy_render_widget_host_HWND_ = LegacyRenderWidgetHostHWND::Create( | 1020 legacy_render_widget_host_HWND_ = LegacyRenderWidgetHostHWND::Create( |
1021 reinterpret_cast<HWND>(GetNativeViewId())); | 1021 reinterpret_cast<HWND>(GetNativeViewId())); |
1022 BrowserAccessibilityManager* manager = GetBrowserAccessibilityManager(); | |
1023 if (manager) { | |
1024 legacy_render_widget_host_HWND_->set_browser_accessibility_manager( | |
ananta
2014/06/12 18:30:17
This will crash in Windows 8 ASH. You may want to
| |
1025 static_cast<BrowserAccessibilityManagerWin*>(manager)); | |
1026 } | |
1022 } | 1027 } |
1023 if (legacy_render_widget_host_HWND_) { | 1028 if (legacy_render_widget_host_HWND_) { |
1024 legacy_render_widget_host_HWND_->SetBounds( | 1029 legacy_render_widget_host_HWND_->SetBounds( |
1025 window_->GetBoundsInRootWindow()); | 1030 window_->GetBoundsInRootWindow()); |
1026 } | 1031 } |
1027 } | 1032 } |
1028 | 1033 |
1029 if (mouse_locked_) | 1034 if (mouse_locked_) |
1030 UpdateMouseLockRegion(); | 1035 UpdateMouseLockRegion(); |
1031 #endif | 1036 #endif |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1088 if (frame->software_frame_data) { | 1093 if (frame->software_frame_data) { |
1089 DLOG(ERROR) << "Unable to use software frame in aura"; | 1094 DLOG(ERROR) << "Unable to use software frame in aura"; |
1090 RecordAction( | 1095 RecordAction( |
1091 base::UserMetricsAction("BadMessageTerminate_SharedMemoryAura")); | 1096 base::UserMetricsAction("BadMessageTerminate_SharedMemoryAura")); |
1092 host_->GetProcess()->ReceivedBadMessage(); | 1097 host_->GetProcess()->ReceivedBadMessage(); |
1093 return; | 1098 return; |
1094 } | 1099 } |
1095 } | 1100 } |
1096 | 1101 |
1097 #if defined(OS_WIN) | 1102 #if defined(OS_WIN) |
1098 void RenderWidgetHostViewAura::SetParentNativeViewAccessible( | 1103 HWND RenderWidgetHostViewAura::GetAccessibleParentHWND() const { |
1099 gfx::NativeViewAccessible accessible_parent) { | 1104 if (!legacy_render_widget_host_HWND_) |
1100 if (GetBrowserAccessibilityManager()) { | 1105 return NULL; |
1101 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerWin() | 1106 return legacy_render_widget_host_HWND_->hwnd(); |
1102 ->set_parent_iaccessible(accessible_parent); | 1107 } |
1103 } | 1108 |
1109 IAccessible* RenderWidgetHostViewAura::GetParentIAccessible() const { | |
1110 if (!legacy_render_widget_host_HWND_) | |
1111 return NULL; | |
1112 return legacy_render_widget_host_HWND_->window_accessible(); | |
1104 } | 1113 } |
1105 | 1114 |
1106 gfx::NativeViewId RenderWidgetHostViewAura::GetParentForWindowlessPlugin() | 1115 gfx::NativeViewId RenderWidgetHostViewAura::GetParentForWindowlessPlugin() |
1107 const { | 1116 const { |
1108 if (legacy_render_widget_host_HWND_) { | 1117 if (legacy_render_widget_host_HWND_) { |
1109 return reinterpret_cast<gfx::NativeViewId>( | 1118 return reinterpret_cast<gfx::NativeViewId>( |
1110 legacy_render_widget_host_HWND_->hwnd()); | 1119 legacy_render_widget_host_HWND_->hwnd()); |
1111 } | 1120 } |
1112 return NULL; | 1121 return NULL; |
1113 } | 1122 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1249 ? INPUT_EVENT_ACK_STATE_CONSUMED | 1258 ? INPUT_EVENT_ACK_STATE_CONSUMED |
1250 : INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 1259 : INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
1251 } | 1260 } |
1252 | 1261 |
1253 void RenderWidgetHostViewAura::CreateBrowserAccessibilityManagerIfNeeded() { | 1262 void RenderWidgetHostViewAura::CreateBrowserAccessibilityManagerIfNeeded() { |
1254 if (GetBrowserAccessibilityManager()) | 1263 if (GetBrowserAccessibilityManager()) |
1255 return; | 1264 return; |
1256 | 1265 |
1257 BrowserAccessibilityManager* manager = NULL; | 1266 BrowserAccessibilityManager* manager = NULL; |
1258 #if defined(OS_WIN) | 1267 #if defined(OS_WIN) |
1259 aura::WindowTreeHost* host = window_->GetHost(); | 1268 manager = new BrowserAccessibilityManagerWin( |
1260 if (!host) | 1269 BrowserAccessibilityManagerWin::GetEmptyDocument(), host_); |
1261 return; | |
1262 HWND hwnd = host->GetAcceleratedWidget(); | |
1263 | |
1264 // The accessible_parent may be NULL at this point. The WebContents will pass | |
1265 // it down to this instance (by way of the RenderViewHost and | |
1266 // RenderWidgetHost) when it is known. This instance will then set it on its | |
1267 // BrowserAccessibilityManager. | |
1268 gfx::NativeViewAccessible accessible_parent = | |
1269 host_->GetParentNativeViewAccessible(); | |
1270 | |
1271 if (legacy_render_widget_host_HWND_) { | 1270 if (legacy_render_widget_host_HWND_) { |
1272 manager = new BrowserAccessibilityManagerWin( | 1271 legacy_render_widget_host_HWND_->set_browser_accessibility_manager( |
1273 legacy_render_widget_host_HWND_.get(), accessible_parent, | 1272 static_cast<BrowserAccessibilityManagerWin*>(manager)); |
1274 BrowserAccessibilityManagerWin::GetEmptyDocument(), host_); | |
1275 } | 1273 } |
1276 #else | 1274 #else |
1277 manager = BrowserAccessibilityManager::Create( | 1275 manager = BrowserAccessibilityManager::Create( |
1278 BrowserAccessibilityManager::GetEmptyDocument(), host_); | 1276 BrowserAccessibilityManager::GetEmptyDocument(), host_); |
1279 #endif | 1277 #endif |
1280 SetBrowserAccessibilityManager(manager); | 1278 SetBrowserAccessibilityManager(manager); |
1281 } | 1279 } |
1282 | 1280 |
1283 gfx::GLSurfaceHandle RenderWidgetHostViewAura::GetCompositingSurface() { | 1281 gfx::GLSurfaceHandle RenderWidgetHostViewAura::GetCompositingSurface() { |
1284 return ImageTransportFactory::GetInstance()->GetSharedSurfaceHandle(); | 1282 return ImageTransportFactory::GetInstance()->GetSharedSurfaceHandle(); |
(...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2184 event_filter_for_popup_exit_.reset(); | 2182 event_filter_for_popup_exit_.reset(); |
2185 aura::client::SetTooltipText(window_, NULL); | 2183 aura::client::SetTooltipText(window_, NULL); |
2186 gfx::Screen::GetScreenFor(window_)->RemoveObserver(this); | 2184 gfx::Screen::GetScreenFor(window_)->RemoveObserver(this); |
2187 | 2185 |
2188 // This call is usually no-op since |this| object is already removed from the | 2186 // This call is usually no-op since |this| object is already removed from the |
2189 // Aura root window and we don't have a way to get an input method object | 2187 // Aura root window and we don't have a way to get an input method object |
2190 // associated with the window, but just in case. | 2188 // associated with the window, but just in case. |
2191 DetachFromInputMethod(); | 2189 DetachFromInputMethod(); |
2192 | 2190 |
2193 #if defined(OS_WIN) | 2191 #if defined(OS_WIN) |
2192 if (legacy_render_widget_host_HWND_.get()) | |
2193 legacy_render_widget_host_HWND_->OnManagerDeleted(); | |
2194 legacy_render_widget_host_HWND_.reset(NULL); | 2194 legacy_render_widget_host_HWND_.reset(NULL); |
2195 #endif | 2195 #endif |
2196 } | 2196 } |
2197 | 2197 |
2198 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { | 2198 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { |
2199 const gfx::Point screen_point = | 2199 const gfx::Point screen_point = |
2200 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); | 2200 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); |
2201 aura::Window* root_window = window_->GetRootWindow(); | 2201 aura::Window* root_window = window_->GetRootWindow(); |
2202 if (!root_window) | 2202 if (!root_window) |
2203 return; | 2203 return; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2461 | 2461 |
2462 //////////////////////////////////////////////////////////////////////////////// | 2462 //////////////////////////////////////////////////////////////////////////////// |
2463 // RenderWidgetHostViewBase, public: | 2463 // RenderWidgetHostViewBase, public: |
2464 | 2464 |
2465 // static | 2465 // static |
2466 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2466 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
2467 GetScreenInfoForWindow(results, NULL); | 2467 GetScreenInfoForWindow(results, NULL); |
2468 } | 2468 } |
2469 | 2469 |
2470 } // namespace content | 2470 } // namespace content |
OLD | NEW |