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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 12321005: Enable touch based selection and editing for webpages behind a flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: include unittest in only chromeos builds Created 7 years, 8 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) 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/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 popup_child_host_view_(NULL), 622 popup_child_host_view_(NULL),
623 is_loading_(false), 623 is_loading_(false),
624 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), 624 text_input_type_(ui::TEXT_INPUT_TYPE_NONE),
625 can_compose_inline_(true), 625 can_compose_inline_(true),
626 has_composition_text_(false), 626 has_composition_text_(false),
627 paint_canvas_(NULL), 627 paint_canvas_(NULL),
628 synthetic_move_sent_(false), 628 synthetic_move_sent_(false),
629 accelerated_compositing_state_changed_(false), 629 accelerated_compositing_state_changed_(false),
630 can_lock_compositor_(YES), 630 can_lock_compositor_(YES),
631 paint_observer_(NULL), 631 paint_observer_(NULL),
632 accessible_parent_(NULL) { 632 accessible_parent_(NULL),
633 touch_editing_client_(NULL) {
633 host_->SetView(this); 634 host_->SetView(this);
634 window_observer_.reset(new WindowObserver(this)); 635 window_observer_.reset(new WindowObserver(this));
635 aura::client::SetTooltipText(window_, &tooltip_); 636 aura::client::SetTooltipText(window_, &tooltip_);
636 aura::client::SetActivationDelegate(window_, this); 637 aura::client::SetActivationDelegate(window_, this);
637 aura::client::SetActivationChangeObserver(window_, this); 638 aura::client::SetActivationChangeObserver(window_, this);
638 aura::client::SetFocusChangeObserver(window_, this); 639 aura::client::SetFocusChangeObserver(window_, this);
639 gfx::Screen::GetScreenFor(window_)->AddObserver(this); 640 gfx::Screen::GetScreenFor(window_)->AddObserver(this);
640 #if defined(OS_WIN) 641 #if defined(OS_WIN)
641 transient_observer_.reset(new TransientWindowObserver(this)); 642 transient_observer_.reset(new TransientWindowObserver(this));
642 #endif 643 #endif
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 if (can_lock_compositor_ == YES) 785 if (can_lock_compositor_ == YES)
785 can_lock_compositor_ = YES_DID_LOCK; 786 can_lock_compositor_ = YES_DID_LOCK;
786 787
787 resize_locks_.push_back(make_linked_ptr( 788 resize_locks_.push_back(make_linked_ptr(
788 new ResizeLock(root_window, rect.size(), defer_compositor_lock))); 789 new ResizeLock(root_window, rect.size(), defer_compositor_lock)));
789 #endif 790 #endif
790 } 791 }
791 } 792 }
792 window_->SetBounds(rect); 793 window_->SetBounds(rect);
793 host_->WasResized(); 794 host_->WasResized();
795 if (touch_editing_client_) {
796 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_,
797 selection_focus_rect_);
798 }
794 } 799 }
795 800
796 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { 801 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const {
797 return window_; 802 return window_;
798 } 803 }
799 804
800 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const { 805 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const {
801 #if defined(OS_WIN) 806 #if defined(OS_WIN)
802 aura::RootWindow* root_window = window_->GetRootWindow(); 807 aura::RootWindow* root_window = window_->GetRootWindow();
803 if (root_window) { 808 if (root_window) {
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 } 994 }
990 995
991 void RenderWidgetHostViewAura::TextInputStateChanged( 996 void RenderWidgetHostViewAura::TextInputStateChanged(
992 const ViewHostMsg_TextInputState_Params& params) { 997 const ViewHostMsg_TextInputState_Params& params) {
993 if (text_input_type_ != params.type || 998 if (text_input_type_ != params.type ||
994 can_compose_inline_ != params.can_compose_inline) { 999 can_compose_inline_ != params.can_compose_inline) {
995 text_input_type_ = params.type; 1000 text_input_type_ = params.type;
996 can_compose_inline_ = params.can_compose_inline; 1001 can_compose_inline_ = params.can_compose_inline;
997 if (GetInputMethod()) 1002 if (GetInputMethod())
998 GetInputMethod()->OnTextInputTypeChanged(this); 1003 GetInputMethod()->OnTextInputTypeChanged(this);
1004 if (touch_editing_client_)
1005 touch_editing_client_->OnTextInputTypeChanged(text_input_type_);
999 } 1006 }
1000 } 1007 }
1001 1008
1002 void RenderWidgetHostViewAura::ImeCancelComposition() { 1009 void RenderWidgetHostViewAura::ImeCancelComposition() {
1003 if (GetInputMethod()) 1010 if (GetInputMethod())
1004 GetInputMethod()->CancelComposition(this); 1011 GetInputMethod()->CancelComposition(this);
1005 has_composition_text_ = false; 1012 has_composition_text_ = false;
1006 } 1013 }
1007 1014
1008 void RenderWidgetHostViewAura::ImeCompositionRangeChanged( 1015 void RenderWidgetHostViewAura::ImeCompositionRangeChanged(
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 const ViewHostMsg_SelectionBounds_Params& params) { 1111 const ViewHostMsg_SelectionBounds_Params& params) {
1105 if (selection_anchor_rect_ == params.anchor_rect && 1112 if (selection_anchor_rect_ == params.anchor_rect &&
1106 selection_focus_rect_ == params.focus_rect) 1113 selection_focus_rect_ == params.focus_rect)
1107 return; 1114 return;
1108 1115
1109 selection_anchor_rect_ = params.anchor_rect; 1116 selection_anchor_rect_ = params.anchor_rect;
1110 selection_focus_rect_ = params.focus_rect; 1117 selection_focus_rect_ = params.focus_rect;
1111 1118
1112 if (GetInputMethod()) 1119 if (GetInputMethod())
1113 GetInputMethod()->OnCaretBoundsChanged(this); 1120 GetInputMethod()->OnCaretBoundsChanged(this);
1121
1122 if (touch_editing_client_) {
1123 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_,
1124 selection_focus_rect_);
1125 }
1114 } 1126 }
1115 1127
1116 void RenderWidgetHostViewAura::ScrollOffsetChanged() { 1128 void RenderWidgetHostViewAura::ScrollOffsetChanged() {
1117 aura::RootWindow* root = window_->GetRootWindow(); 1129 aura::RootWindow* root = window_->GetRootWindow();
1118 if (!root) 1130 if (!root)
1119 return; 1131 return;
1120 aura::client::CursorClient* cursor_client = 1132 aura::client::CursorClient* cursor_client =
1121 aura::client::GetCursorClient(root); 1133 aura::client::GetCursorClient(root);
1122 if (cursor_client && !cursor_client->IsCursorVisible()) 1134 if (cursor_client && !cursor_client->IsCursorVisible())
1123 cursor_client->DisableMouseEvents(); 1135 cursor_client->DisableMouseEvents();
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 } 1723 }
1712 1724
1713 void RenderWidgetHostViewAura::GetScreenInfo(WebScreenInfo* results) { 1725 void RenderWidgetHostViewAura::GetScreenInfo(WebScreenInfo* results) {
1714 GetScreenInfoForWindow(results, window_->GetRootWindow() ? window_ : NULL); 1726 GetScreenInfoForWindow(results, window_->GetRootWindow() ? window_ : NULL);
1715 } 1727 }
1716 1728
1717 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { 1729 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() {
1718 return window_->GetToplevelWindow()->GetBoundsInScreen(); 1730 return window_->GetToplevelWindow()->GetBoundsInScreen();
1719 } 1731 }
1720 1732
1733 void RenderWidgetHostViewAura::GestureEventAck(int gesture_event_type) {
1734 if (touch_editing_client_)
1735 touch_editing_client_->GestureEventAck(gesture_event_type);
1736 }
1737
1721 void RenderWidgetHostViewAura::ProcessAckedTouchEvent( 1738 void RenderWidgetHostViewAura::ProcessAckedTouchEvent(
1722 const WebKit::WebTouchEvent& touch_event, InputEventAckState ack_result) { 1739 const WebKit::WebTouchEvent& touch_event, InputEventAckState ack_result) {
1723 ScopedVector<ui::TouchEvent> events; 1740 ScopedVector<ui::TouchEvent> events;
1724 if (!MakeUITouchEventsFromWebTouchEvents(touch_event, &events, 1741 if (!MakeUITouchEventsFromWebTouchEvents(touch_event, &events,
1725 SCREEN_COORDINATES)) 1742 SCREEN_COORDINATES))
1726 return; 1743 return;
1727 1744
1728 aura::RootWindow* root = window_->GetRootWindow(); 1745 aura::RootWindow* root = window_->GetRootWindow();
1729 // |root| is NULL during tests. 1746 // |root| is NULL during tests.
1730 if (!root) 1747 if (!root)
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
2052 const gfx::Point& location) { 2069 const gfx::Point& location) {
2053 return true; 2070 return true;
2054 } 2071 }
2055 2072
2056 bool RenderWidgetHostViewAura::CanFocus() { 2073 bool RenderWidgetHostViewAura::CanFocus() {
2057 return popup_type_ == WebKit::WebPopupTypeNone; 2074 return popup_type_ == WebKit::WebPopupTypeNone;
2058 } 2075 }
2059 2076
2060 void RenderWidgetHostViewAura::OnCaptureLost() { 2077 void RenderWidgetHostViewAura::OnCaptureLost() {
2061 host_->LostCapture(); 2078 host_->LostCapture();
2079 if (touch_editing_client_)
2080 touch_editing_client_->EndTouchEditing();
2062 } 2081 }
2063 2082
2064 void RenderWidgetHostViewAura::OnPaint(gfx::Canvas* canvas) { 2083 void RenderWidgetHostViewAura::OnPaint(gfx::Canvas* canvas) {
2065 bool is_compositing_active = host_->is_accelerated_compositing_active(); 2084 bool is_compositing_active = host_->is_accelerated_compositing_active();
2066 bool has_backing_store = !!host_->GetBackingStore(false); 2085 bool has_backing_store = !!host_->GetBackingStore(false);
2067 if (is_compositing_active && current_dib_) { 2086 if (is_compositing_active && current_dib_) {
2068 const gfx::Size window_size = window_->bounds().size(); 2087 const gfx::Size window_size = window_->bounds().size();
2069 const gfx::Size& frame_size = last_swapped_surface_size_; 2088 const gfx::Size& frame_size = last_swapped_surface_size_;
2070 2089
2071 SkBitmap bitmap; 2090 SkBitmap bitmap;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 return scoped_refptr<ui::Texture>( 2190 return scoped_refptr<ui::Texture>(
2172 factory->CreateOwnedTexture( 2191 factory->CreateOwnedTexture(
2173 current_surface_->size(), current_device_scale_factor_, texture_id)); 2192 current_surface_->size(), current_device_scale_factor_, texture_id));
2174 } 2193 }
2175 2194
2176 //////////////////////////////////////////////////////////////////////////////// 2195 ////////////////////////////////////////////////////////////////////////////////
2177 // RenderWidgetHostViewAura, ui::EventHandler implementation: 2196 // RenderWidgetHostViewAura, ui::EventHandler implementation:
2178 2197
2179 void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) { 2198 void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) {
2180 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnKeyEvent"); 2199 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnKeyEvent");
2200 if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event))
2201 return;
2202
2181 if (popup_child_host_view_ && popup_child_host_view_->NeedsInputGrab()) { 2203 if (popup_child_host_view_ && popup_child_host_view_->NeedsInputGrab()) {
2182 popup_child_host_view_->OnKeyEvent(event); 2204 popup_child_host_view_->OnKeyEvent(event);
2183 if (event->handled()) 2205 if (event->handled())
2184 return; 2206 return;
2185 } 2207 }
2186 2208
2187 // We need to handle the Escape key for Pepper Flash. 2209 // We need to handle the Escape key for Pepper Flash.
2188 if (is_fullscreen_ && event->key_code() == ui::VKEY_ESCAPE) { 2210 if (is_fullscreen_ && event->key_code() == ui::VKEY_ESCAPE) {
2189 // Focus the window we were created from. 2211 // Focus the window we were created from.
2190 if (host_tracker_.get() && !host_tracker_->windows().empty()) { 2212 if (host_tracker_.get() && !host_tracker_->windows().empty()) {
(...skipping 29 matching lines...) Expand all
2220 NativeWebKeyboardEvent webkit_event(event); 2242 NativeWebKeyboardEvent webkit_event(event);
2221 host_->ForwardKeyboardEvent(webkit_event); 2243 host_->ForwardKeyboardEvent(webkit_event);
2222 } 2244 }
2223 } 2245 }
2224 event->SetHandled(); 2246 event->SetHandled();
2225 } 2247 }
2226 2248
2227 void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { 2249 void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) {
2228 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnMouseEvent"); 2250 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnMouseEvent");
2229 2251
2252 if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event))
2253 return;
2254
2230 if (mouse_locked_) { 2255 if (mouse_locked_) {
2231 // Hide the cursor if someone else has shown it. 2256 // Hide the cursor if someone else has shown it.
2232 aura::client::CursorClient* cursor_client = 2257 aura::client::CursorClient* cursor_client =
2233 aura::client::GetCursorClient(window_->GetRootWindow()); 2258 aura::client::GetCursorClient(window_->GetRootWindow());
2234 if (cursor_client && cursor_client->IsCursorVisible()) 2259 if (cursor_client && cursor_client->IsCursorVisible())
2235 cursor_client->DisableMouseEvents(); 2260 cursor_client->DisableMouseEvents();
2236 2261
2237 WebKit::WebMouseEvent mouse_event = MakeWebMouseEvent(event); 2262 WebKit::WebMouseEvent mouse_event = MakeWebMouseEvent(event);
2238 gfx::Point center(gfx::Rect(window_->bounds().size()).CenterPoint()); 2263 gfx::Point center(gfx::Rect(window_->bounds().size()).CenterPoint());
2239 2264
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2324 if (!is_fullscreen_ && window_->parent()->delegate() && 2349 if (!is_fullscreen_ && window_->parent()->delegate() &&
2325 !(event->flags() & ui::EF_FROM_TOUCH)) 2350 !(event->flags() & ui::EF_FROM_TOUCH))
2326 window_->parent()->delegate()->OnMouseEvent(event); 2351 window_->parent()->delegate()->OnMouseEvent(event);
2327 2352
2328 if (!IsXButtonUpEvent(event)) 2353 if (!IsXButtonUpEvent(event))
2329 event->SetHandled(); 2354 event->SetHandled();
2330 } 2355 }
2331 2356
2332 void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) { 2357 void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) {
2333 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnScrollEvent"); 2358 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnScrollEvent");
2359 if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event))
2360 return;
2361
2334 if (event->type() == ui::ET_SCROLL) { 2362 if (event->type() == ui::ET_SCROLL) {
2335 if (event->finger_count() != 2) 2363 if (event->finger_count() != 2)
2336 return; 2364 return;
2337 WebKit::WebGestureEvent gesture_event = 2365 WebKit::WebGestureEvent gesture_event =
2338 MakeWebGestureEventFlingCancel(); 2366 MakeWebGestureEventFlingCancel();
2339 host_->ForwardGestureEvent(gesture_event); 2367 host_->ForwardGestureEvent(gesture_event);
2340 WebKit::WebMouseWheelEvent mouse_wheel_event = 2368 WebKit::WebMouseWheelEvent mouse_wheel_event =
2341 MakeWebMouseWheelEvent(static_cast<ui::ScrollEvent*>(event)); 2369 MakeWebMouseWheelEvent(static_cast<ui::ScrollEvent*>(event));
2342 host_->ForwardWheelEvent(mouse_wheel_event); 2370 host_->ForwardWheelEvent(mouse_wheel_event);
2343 RecordAction(UserMetricsAction("TrackpadScroll")); 2371 RecordAction(UserMetricsAction("TrackpadScroll"));
2344 } else if (event->type() == ui::ET_SCROLL_FLING_START || 2372 } else if (event->type() == ui::ET_SCROLL_FLING_START ||
2345 event->type() == ui::ET_SCROLL_FLING_CANCEL) { 2373 event->type() == ui::ET_SCROLL_FLING_CANCEL) {
2346 WebKit::WebGestureEvent gesture_event = 2374 WebKit::WebGestureEvent gesture_event =
2347 MakeWebGestureEvent(static_cast<ui::ScrollEvent*>(event)); 2375 MakeWebGestureEvent(static_cast<ui::ScrollEvent*>(event));
2348 host_->ForwardGestureEvent(gesture_event); 2376 host_->ForwardGestureEvent(gesture_event);
2349 if (event->type() == ui::ET_SCROLL_FLING_START) 2377 if (event->type() == ui::ET_SCROLL_FLING_START)
2350 RecordAction(UserMetricsAction("TrackpadScrollFling")); 2378 RecordAction(UserMetricsAction("TrackpadScrollFling"));
2351 } 2379 }
2352 2380
2353 event->SetHandled(); 2381 event->SetHandled();
2354 } 2382 }
2355 2383
2356 void RenderWidgetHostViewAura::OnTouchEvent(ui::TouchEvent* event) { 2384 void RenderWidgetHostViewAura::OnTouchEvent(ui::TouchEvent* event) {
2357 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnTouchEvent"); 2385 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnTouchEvent");
2386 if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event))
2387 return;
2388
2358 // Update the touch event first. 2389 // Update the touch event first.
2359 WebKit::WebTouchPoint* point = UpdateWebTouchEventFromUIEvent(*event, 2390 WebKit::WebTouchPoint* point = UpdateWebTouchEventFromUIEvent(*event,
2360 &touch_event_); 2391 &touch_event_);
2361 2392
2362 // Forward the touch event only if a touch point was updated, and there's a 2393 // Forward the touch event only if a touch point was updated, and there's a
2363 // touch-event handler in the page, and no other touch-event is in the queue. 2394 // touch-event handler in the page, and no other touch-event is in the queue.
2364 // It is important to always consume the event if there is a touch-event 2395 // It is important to always consume the event if there is a touch-event
2365 // handler in the page, or some touch-event is already in the queue, even if 2396 // handler in the page, or some touch-event is already in the queue, even if
2366 // no point has been updated, to make sure that this event does not get 2397 // no point has been updated, to make sure that this event does not get
2367 // processed by the gesture recognizer before the events in the queue. 2398 // processed by the gesture recognizer before the events in the queue.
(...skipping 10 matching lines...) Expand all
2378 void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { 2409 void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) {
2379 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnGestureEvent"); 2410 TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnGestureEvent");
2380 // Pinch gestures are currently disabled by default. See crbug.com/128477. 2411 // Pinch gestures are currently disabled by default. See crbug.com/128477.
2381 if ((event->type() == ui::ET_GESTURE_PINCH_BEGIN || 2412 if ((event->type() == ui::ET_GESTURE_PINCH_BEGIN ||
2382 event->type() == ui::ET_GESTURE_PINCH_UPDATE || 2413 event->type() == ui::ET_GESTURE_PINCH_UPDATE ||
2383 event->type() == ui::ET_GESTURE_PINCH_END) && !ShouldSendPinchGesture()) { 2414 event->type() == ui::ET_GESTURE_PINCH_END) && !ShouldSendPinchGesture()) {
2384 event->SetHandled(); 2415 event->SetHandled();
2385 return; 2416 return;
2386 } 2417 }
2387 2418
2419 if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event))
2420 return;
2421
2388 RenderViewHostDelegate* delegate = NULL; 2422 RenderViewHostDelegate* delegate = NULL;
2389 if (popup_type_ == WebKit::WebPopupTypeNone && !is_fullscreen_) 2423 if (popup_type_ == WebKit::WebPopupTypeNone && !is_fullscreen_)
2390 delegate = RenderViewHost::From(host_)->GetDelegate(); 2424 delegate = RenderViewHost::From(host_)->GetDelegate();
2391 2425
2392 if (delegate && event->type() == ui::ET_GESTURE_BEGIN && 2426 if (delegate && event->type() == ui::ET_GESTURE_BEGIN &&
2393 event->details().touch_points() == 1) { 2427 event->details().touch_points() == 1) {
2394 delegate->HandleGestureBegin(); 2428 delegate->HandleGestureBegin();
2395 } 2429 }
2396 2430
2397 WebKit::WebGestureEvent gesture = MakeWebGestureEvent(event); 2431 WebKit::WebGestureEvent gesture = MakeWebGestureEvent(event);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
2495 // window if we lose the focus to a window on another display. 2529 // window if we lose the focus to a window on another display.
2496 gfx::Screen* screen = gfx::Screen::GetScreenFor(window_); 2530 gfx::Screen* screen = gfx::Screen::GetScreenFor(window_);
2497 bool focusing_other_display = 2531 bool focusing_other_display =
2498 gained_focus && screen->GetNumDisplays() > 1 && 2532 gained_focus && screen->GetNumDisplays() > 1 &&
2499 (screen->GetDisplayNearestWindow(window_).id() != 2533 (screen->GetDisplayNearestWindow(window_).id() !=
2500 screen->GetDisplayNearestWindow(gained_focus).id()); 2534 screen->GetDisplayNearestWindow(gained_focus).id());
2501 if (is_fullscreen_ && !in_shutdown_ && !focusing_other_display) { 2535 if (is_fullscreen_ && !in_shutdown_ && !focusing_other_display) {
2502 in_shutdown_ = true; 2536 in_shutdown_ = true;
2503 host_->Shutdown(); 2537 host_->Shutdown();
2504 } 2538 }
2539 if (touch_editing_client_)
2540 touch_editing_client_->EndTouchEditing();
2505 } 2541 }
2506 } 2542 }
2507 2543
2508 //////////////////////////////////////////////////////////////////////////////// 2544 ////////////////////////////////////////////////////////////////////////////////
2509 // RenderWidgetHostViewAura, aura::RootWindowObserver implementation: 2545 // RenderWidgetHostViewAura, aura::RootWindowObserver implementation:
2510 2546
2511 void RenderWidgetHostViewAura::OnRootWindowMoved(const aura::RootWindow* root, 2547 void RenderWidgetHostViewAura::OnRootWindowMoved(const aura::RootWindow* root,
2512 const gfx::Point& new_origin) { 2548 const gfx::Point& new_origin) {
2513 UpdateScreenInfo(window_); 2549 UpdateScreenInfo(window_);
2514 } 2550 }
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
2633 host_->CompositingSurfaceUpdated(); 2669 host_->CompositingSurfaceUpdated();
2634 host_->ScheduleComposite(); 2670 host_->ScheduleComposite();
2635 } 2671 }
2636 2672
2637 //////////////////////////////////////////////////////////////////////////////// 2673 ////////////////////////////////////////////////////////////////////////////////
2638 // RenderWidgetHostViewAura, private: 2674 // RenderWidgetHostViewAura, private:
2639 2675
2640 RenderWidgetHostViewAura::~RenderWidgetHostViewAura() { 2676 RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
2641 if (paint_observer_) 2677 if (paint_observer_)
2642 paint_observer_->OnViewDestroyed(); 2678 paint_observer_->OnViewDestroyed();
2679 if (touch_editing_client_)
2680 touch_editing_client_->OnViewDestroyed();
2643 if (!shared_surface_handle_.is_null()) { 2681 if (!shared_surface_handle_.is_null()) {
2644 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); 2682 ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
2645 factory->DestroySharedSurfaceHandle(shared_surface_handle_); 2683 factory->DestroySharedSurfaceHandle(shared_surface_handle_);
2646 factory->RemoveObserver(this); 2684 factory->RemoveObserver(this);
2647 } 2685 }
2648 window_observer_.reset(); 2686 window_observer_.reset();
2649 #if defined(OS_WIN) 2687 #if defined(OS_WIN)
2650 transient_observer_.reset(); 2688 transient_observer_.reset();
2651 #endif 2689 #endif
2652 if (window_->GetRootWindow()) 2690 if (window_->GetRootWindow())
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2845 RenderWidgetHost* widget) { 2883 RenderWidgetHost* widget) {
2846 return new RenderWidgetHostViewAura(widget); 2884 return new RenderWidgetHostViewAura(widget);
2847 } 2885 }
2848 2886
2849 // static 2887 // static
2850 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { 2888 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) {
2851 GetScreenInfoForWindow(results, NULL); 2889 GetScreenInfoForWindow(results, NULL);
2852 } 2890 }
2853 2891
2854 } // namespace content 2892 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698