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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 #include "ui/aura/client/window_tree_client.h" | 54 #include "ui/aura/client/window_tree_client.h" |
55 #include "ui/aura/env.h" | 55 #include "ui/aura/env.h" |
56 #include "ui/aura/window.h" | 56 #include "ui/aura/window.h" |
57 #include "ui/aura/window_event_dispatcher.h" | 57 #include "ui/aura/window_event_dispatcher.h" |
58 #include "ui/aura/window_observer.h" | 58 #include "ui/aura/window_observer.h" |
59 #include "ui/aura/window_tracker.h" | 59 #include "ui/aura/window_tracker.h" |
60 #include "ui/aura/window_tree_host.h" | 60 #include "ui/aura/window_tree_host.h" |
61 #include "ui/base/clipboard/scoped_clipboard_writer.h" | 61 #include "ui/base/clipboard/scoped_clipboard_writer.h" |
62 #include "ui/base/hit_test.h" | 62 #include "ui/base/hit_test.h" |
63 #include "ui/base/ime/input_method.h" | 63 #include "ui/base/ime/input_method.h" |
| 64 #include "ui/base/ime/input_method_observer.h" |
64 #include "ui/base/ui_base_types.h" | 65 #include "ui/base/ui_base_types.h" |
65 #include "ui/compositor/compositor_vsync_manager.h" | 66 #include "ui/compositor/compositor_vsync_manager.h" |
66 #include "ui/compositor/dip_util.h" | 67 #include "ui/compositor/dip_util.h" |
67 #include "ui/events/event.h" | 68 #include "ui/events/event.h" |
68 #include "ui/events/event_utils.h" | 69 #include "ui/events/event_utils.h" |
69 #include "ui/events/gestures/gesture_recognizer.h" | 70 #include "ui/events/gestures/gesture_recognizer.h" |
70 #include "ui/gfx/canvas.h" | 71 #include "ui/gfx/canvas.h" |
71 #include "ui/gfx/display.h" | 72 #include "ui/gfx/display.h" |
72 #include "ui/gfx/geometry/rect_conversions.h" | 73 #include "ui/gfx/geometry/rect_conversions.h" |
73 #include "ui/gfx/geometry/size_conversions.h" | 74 #include "ui/gfx/geometry/size_conversions.h" |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 | 333 |
333 if (event.type() == ui::ET_GESTURE_BEGIN) { | 334 if (event.type() == ui::ET_GESTURE_BEGIN) { |
334 const ui::GestureEvent& gesture = | 335 const ui::GestureEvent& gesture = |
335 static_cast<const ui::GestureEvent&>(event); | 336 static_cast<const ui::GestureEvent&>(event); |
336 return gesture.details().touch_points() == 1; | 337 return gesture.details().touch_points() == 1; |
337 } | 338 } |
338 | 339 |
339 return false; | 340 return false; |
340 } | 341 } |
341 | 342 |
| 343 class KeyboardBoundsUnchangedListener : public ui::InputMethodObserver { |
| 344 public: |
| 345 KeyboardBoundsUnchangedListener(ui::InputMethod* input_method, |
| 346 RenderWidgetHostImpl* host) |
| 347 : host_(host) { |
| 348 input_method->AddObserver(this); |
| 349 } |
| 350 |
| 351 private: |
| 352 ~KeyboardBoundsUnchangedListener() override {} |
| 353 |
| 354 // Overridden from ui::InputMethodObserver: |
| 355 void OnTextInputTypeChanged(const ui::TextInputClient* client) override {} |
| 356 void OnFocus() override {} |
| 357 void OnBlur() override {} |
| 358 void OnCaretBoundsChanged(const ui::TextInputClient* client) override {} |
| 359 void OnTextInputStateChanged(const ui::TextInputClient* client) override {} |
| 360 void OnInputMethodDestroyed(const ui::InputMethod* input_method) override { |
| 361 delete this; |
| 362 } |
| 363 void OnShowImeIfNeeded() override {} |
| 364 void OnKeyboardBoundsUnchanged() override { |
| 365 host_->Send(new ViewMsg_FocusChangeComplete(host_->GetRoutingID())); |
| 366 } |
| 367 |
| 368 RenderWidgetHostImpl* const host_; |
| 369 |
| 370 DISALLOW_COPY_AND_ASSIGN(KeyboardBoundsUnchangedListener); |
| 371 }; |
| 372 |
342 } // namespace | 373 } // namespace |
343 | 374 |
344 // We need to watch for mouse events outside a Web Popup or its parent | 375 // We need to watch for mouse events outside a Web Popup or its parent |
345 // and dismiss the popup for certain events. | 376 // and dismiss the popup for certain events. |
346 class RenderWidgetHostViewAura::EventFilterForPopupExit | 377 class RenderWidgetHostViewAura::EventFilterForPopupExit |
347 : public ui::EventHandler { | 378 : public ui::EventHandler { |
348 public: | 379 public: |
349 explicit EventFilterForPopupExit(RenderWidgetHostViewAura* rwhva) | 380 explicit EventFilterForPopupExit(RenderWidgetHostViewAura* rwhva) |
350 : rwhva_(rwhva) { | 381 : rwhva_(rwhva) { |
351 DCHECK(rwhva_); | 382 DCHECK(rwhva_); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 aura::client::SetTooltipText(window_, &tooltip_); | 492 aura::client::SetTooltipText(window_, &tooltip_); |
462 aura::client::SetActivationDelegate(window_, this); | 493 aura::client::SetActivationDelegate(window_, this); |
463 aura::client::SetActivationChangeObserver(window_, this); | 494 aura::client::SetActivationChangeObserver(window_, this); |
464 aura::client::SetFocusChangeObserver(window_, this); | 495 aura::client::SetFocusChangeObserver(window_, this); |
465 window_->set_layer_owner_delegate(delegated_frame_host_.get()); | 496 window_->set_layer_owner_delegate(delegated_frame_host_.get()); |
466 gfx::Screen::GetScreenFor(window_)->AddObserver(this); | 497 gfx::Screen::GetScreenFor(window_)->AddObserver(this); |
467 | 498 |
468 bool overscroll_enabled = base::CommandLine::ForCurrentProcess()-> | 499 bool overscroll_enabled = base::CommandLine::ForCurrentProcess()-> |
469 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; | 500 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; |
470 SetOverscrollControllerEnabled(overscroll_enabled); | 501 SetOverscrollControllerEnabled(overscroll_enabled); |
| 502 |
| 503 if (GetInputMethod()) |
| 504 new KeyboardBoundsUnchangedListener(GetInputMethod(), host_); |
471 } | 505 } |
472 | 506 |
473 //////////////////////////////////////////////////////////////////////////////// | 507 //////////////////////////////////////////////////////////////////////////////// |
474 // RenderWidgetHostViewAura, RenderWidgetHostView implementation: | 508 // RenderWidgetHostViewAura, RenderWidgetHostView implementation: |
475 | 509 |
476 bool RenderWidgetHostViewAura::OnMessageReceived( | 510 bool RenderWidgetHostViewAura::OnMessageReceived( |
477 const IPC::Message& message) { | 511 const IPC::Message& message) { |
478 bool handled = true; | 512 bool handled = true; |
479 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewAura, message) | 513 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewAura, message) |
480 // TODO(kevers): Move to RenderWidgetHostViewImpl and consolidate IPC | 514 // TODO(kevers): Move to RenderWidgetHostViewImpl and consolidate IPC |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
874 } | 908 } |
875 } | 909 } |
876 | 910 |
877 void RenderWidgetHostViewAura::OnTextInputStateChanged( | 911 void RenderWidgetHostViewAura::OnTextInputStateChanged( |
878 const ViewHostMsg_TextInputState_Params& params) { | 912 const ViewHostMsg_TextInputState_Params& params) { |
879 text_input_flags_ = params.flags; | 913 text_input_flags_ = params.flags; |
880 if (params.show_ime_if_needed && params.type != ui::TEXT_INPUT_TYPE_NONE) { | 914 if (params.show_ime_if_needed && params.type != ui::TEXT_INPUT_TYPE_NONE) { |
881 if (GetInputMethod()) | 915 if (GetInputMethod()) |
882 GetInputMethod()->ShowImeIfNeeded(); | 916 GetInputMethod()->ShowImeIfNeeded(); |
883 } | 917 } |
| 918 |
| 919 if (!GetInputMethod() || !GetInputMethod()->SupportsOnScreenKeyboard()) |
| 920 host_->Send(new ViewMsg_FocusChangeComplete(host_->GetRoutingID())); |
884 } | 921 } |
885 | 922 |
886 void RenderWidgetHostViewAura::ImeCancelComposition() { | 923 void RenderWidgetHostViewAura::ImeCancelComposition() { |
887 if (GetInputMethod()) | 924 if (GetInputMethod()) |
888 GetInputMethod()->CancelComposition(this); | 925 GetInputMethod()->CancelComposition(this); |
889 has_composition_text_ = false; | 926 has_composition_text_ = false; |
890 } | 927 } |
891 | 928 |
892 void RenderWidgetHostViewAura::ImeCompositionRangeChanged( | 929 void RenderWidgetHostViewAura::ImeCompositionRangeChanged( |
893 const gfx::Range& range, | 930 const gfx::Range& range, |
(...skipping 1756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2650 | 2687 |
2651 //////////////////////////////////////////////////////////////////////////////// | 2688 //////////////////////////////////////////////////////////////////////////////// |
2652 // RenderWidgetHostViewBase, public: | 2689 // RenderWidgetHostViewBase, public: |
2653 | 2690 |
2654 // static | 2691 // static |
2655 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2692 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
2656 GetScreenInfoForWindow(results, NULL); | 2693 GetScreenInfoForWindow(results, NULL); |
2657 } | 2694 } |
2658 | 2695 |
2659 } // namespace content | 2696 } // namespace content |
OLD | NEW |