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

Side by Side Diff: ui/aura/remote_window_tree_host_win.cc

Issue 560633002: Ensure that mouse lock works correctly on Chrome ASH in Windows 8. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Build errors Created 6 years, 3 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
« no previous file with comments | « ui/aura/remote_window_tree_host_win.h ('k') | win8/metro_driver/chrome_app_view_ash.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ui/aura/remote_window_tree_host_win.h" 5 #include "ui/aura/remote_window_tree_host_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 RemoteWindowTreeHostWin* g_instance = NULL; 86 RemoteWindowTreeHostWin* g_instance = NULL;
87 87
88 // static 88 // static
89 RemoteWindowTreeHostWin* RemoteWindowTreeHostWin::Instance() { 89 RemoteWindowTreeHostWin* RemoteWindowTreeHostWin::Instance() {
90 return g_instance; 90 return g_instance;
91 } 91 }
92 92
93 RemoteWindowTreeHostWin::RemoteWindowTreeHostWin() 93 RemoteWindowTreeHostWin::RemoteWindowTreeHostWin()
94 : remote_window_(NULL), 94 : remote_window_(NULL),
95 host_(NULL), 95 host_(NULL),
96 ignore_mouse_moves_until_set_cursor_ack_(false), 96 ignore_mouse_moves_until_set_cursor_ack_(0),
97 event_flags_(0), 97 event_flags_(0),
98 window_size_(aura::WindowTreeHost::GetNativeScreenSize()) { 98 window_size_(aura::WindowTreeHost::GetNativeScreenSize()) {
99 CHECK(!g_instance); 99 CHECK(!g_instance);
100 g_instance = this; 100 g_instance = this;
101 prop_.reset(new ui::ViewProp(NULL, kWindowTreeHostWinKey, this)); 101 prop_.reset(new ui::ViewProp(NULL, kWindowTreeHostWinKey, this));
102 CreateCompositor(GetAcceleratedWidget()); 102 CreateCompositor(GetAcceleratedWidget());
103 } 103 }
104 104
105 RemoteWindowTreeHostWin::~RemoteWindowTreeHostWin() { 105 RemoteWindowTreeHostWin::~RemoteWindowTreeHostWin() {
106 DestroyCompositor(); 106 DestroyCompositor();
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 // Other cases which don't expect this behavior should continue to work 255 // Other cases which don't expect this behavior should continue to work
256 // without issues. 256 // without issues.
257 257
258 // The mouse events are received by the viewer process and sent to the 258 // The mouse events are received by the viewer process and sent to the
259 // browser. If we invoke the SetCursor API here we continue to receive 259 // browser. If we invoke the SetCursor API here we continue to receive
260 // mouse messages from the viewer which were posted before the SetCursor 260 // mouse messages from the viewer which were posted before the SetCursor
261 // API executes which messes up the state in the browser. To workaround 261 // API executes which messes up the state in the browser. To workaround
262 // this we invoke the SetCursor API in the viewer process and ignore 262 // this we invoke the SetCursor API in the viewer process and ignore
263 // mouse messages until we received an ACK from the viewer indicating that 263 // mouse messages until we received an ACK from the viewer indicating that
264 // the SetCursor operation completed. 264 // the SetCursor operation completed.
265 ignore_mouse_moves_until_set_cursor_ack_ = true; 265 ignore_mouse_moves_until_set_cursor_ack_++;
266 VLOG(1) << "In MoveCursorTo. Sending IPC"; 266 VLOG(1) << "In MoveCursorTo. Sending IPC";
267 host_->Send(new MetroViewerHostMsg_SetCursorPos(location.x(), location.y())); 267 host_->Send(new MetroViewerHostMsg_SetCursorPos(location.x(), location.y()));
268 } 268 }
269 269
270 void RemoteWindowTreeHostWin::OnCursorVisibilityChangedNative(bool show) { 270 void RemoteWindowTreeHostWin::OnCursorVisibilityChangedNative(bool show) {
271 NOTIMPLEMENTED(); 271 NOTIMPLEMENTED();
272 } 272 }
273 273
274 void RemoteWindowTreeHostWin::PostNativeEvent( 274 void RemoteWindowTreeHostWin::PostNativeEvent(
275 const base::NativeEvent& native_event) { 275 const base::NativeEvent& native_event) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 uint32 pointer_id) { 423 uint32 pointer_id) {
424 gfx::Point location = PointFromNativeEvent(x, y); 424 gfx::Point location = PointFromNativeEvent(x, y);
425 ui::TouchEvent event(ui::ET_TOUCH_MOVED, 425 ui::TouchEvent event(ui::ET_TOUCH_MOVED,
426 location, 426 location,
427 pointer_id, 427 pointer_id,
428 base::TimeDelta::FromMicroseconds(timestamp)); 428 base::TimeDelta::FromMicroseconds(timestamp));
429 SendEventToProcessor(&event); 429 SendEventToProcessor(&event);
430 } 430 }
431 431
432 void RemoteWindowTreeHostWin::OnSetCursorPosAck() { 432 void RemoteWindowTreeHostWin::OnSetCursorPosAck() {
433 DCHECK(ignore_mouse_moves_until_set_cursor_ack_); 433 DCHECK_GT(ignore_mouse_moves_until_set_cursor_ack_, 0);
434 ignore_mouse_moves_until_set_cursor_ack_ = false; 434 ignore_mouse_moves_until_set_cursor_ack_--;
435 } 435 }
436 436
437 ui::RemoteInputMethodPrivateWin* 437 ui::RemoteInputMethodPrivateWin*
438 RemoteWindowTreeHostWin::GetRemoteInputMethodPrivate() { 438 RemoteWindowTreeHostWin::GetRemoteInputMethodPrivate() {
439 ui::InputMethod* input_method = GetAshWindow()->GetProperty( 439 ui::InputMethod* input_method = GetAshWindow()->GetProperty(
440 aura::client::kRootWindowInputMethodKey); 440 aura::client::kRootWindowInputMethodKey);
441 return ui::RemoteInputMethodPrivateWin::Get(input_method); 441 return ui::RemoteInputMethodPrivateWin::Get(input_method);
442 } 442 }
443 443
444 void RemoteWindowTreeHostWin::OnImeCandidatePopupChanged(bool visible) { 444 void RemoteWindowTreeHostWin::OnImeCandidatePopupChanged(bool visible) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 } 515 }
516 516
517 void RemoteWindowTreeHostWin::SetEventFlags(uint32 flags) { 517 void RemoteWindowTreeHostWin::SetEventFlags(uint32 flags) {
518 if (flags == event_flags_) 518 if (flags == event_flags_)
519 return; 519 return;
520 event_flags_ = flags; 520 event_flags_ = flags;
521 SetVirtualKeyStates(event_flags_); 521 SetVirtualKeyStates(event_flags_);
522 } 522 }
523 523
524 } // namespace aura 524 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/remote_window_tree_host_win.h ('k') | win8/metro_driver/chrome_app_view_ash.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698