Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1077)

Side by Side Diff: chrome/browser/renderer_host/render_widget_host_view_win.cc

Issue 115374: Adds propagation and handling of render-side focus events, for the benefit of... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/render_widget_host_view_win.h" 5 #include "chrome/browser/renderer_host/render_widget_host_view_win.h"
6 6
7 #include "app/gfx/chrome_canvas.h" 7 #include "app/gfx/chrome_canvas.h"
8 #include "app/l10n_util.h" 8 #include "app/l10n_util.h"
9 #include "app/l10n_util_win.h" 9 #include "app/l10n_util_win.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/gfx/gdi_util.h" 12 #include "base/gfx/gdi_util.h"
13 #include "base/gfx/rect.h" 13 #include "base/gfx/rect.h"
14 #include "base/histogram.h" 14 #include "base/histogram.h"
15 #include "base/win_util.h" 15 #include "base/win_util.h"
16 #include "chrome/browser/browser_accessibility.h"
17 #include "chrome/browser/browser_accessibility_manager.h" 16 #include "chrome/browser/browser_accessibility_manager.h"
18 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/browser_trial.h" 18 #include "chrome/browser/browser_trial.h"
20 #include "chrome/browser/plugin_process_host.h" 19 #include "chrome/browser/plugin_process_host.h"
21 #include "chrome/browser/renderer_host/backing_store.h" 20 #include "chrome/browser/renderer_host/backing_store.h"
22 #include "chrome/browser/renderer_host/render_process_host.h" 21 #include "chrome/browser/renderer_host/render_process_host.h"
23 #include "chrome/browser/renderer_host/render_widget_host.h" 22 #include "chrome/browser/renderer_host/render_widget_host.h"
24 #include "chrome/common/chrome_constants.h" 23 #include "chrome/common/chrome_constants.h"
25 #include "chrome/common/chrome_switches.h" 24 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/native_web_keyboard_event.h" 25 #include "chrome/common/native_web_keyboard_event.h"
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 // will get a change to override the default handling 677 // will get a change to override the default handling
679 SendMessage(WM_CANCELMODE); 678 SendMessage(WM_CANCELMODE);
680 } 679 }
681 } 680 }
682 681
683 void RenderWidgetHostViewWin::OnDestroy() { 682 void RenderWidgetHostViewWin::OnDestroy() {
684 ResetTooltip(); 683 ResetTooltip();
685 TrackMouseLeave(false); 684 TrackMouseLeave(false);
686 #ifdef ENABLE_TRACK_HWND_DESTRUCTION 685 #ifdef ENABLE_TRACK_HWND_DESTRUCTION
687 TRACK_HWND_DESTRUCTION(m_hWnd); 686 TRACK_HWND_DESTRUCTION(m_hWnd);
688 #endif // ENABLE_TRACK_HWND_DESTRUCTION 687 #endif // ENABLE_TRACK_HWND_DESTRUCTION
689 } 688 }
690 689
691 void RenderWidgetHostViewWin::OnPaint(HDC dc) { 690 void RenderWidgetHostViewWin::OnPaint(HDC dc) {
692 DCHECK(render_widget_host_->process()->channel()); 691 DCHECK(render_widget_host_->process()->channel());
693 692
694 about_to_validate_and_paint_ = true; 693 about_to_validate_and_paint_ = true;
695 BackingStore* backing_store = render_widget_host_->GetBackingStore(); 694 BackingStore* backing_store = render_widget_host_->GetBackingStore();
696 695
697 // We initialize |paint_dc| (and thus call BeginPaint()) after calling 696 // We initialize |paint_dc| (and thus call BeginPaint()) after calling
698 // GetBackingStore(), so that if it updates the invalid rect we'll catch the 697 // GetBackingStore(), so that if it updates the invalid rect we'll catch the
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 // TODO(jcampan): http://b/issue?id=1432077 Disabling accessibility in the 1186 // TODO(jcampan): http://b/issue?id=1432077 Disabling accessibility in the
1188 // renderer is a temporary work-around until that bug is fixed. 1187 // renderer is a temporary work-around until that bug is fixed.
1189 if (!renderer_accessible_) 1188 if (!renderer_accessible_)
1190 return reference_result; 1189 return reference_result;
1191 1190
1192 // Accessibility readers will send an OBJID_CLIENT message. 1191 // Accessibility readers will send an OBJID_CLIENT message.
1193 if (OBJID_CLIENT == lparam) { 1192 if (OBJID_CLIENT == lparam) {
1194 // If our MSAA DOM root is already created, reuse that pointer. Otherwise, 1193 // If our MSAA DOM root is already created, reuse that pointer. Otherwise,
1195 // create a new one. 1194 // create a new one.
1196 if (!browser_accessibility_root_) { 1195 if (!browser_accessibility_root_) {
1197 CComObject<BrowserAccessibility>* accessibility = NULL; 1196 // Create a new instance of IAccessible. Root id is always 0.
1198 1197 BrowserAccessibilityManager::GetInstance()->
1199 if (!SUCCEEDED(CComObject<BrowserAccessibility>::CreateInstance( 1198 CreateAccessibilityInstance(IID_IAccessible, 0,
1200 &accessibility)) || !accessibility) { 1199 render_widget_host_->routing_id(),
1201 // Return with failure. 1200 render_widget_host_->process()->pid(),
1202 return static_cast<LRESULT>(0L); 1201 m_hWnd, reinterpret_cast<void **>
1203 } 1202 (&browser_accessibility_root_));
1204
1205 CComPtr<IAccessible> accessibility_comptr(accessibility);
1206
1207 // Root id is always 0, to distinguish this particular instance when
1208 // mapping to the render-side IAccessible.
1209 accessibility->set_iaccessible_id(0);
1210
1211 // Set the unique member variables of this particular process.
1212 accessibility->set_instance_id(
1213 BrowserAccessibilityManager::GetInstance()->
1214 SetMembers(accessibility, m_hWnd, render_widget_host_));
1215
1216 // All is well, assign the temp instance to the class smart pointer.
1217 browser_accessibility_root_.Attach(accessibility_comptr.Detach());
1218 1203
1219 if (!browser_accessibility_root_) { 1204 if (!browser_accessibility_root_) {
1220 // Paranoia check. Return with failure. 1205 // No valid root found, return with failure.
1221 NOTREACHED(); 1206 NOTREACHED();
1222 return static_cast<LRESULT>(0L); 1207 return static_cast<LRESULT>(0L);
1223 } 1208 }
1224
1225 // Notify that an instance of IAccessible was allocated for m_hWnd.
1226 ::NotifyWinEvent(EVENT_OBJECT_CREATE, m_hWnd, OBJID_CLIENT,
1227 CHILDID_SELF);
1228 } 1209 }
1229 1210
1230 // Create a reference to ViewAccessibility that MSAA will marshall 1211 // Create a reference to BrowserAccessibility which MSAA will marshall to
1231 // to the client. 1212 // the client.
1232 reference_result = LresultFromObject(IID_IAccessible, wparam, 1213 reference_result = LresultFromObject(IID_IAccessible, wparam,
1233 static_cast<IAccessible*>(browser_accessibility_root_)); 1214 static_cast<IAccessible*>(browser_accessibility_root_));
1234 } 1215 }
1235 return reference_result; 1216 return reference_result;
1236 } 1217 }
1237 1218
1238 void RenderWidgetHostViewWin::OnFinalMessage(HWND window) { 1219 void RenderWidgetHostViewWin::OnFinalMessage(HWND window) {
1239 render_widget_host_->ViewDestroyed(); 1220 render_widget_host_->ViewDestroyed();
1240 delete this; 1221 delete this;
1241 } 1222 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 // WM_LBUTTONDOWN. 1300 // WM_LBUTTONDOWN.
1320 SetFocus(); 1301 SetFocus();
1321 } 1302 }
1322 } 1303 }
1323 1304
1324 void RenderWidgetHostViewWin::ShutdownHost() { 1305 void RenderWidgetHostViewWin::ShutdownHost() {
1325 shutdown_factory_.RevokeAll(); 1306 shutdown_factory_.RevokeAll();
1326 render_widget_host_->Shutdown(); 1307 render_widget_host_->Shutdown();
1327 // Do not touch any members at this point, |this| has been deleted. 1308 // Do not touch any members at this point, |this| has been deleted.
1328 } 1309 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698