| 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/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 SetParent(window, ui::GetHiddenWindow()); | 166 SetParent(window, ui::GetHiddenWindow()); |
| 167 return TRUE; | 167 return TRUE; |
| 168 } | 168 } |
| 169 | 169 |
| 170 BOOL CALLBACK ShowWindowsCallback(HWND window, LPARAM param) { | 170 BOOL CALLBACK ShowWindowsCallback(HWND window, LPARAM param) { |
| 171 RenderWidgetHostViewAura* widget = | 171 RenderWidgetHostViewAura* widget = |
| 172 reinterpret_cast<RenderWidgetHostViewAura*>(param); | 172 reinterpret_cast<RenderWidgetHostViewAura*>(param); |
| 173 | 173 |
| 174 if (GetProp(window, kWidgetOwnerProperty) == widget) { | 174 if (GetProp(window, kWidgetOwnerProperty) == widget) { |
| 175 HWND parent = | 175 HWND parent = |
| 176 widget->GetNativeView()->GetRootWindow()->GetAcceleratedWidget(); | 176 widget->GetNativeView()->GetDispatcher()->GetAcceleratedWidget(); |
| 177 SetParent(window, parent); | 177 SetParent(window, parent); |
| 178 } | 178 } |
| 179 return TRUE; | 179 return TRUE; |
| 180 } | 180 } |
| 181 | 181 |
| 182 struct CutoutRectsParams { | 182 struct CutoutRectsParams { |
| 183 RenderWidgetHostViewAura* widget; | 183 RenderWidgetHostViewAura* widget; |
| 184 std::vector<gfx::Rect> cutout_rects; | 184 std::vector<gfx::Rect> cutout_rects; |
| 185 std::map<HWND, WebPluginGeometry>* geometry; | 185 std::map<HWND, WebPluginGeometry>* geometry; |
| 186 }; | 186 }; |
| 187 | 187 |
| 188 // Used to update the region for the windowed plugin to draw in. We start with | 188 // Used to update the region for the windowed plugin to draw in. We start with |
| 189 // the clip rect from the renderer, then remove the cutout rects from the | 189 // the clip rect from the renderer, then remove the cutout rects from the |
| 190 // renderer, and then remove the transient windows from the root window and the | 190 // renderer, and then remove the transient windows from the root window and the |
| 191 // constrained windows from the parent window. | 191 // constrained windows from the parent window. |
| 192 BOOL CALLBACK SetCutoutRectsCallback(HWND window, LPARAM param) { | 192 BOOL CALLBACK SetCutoutRectsCallback(HWND window, LPARAM param) { |
| 193 CutoutRectsParams* params = reinterpret_cast<CutoutRectsParams*>(param); | 193 CutoutRectsParams* params = reinterpret_cast<CutoutRectsParams*>(param); |
| 194 | 194 |
| 195 if (GetProp(window, kWidgetOwnerProperty) == params->widget) { | 195 if (GetProp(window, kWidgetOwnerProperty) == params->widget) { |
| 196 // First calculate the offset of this plugin from the root window, since | 196 // First calculate the offset of this plugin from the root window, since |
| 197 // the cutouts are relative to the root window. | 197 // the cutouts are relative to the root window. |
| 198 HWND parent = params->widget->GetNativeView()->GetRootWindow()-> | 198 HWND parent = params->widget->GetNativeView()->GetDispatcher()-> |
| 199 GetAcceleratedWidget(); | 199 GetAcceleratedWidget(); |
| 200 POINT offset; | 200 POINT offset; |
| 201 offset.x = offset.y = 0; | 201 offset.x = offset.y = 0; |
| 202 MapWindowPoints(window, parent, &offset, 1); | 202 MapWindowPoints(window, parent, &offset, 1); |
| 203 | 203 |
| 204 // Now get the cached clip rect and cutouts for this plugin window that came | 204 // Now get the cached clip rect and cutouts for this plugin window that came |
| 205 // from the renderer. | 205 // from the renderer. |
| 206 std::map<HWND, WebPluginGeometry>::iterator i = params->geometry->begin(); | 206 std::map<HWND, WebPluginGeometry>::iterator i = params->geometry->begin(); |
| 207 while (i != params->geometry->end() && | 207 while (i != params->geometry->end() && |
| 208 i->second.window != window && | 208 i->second.window != window && |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 } // namespace | 391 } // namespace |
| 392 | 392 |
| 393 // We need to watch for mouse events outside a Web Popup or its parent | 393 // We need to watch for mouse events outside a Web Popup or its parent |
| 394 // and dismiss the popup for certain events. | 394 // and dismiss the popup for certain events. |
| 395 class RenderWidgetHostViewAura::EventFilterForPopupExit : | 395 class RenderWidgetHostViewAura::EventFilterForPopupExit : |
| 396 public ui::EventHandler { | 396 public ui::EventHandler { |
| 397 public: | 397 public: |
| 398 explicit EventFilterForPopupExit(RenderWidgetHostViewAura* rwhva) | 398 explicit EventFilterForPopupExit(RenderWidgetHostViewAura* rwhva) |
| 399 : rwhva_(rwhva) { | 399 : rwhva_(rwhva) { |
| 400 DCHECK(rwhva_); | 400 DCHECK(rwhva_); |
| 401 aura::RootWindow* root_window = rwhva_->window_->GetRootWindow(); | 401 aura::Window* root_window = rwhva_->window_->GetRootWindow(); |
| 402 DCHECK(root_window); | 402 DCHECK(root_window); |
| 403 root_window->AddPreTargetHandler(this); | 403 root_window->AddPreTargetHandler(this); |
| 404 } | 404 } |
| 405 | 405 |
| 406 virtual ~EventFilterForPopupExit() { | 406 virtual ~EventFilterForPopupExit() { |
| 407 aura::RootWindow* root_window = rwhva_->window_->GetRootWindow(); | 407 aura::Window* root_window = rwhva_->window_->GetRootWindow(); |
| 408 DCHECK(root_window); | 408 DCHECK(root_window); |
| 409 root_window->RemovePreTargetHandler(this); | 409 root_window->RemovePreTargetHandler(this); |
| 410 } | 410 } |
| 411 | 411 |
| 412 // Overridden from ui::EventHandler | 412 // Overridden from ui::EventHandler |
| 413 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { | 413 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
| 414 rwhva_->ApplyEventFilterForPopupExit(event); | 414 rwhva_->ApplyEventFilterForPopupExit(event); |
| 415 } | 415 } |
| 416 | 416 |
| 417 private: | 417 private: |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 // is not known now. | 526 // is not known now. |
| 527 } | 527 } |
| 528 | 528 |
| 529 virtual void OnRemoveTransientChild(aura::Window* window, | 529 virtual void OnRemoveTransientChild(aura::Window* window, |
| 530 aura::Window* transient) OVERRIDE { | 530 aura::Window* transient) OVERRIDE { |
| 531 transient->RemoveObserver(this); | 531 transient->RemoveObserver(this); |
| 532 SendPluginCutoutRects(); | 532 SendPluginCutoutRects(); |
| 533 } | 533 } |
| 534 | 534 |
| 535 aura::Window* GetToplevelWindow() { | 535 aura::Window* GetToplevelWindow() { |
| 536 aura::RootWindow* root = view_->window_->GetRootWindow(); | 536 aura::Window* root = view_->window_->GetRootWindow(); |
| 537 if (!root) | 537 if (!root) |
| 538 return NULL; | 538 return NULL; |
| 539 aura::client::ActivationClient* activation_client = | 539 aura::client::ActivationClient* activation_client = |
| 540 aura::client::GetActivationClient(root); | 540 aura::client::GetActivationClient(root); |
| 541 if (!activation_client) | 541 if (!activation_client) |
| 542 return NULL; | 542 return NULL; |
| 543 return activation_client->GetToplevelWindow(view_->window_); | 543 return activation_client->GetToplevelWindow(view_->window_); |
| 544 } | 544 } |
| 545 | 545 |
| 546 void StopObserving() { | 546 void StopObserving() { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 // similar mechanism to ensure a second popup doesn't cause the first one | 638 // similar mechanism to ensure a second popup doesn't cause the first one |
| 639 // to never get a chance to filter events. See crbug.com/160589. | 639 // to never get a chance to filter events. See crbug.com/160589. |
| 640 DCHECK(old_child->popup_parent_host_view_ == popup_parent_host_view_); | 640 DCHECK(old_child->popup_parent_host_view_ == popup_parent_host_view_); |
| 641 old_child->popup_parent_host_view_ = NULL; | 641 old_child->popup_parent_host_view_ = NULL; |
| 642 } | 642 } |
| 643 popup_parent_host_view_->popup_child_host_view_ = this; | 643 popup_parent_host_view_->popup_child_host_view_ = this; |
| 644 window_->SetType(aura::client::WINDOW_TYPE_MENU); | 644 window_->SetType(aura::client::WINDOW_TYPE_MENU); |
| 645 window_->Init(ui::LAYER_TEXTURED); | 645 window_->Init(ui::LAYER_TEXTURED); |
| 646 window_->SetName("RenderWidgetHostViewAura"); | 646 window_->SetName("RenderWidgetHostViewAura"); |
| 647 | 647 |
| 648 aura::RootWindow* root = popup_parent_host_view_->window_->GetRootWindow(); | 648 aura::Window* root = popup_parent_host_view_->window_->GetRootWindow(); |
| 649 aura::client::ParentWindowWithContext(window_, root, bounds_in_screen); | 649 aura::client::ParentWindowWithContext(window_, root, bounds_in_screen); |
| 650 | 650 |
| 651 // TODO(erg): While I could make sure details of the WindowTreeClient are | 651 // TODO(erg): While I could make sure details of the WindowTreeClient are |
| 652 // hidden behind aura, hiding the details of the ScreenPositionClient will | 652 // hidden behind aura, hiding the details of the ScreenPositionClient will |
| 653 // take another effort. | 653 // take another effort. |
| 654 aura::client::ScreenPositionClient* screen_position_client = | 654 aura::client::ScreenPositionClient* screen_position_client = |
| 655 aura::client::GetScreenPositionClient(root); | 655 aura::client::GetScreenPositionClient(root); |
| 656 gfx::Point origin_in_parent(bounds_in_screen.origin()); | 656 gfx::Point origin_in_parent(bounds_in_screen.origin()); |
| 657 if (screen_position_client) { | 657 if (screen_position_client) { |
| 658 screen_position_client->ConvertPointFromScreen( | 658 screen_position_client->ConvertPointFromScreen( |
| 659 window_->parent(), &origin_in_parent); | 659 window_->parent(), &origin_in_parent); |
| 660 } | 660 } |
| 661 SetBounds(gfx::Rect(origin_in_parent, bounds_in_screen.size())); | 661 SetBounds(gfx::Rect(origin_in_parent, bounds_in_screen.size())); |
| 662 Show(); | 662 Show(); |
| 663 } | 663 } |
| 664 | 664 |
| 665 void RenderWidgetHostViewAura::InitAsFullscreen( | 665 void RenderWidgetHostViewAura::InitAsFullscreen( |
| 666 RenderWidgetHostView* reference_host_view) { | 666 RenderWidgetHostView* reference_host_view) { |
| 667 is_fullscreen_ = true; | 667 is_fullscreen_ = true; |
| 668 window_->SetType(aura::client::WINDOW_TYPE_NORMAL); | 668 window_->SetType(aura::client::WINDOW_TYPE_NORMAL); |
| 669 window_->Init(ui::LAYER_TEXTURED); | 669 window_->Init(ui::LAYER_TEXTURED); |
| 670 window_->SetName("RenderWidgetHostViewAura"); | 670 window_->SetName("RenderWidgetHostViewAura"); |
| 671 window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 671 window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
| 672 | 672 |
| 673 aura::RootWindow* parent = NULL; | 673 aura::Window* parent = NULL; |
| 674 gfx::Rect bounds; | 674 gfx::Rect bounds; |
| 675 if (reference_host_view) { | 675 if (reference_host_view) { |
| 676 aura::Window* reference_window = | 676 aura::Window* reference_window = |
| 677 static_cast<RenderWidgetHostViewAura*>(reference_host_view)->window_; | 677 static_cast<RenderWidgetHostViewAura*>(reference_host_view)->window_; |
| 678 if (reference_window) { | 678 if (reference_window) { |
| 679 host_tracker_.reset(new aura::WindowTracker); | 679 host_tracker_.reset(new aura::WindowTracker); |
| 680 host_tracker_->Add(reference_window); | 680 host_tracker_->Add(reference_window); |
| 681 } | 681 } |
| 682 gfx::Display display = gfx::Screen::GetScreenFor(window_)-> | 682 gfx::Display display = gfx::Screen::GetScreenFor(window_)-> |
| 683 GetDisplayNearestWindow(reference_window); | 683 GetDisplayNearestWindow(reference_window); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 694 } | 694 } |
| 695 | 695 |
| 696 void RenderWidgetHostViewAura::WasShown() { | 696 void RenderWidgetHostViewAura::WasShown() { |
| 697 DCHECK(host_); | 697 DCHECK(host_); |
| 698 if (!host_->is_hidden()) | 698 if (!host_->is_hidden()) |
| 699 return; | 699 return; |
| 700 host_->WasShown(); | 700 host_->WasShown(); |
| 701 if (framebuffer_holder_) | 701 if (framebuffer_holder_) |
| 702 FrameMemoryManager::GetInstance()->SetFrameVisibility(this, true); | 702 FrameMemoryManager::GetInstance()->SetFrameVisibility(this, true); |
| 703 | 703 |
| 704 aura::RootWindow* root = window_->GetRootWindow(); | 704 aura::Window* root = window_->GetRootWindow(); |
| 705 if (root) { | 705 if (root) { |
| 706 aura::client::CursorClient* cursor_client = | 706 aura::client::CursorClient* cursor_client = |
| 707 aura::client::GetCursorClient(root); | 707 aura::client::GetCursorClient(root); |
| 708 if (cursor_client) | 708 if (cursor_client) |
| 709 NotifyRendererOfCursorVisibilityState(cursor_client->IsCursorVisible()); | 709 NotifyRendererOfCursorVisibilityState(cursor_client->IsCursorVisible()); |
| 710 } | 710 } |
| 711 | 711 |
| 712 if (!current_surface_.get() && host_->is_accelerated_compositing_active() && | 712 if (!current_surface_.get() && host_->is_accelerated_compositing_active() && |
| 713 !released_front_lock_.get()) { | 713 !released_front_lock_.get()) { |
| 714 ui::Compositor* compositor = GetCompositor(); | 714 ui::Compositor* compositor = GetCompositor(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 726 void RenderWidgetHostViewAura::WasHidden() { | 726 void RenderWidgetHostViewAura::WasHidden() { |
| 727 if (!host_ || host_->is_hidden()) | 727 if (!host_ || host_->is_hidden()) |
| 728 return; | 728 return; |
| 729 host_->WasHidden(); | 729 host_->WasHidden(); |
| 730 if (framebuffer_holder_) | 730 if (framebuffer_holder_) |
| 731 FrameMemoryManager::GetInstance()->SetFrameVisibility(this, false); | 731 FrameMemoryManager::GetInstance()->SetFrameVisibility(this, false); |
| 732 | 732 |
| 733 released_front_lock_ = NULL; | 733 released_front_lock_ = NULL; |
| 734 | 734 |
| 735 #if defined(OS_WIN) | 735 #if defined(OS_WIN) |
| 736 aura::RootWindow* root_window = window_->GetRootWindow(); | 736 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 737 if (root_window) { | 737 if (dispatcher) { |
| 738 HWND parent = root_window->GetAcceleratedWidget(); | 738 HWND parent = dispatcher->GetAcceleratedWidget(); |
| 739 LPARAM lparam = reinterpret_cast<LPARAM>(this); | 739 LPARAM lparam = reinterpret_cast<LPARAM>(this); |
| 740 | 740 |
| 741 EnumChildWindows(parent, HideWindowsCallback, lparam); | 741 EnumChildWindows(parent, HideWindowsCallback, lparam); |
| 742 } | 742 } |
| 743 #endif | 743 #endif |
| 744 } | 744 } |
| 745 | 745 |
| 746 void RenderWidgetHostViewAura::SetSize(const gfx::Size& size) { | 746 void RenderWidgetHostViewAura::SetSize(const gfx::Size& size) { |
| 747 SetBounds(gfx::Rect(window_->bounds().origin(), size)); | 747 SetBounds(gfx::Rect(window_->bounds().origin(), size)); |
| 748 } | 748 } |
| 749 | 749 |
| 750 void RenderWidgetHostViewAura::SetBounds(const gfx::Rect& rect) { | 750 void RenderWidgetHostViewAura::SetBounds(const gfx::Rect& rect) { |
| 751 if (HasDisplayPropertyChanged(window_)) | 751 if (HasDisplayPropertyChanged(window_)) |
| 752 host_->InvalidateScreenInfo(); | 752 host_->InvalidateScreenInfo(); |
| 753 | 753 |
| 754 window_->SetBounds(rect); | 754 window_->SetBounds(rect); |
| 755 host_->WasResized(); | 755 host_->WasResized(); |
| 756 MaybeCreateResizeLock(); | 756 MaybeCreateResizeLock(); |
| 757 if (touch_editing_client_) { | 757 if (touch_editing_client_) { |
| 758 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, | 758 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, |
| 759 selection_focus_rect_); | 759 selection_focus_rect_); |
| 760 } | 760 } |
| 761 } | 761 } |
| 762 | 762 |
| 763 void RenderWidgetHostViewAura::MaybeCreateResizeLock() { | 763 void RenderWidgetHostViewAura::MaybeCreateResizeLock() { |
| 764 if (!ShouldCreateResizeLock()) | 764 if (!ShouldCreateResizeLock()) |
| 765 return; | 765 return; |
| 766 DCHECK(window_->GetRootWindow()); | 766 DCHECK(window_->GetDispatcher()); |
| 767 DCHECK(window_->GetRootWindow()->compositor()); | 767 DCHECK(window_->GetDispatcher()->compositor()); |
| 768 | 768 |
| 769 // Listen to changes in the compositor lock state. | 769 // Listen to changes in the compositor lock state. |
| 770 ui::Compositor* compositor = window_->GetRootWindow()->compositor(); | 770 ui::Compositor* compositor = window_->GetDispatcher()->compositor(); |
| 771 if (!compositor->HasObserver(this)) | 771 if (!compositor->HasObserver(this)) |
| 772 compositor->AddObserver(this); | 772 compositor->AddObserver(this); |
| 773 | 773 |
| 774 bool defer_compositor_lock = | 774 bool defer_compositor_lock = |
| 775 can_lock_compositor_ == NO_PENDING_RENDERER_FRAME || | 775 can_lock_compositor_ == NO_PENDING_RENDERER_FRAME || |
| 776 can_lock_compositor_ == NO_PENDING_COMMIT; | 776 can_lock_compositor_ == NO_PENDING_COMMIT; |
| 777 | 777 |
| 778 if (can_lock_compositor_ == YES) | 778 if (can_lock_compositor_ == YES) |
| 779 can_lock_compositor_ = YES_DID_LOCK; | 779 can_lock_compositor_ = YES_DID_LOCK; |
| 780 | 780 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 798 | 798 |
| 799 if (host_->should_auto_resize()) | 799 if (host_->should_auto_resize()) |
| 800 return false; | 800 return false; |
| 801 if (!host_->is_accelerated_compositing_active()) | 801 if (!host_->is_accelerated_compositing_active()) |
| 802 return false; | 802 return false; |
| 803 | 803 |
| 804 gfx::Size desired_size = window_->bounds().size(); | 804 gfx::Size desired_size = window_->bounds().size(); |
| 805 if (desired_size == current_frame_size_) | 805 if (desired_size == current_frame_size_) |
| 806 return false; | 806 return false; |
| 807 | 807 |
| 808 aura::RootWindow* root_window = window_->GetRootWindow(); | 808 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 809 if (!root_window) | 809 if (!dispatcher) |
| 810 return false; | 810 return false; |
| 811 | 811 |
| 812 ui::Compositor* compositor = root_window->compositor(); | 812 ui::Compositor* compositor = dispatcher->compositor(); |
| 813 if (!compositor) | 813 if (!compositor) |
| 814 return false; | 814 return false; |
| 815 | 815 |
| 816 return true; | 816 return true; |
| 817 } | 817 } |
| 818 | 818 |
| 819 scoped_ptr<ResizeLock> RenderWidgetHostViewAura::CreateResizeLock( | 819 scoped_ptr<ResizeLock> RenderWidgetHostViewAura::CreateResizeLock( |
| 820 bool defer_compositor_lock) { | 820 bool defer_compositor_lock) { |
| 821 gfx::Size desired_size = window_->bounds().size(); | 821 gfx::Size desired_size = window_->bounds().size(); |
| 822 return scoped_ptr<ResizeLock>(new CompositorResizeLock( | 822 return scoped_ptr<ResizeLock>(new CompositorResizeLock( |
| 823 window_->GetRootWindow(), | 823 window_->GetDispatcher(), |
| 824 desired_size, | 824 desired_size, |
| 825 defer_compositor_lock, | 825 defer_compositor_lock, |
| 826 base::TimeDelta::FromMilliseconds(kResizeLockTimeoutMs))); | 826 base::TimeDelta::FromMilliseconds(kResizeLockTimeoutMs))); |
| 827 } | 827 } |
| 828 | 828 |
| 829 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { | 829 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { |
| 830 return window_; | 830 return window_; |
| 831 } | 831 } |
| 832 | 832 |
| 833 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const { | 833 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const { |
| 834 #if defined(OS_WIN) | 834 #if defined(OS_WIN) |
| 835 aura::RootWindow* root_window = window_->GetRootWindow(); | 835 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 836 if (root_window) { | 836 if (dispatcher) { |
| 837 HWND window = root_window->GetAcceleratedWidget(); | 837 HWND window = dispatcher->GetAcceleratedWidget(); |
| 838 return reinterpret_cast<gfx::NativeViewId>(window); | 838 return reinterpret_cast<gfx::NativeViewId>(window); |
| 839 } | 839 } |
| 840 #endif | 840 #endif |
| 841 return static_cast<gfx::NativeViewId>(NULL); | 841 return static_cast<gfx::NativeViewId>(NULL); |
| 842 } | 842 } |
| 843 | 843 |
| 844 gfx::NativeViewAccessible RenderWidgetHostViewAura::GetNativeViewAccessible() { | 844 gfx::NativeViewAccessible RenderWidgetHostViewAura::GetNativeViewAccessible() { |
| 845 #if defined(OS_WIN) | 845 #if defined(OS_WIN) |
| 846 aura::RootWindow* root_window = window_->GetRootWindow(); | 846 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 847 if (!root_window) | 847 if (!dispatcher) |
| 848 return static_cast<gfx::NativeViewAccessible>(NULL); | 848 return static_cast<gfx::NativeViewAccessible>(NULL); |
| 849 HWND hwnd = root_window->GetAcceleratedWidget(); | 849 HWND hwnd = dispatcher->GetAcceleratedWidget(); |
| 850 | 850 |
| 851 BrowserAccessibilityManager* manager = | 851 BrowserAccessibilityManager* manager = |
| 852 GetOrCreateBrowserAccessibilityManager(); | 852 GetOrCreateBrowserAccessibilityManager(); |
| 853 if (manager) | 853 if (manager) |
| 854 return manager->GetRoot()->ToBrowserAccessibilityWin(); | 854 return manager->GetRoot()->ToBrowserAccessibilityWin(); |
| 855 #endif | 855 #endif |
| 856 | 856 |
| 857 NOTIMPLEMENTED(); | 857 NOTIMPLEMENTED(); |
| 858 return static_cast<gfx::NativeViewAccessible>(NULL); | 858 return static_cast<gfx::NativeViewAccessible>(NULL); |
| 859 } | 859 } |
| 860 | 860 |
| 861 BrowserAccessibilityManager* | 861 BrowserAccessibilityManager* |
| 862 RenderWidgetHostViewAura::GetOrCreateBrowserAccessibilityManager() { | 862 RenderWidgetHostViewAura::GetOrCreateBrowserAccessibilityManager() { |
| 863 BrowserAccessibilityManager* manager = GetBrowserAccessibilityManager(); | 863 BrowserAccessibilityManager* manager = GetBrowserAccessibilityManager(); |
| 864 if (manager) | 864 if (manager) |
| 865 return manager; | 865 return manager; |
| 866 | 866 |
| 867 #if defined(OS_WIN) | 867 #if defined(OS_WIN) |
| 868 aura::RootWindow* root_window = window_->GetRootWindow(); | 868 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 869 if (!root_window) | 869 if (!dispatcher) |
| 870 return NULL; | 870 return NULL; |
| 871 HWND hwnd = root_window->GetAcceleratedWidget(); | 871 HWND hwnd = dispatcher->GetAcceleratedWidget(); |
| 872 | 872 |
| 873 // The accessible_parent may be NULL at this point. The WebContents will pass | 873 // The accessible_parent may be NULL at this point. The WebContents will pass |
| 874 // it down to this instance (by way of the RenderViewHost and | 874 // it down to this instance (by way of the RenderViewHost and |
| 875 // RenderWidgetHost) when it is known. This instance will then set it on its | 875 // RenderWidgetHost) when it is known. This instance will then set it on its |
| 876 // BrowserAccessibilityManager. | 876 // BrowserAccessibilityManager. |
| 877 gfx::NativeViewAccessible accessible_parent = | 877 gfx::NativeViewAccessible accessible_parent = |
| 878 host_->GetParentNativeViewAccessible(); | 878 host_->GetParentNativeViewAccessible(); |
| 879 | 879 |
| 880 manager = new BrowserAccessibilityManagerWin( | 880 manager = new BrowserAccessibilityManagerWin( |
| 881 hwnd, accessible_parent, | 881 hwnd, accessible_parent, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 892 void RenderWidgetHostViewAura::MovePluginWindows( | 892 void RenderWidgetHostViewAura::MovePluginWindows( |
| 893 const gfx::Vector2d& scroll_offset, | 893 const gfx::Vector2d& scroll_offset, |
| 894 const std::vector<WebPluginGeometry>& plugin_window_moves) { | 894 const std::vector<WebPluginGeometry>& plugin_window_moves) { |
| 895 #if defined(OS_WIN) | 895 #if defined(OS_WIN) |
| 896 // We need to clip the rectangle to the tab's viewport, otherwise we will draw | 896 // We need to clip the rectangle to the tab's viewport, otherwise we will draw |
| 897 // over the browser UI. | 897 // over the browser UI. |
| 898 if (!window_->GetRootWindow()) { | 898 if (!window_->GetRootWindow()) { |
| 899 DCHECK(plugin_window_moves.empty()); | 899 DCHECK(plugin_window_moves.empty()); |
| 900 return; | 900 return; |
| 901 } | 901 } |
| 902 HWND parent = window_->GetRootWindow()->GetAcceleratedWidget(); | 902 HWND parent = window_->GetDispatcher()->GetAcceleratedWidget(); |
| 903 gfx::Rect view_bounds = window_->GetBoundsInRootWindow(); | 903 gfx::Rect view_bounds = window_->GetBoundsInRootWindow(); |
| 904 std::vector<WebPluginGeometry> moves = plugin_window_moves; | 904 std::vector<WebPluginGeometry> moves = plugin_window_moves; |
| 905 | 905 |
| 906 gfx::Rect view_port(scroll_offset.x(), scroll_offset.y(), view_bounds.width(), | 906 gfx::Rect view_port(scroll_offset.x(), scroll_offset.y(), view_bounds.width(), |
| 907 view_bounds.height()); | 907 view_bounds.height()); |
| 908 | 908 |
| 909 for (size_t i = 0; i < moves.size(); ++i) { | 909 for (size_t i = 0; i < moves.size(); ++i) { |
| 910 gfx::Rect clip(moves[i].clip_rect); | 910 gfx::Rect clip(moves[i].clip_rect); |
| 911 gfx::Vector2d view_port_offset( | 911 gfx::Vector2d view_port_offset( |
| 912 moves[i].window_rect.OffsetFromOrigin() + scroll_offset); | 912 moves[i].window_rect.OffsetFromOrigin() + scroll_offset); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1067 if (paint_canvas_) { | 1067 if (paint_canvas_) { |
| 1068 SkRect sk_clip_rect; | 1068 SkRect sk_clip_rect; |
| 1069 if (paint_canvas_->sk_canvas()->getClipBounds(&sk_clip_rect)) | 1069 if (paint_canvas_->sk_canvas()->getClipBounds(&sk_clip_rect)) |
| 1070 clip_rect = gfx::ToEnclosingRect(gfx::SkRectToRectF(sk_clip_rect)); | 1070 clip_rect = gfx::ToEnclosingRect(gfx::SkRectToRectF(sk_clip_rect)); |
| 1071 } | 1071 } |
| 1072 | 1072 |
| 1073 if (!scroll_rect.IsEmpty()) | 1073 if (!scroll_rect.IsEmpty()) |
| 1074 SchedulePaintIfNotInClip(scroll_rect, clip_rect); | 1074 SchedulePaintIfNotInClip(scroll_rect, clip_rect); |
| 1075 | 1075 |
| 1076 #if defined(OS_WIN) | 1076 #if defined(OS_WIN) |
| 1077 aura::RootWindow* root_window = window_->GetRootWindow(); | 1077 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 1078 #endif | 1078 #endif |
| 1079 for (size_t i = 0; i < copy_rects.size(); ++i) { | 1079 for (size_t i = 0; i < copy_rects.size(); ++i) { |
| 1080 gfx::Rect rect = gfx::SubtractRects(copy_rects[i], scroll_rect); | 1080 gfx::Rect rect = gfx::SubtractRects(copy_rects[i], scroll_rect); |
| 1081 if (rect.IsEmpty()) | 1081 if (rect.IsEmpty()) |
| 1082 continue; | 1082 continue; |
| 1083 | 1083 |
| 1084 SchedulePaintIfNotInClip(rect, clip_rect); | 1084 SchedulePaintIfNotInClip(rect, clip_rect); |
| 1085 | 1085 |
| 1086 #if defined(OS_WIN) | 1086 #if defined(OS_WIN) |
| 1087 if (root_window) { | 1087 if (dispatcher) { |
| 1088 // Send the invalid rect in screen coordinates. | 1088 // Send the invalid rect in screen coordinates. |
| 1089 gfx::Rect screen_rect = GetViewBounds(); | 1089 gfx::Rect screen_rect = GetViewBounds(); |
| 1090 gfx::Rect invalid_screen_rect(rect); | 1090 gfx::Rect invalid_screen_rect(rect); |
| 1091 invalid_screen_rect.Offset(screen_rect.x(), screen_rect.y()); | 1091 invalid_screen_rect.Offset(screen_rect.x(), screen_rect.y()); |
| 1092 HWND hwnd = root_window->GetAcceleratedWidget(); | 1092 HWND hwnd = dispatcher->GetAcceleratedWidget(); |
| 1093 PaintPluginWindowsHelper(hwnd, invalid_screen_rect); | 1093 PaintPluginWindowsHelper(hwnd, invalid_screen_rect); |
| 1094 } | 1094 } |
| 1095 #endif // defined(OS_WIN) | 1095 #endif // defined(OS_WIN) |
| 1096 } | 1096 } |
| 1097 } | 1097 } |
| 1098 | 1098 |
| 1099 void RenderWidgetHostViewAura::RenderProcessGone(base::TerminationStatus status, | 1099 void RenderWidgetHostViewAura::RenderProcessGone(base::TerminationStatus status, |
| 1100 int error_code) { | 1100 int error_code) { |
| 1101 UpdateCursorIfOverSelf(); | 1101 UpdateCursorIfOverSelf(); |
| 1102 Destroy(); | 1102 Destroy(); |
| 1103 } | 1103 } |
| 1104 | 1104 |
| 1105 void RenderWidgetHostViewAura::Destroy() { | 1105 void RenderWidgetHostViewAura::Destroy() { |
| 1106 // Beware, this function is not called on all destruction paths. It will | 1106 // Beware, this function is not called on all destruction paths. It will |
| 1107 // implicitly end up calling ~RenderWidgetHostViewAura though, so all | 1107 // implicitly end up calling ~RenderWidgetHostViewAura though, so all |
| 1108 // destruction/cleanup code should happen there, not here. | 1108 // destruction/cleanup code should happen there, not here. |
| 1109 in_shutdown_ = true; | 1109 in_shutdown_ = true; |
| 1110 delete window_; | 1110 delete window_; |
| 1111 } | 1111 } |
| 1112 | 1112 |
| 1113 void RenderWidgetHostViewAura::SetTooltipText(const string16& tooltip_text) { | 1113 void RenderWidgetHostViewAura::SetTooltipText(const string16& tooltip_text) { |
| 1114 tooltip_ = tooltip_text; | 1114 tooltip_ = tooltip_text; |
| 1115 aura::RootWindow* root_window = window_->GetRootWindow(); | 1115 aura::Window* root_window = window_->GetRootWindow(); |
| 1116 aura::client::TooltipClient* tooltip_client = | 1116 aura::client::TooltipClient* tooltip_client = |
| 1117 aura::client::GetTooltipClient(root_window); | 1117 aura::client::GetTooltipClient(root_window); |
| 1118 if (tooltip_client) { | 1118 if (tooltip_client) { |
| 1119 tooltip_client->UpdateTooltip(window_); | 1119 tooltip_client->UpdateTooltip(window_); |
| 1120 // Content tooltips should be visible indefinitely. | 1120 // Content tooltips should be visible indefinitely. |
| 1121 tooltip_client->SetTooltipShownTimeout(window_, 0); | 1121 tooltip_client->SetTooltipShownTimeout(window_, 0); |
| 1122 } | 1122 } |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 void RenderWidgetHostViewAura::SelectionChanged(const string16& text, | 1125 void RenderWidgetHostViewAura::SelectionChanged(const string16& text, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1151 if (GetInputMethod()) | 1151 if (GetInputMethod()) |
| 1152 GetInputMethod()->OnCaretBoundsChanged(this); | 1152 GetInputMethod()->OnCaretBoundsChanged(this); |
| 1153 | 1153 |
| 1154 if (touch_editing_client_) { | 1154 if (touch_editing_client_) { |
| 1155 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, | 1155 touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, |
| 1156 selection_focus_rect_); | 1156 selection_focus_rect_); |
| 1157 } | 1157 } |
| 1158 } | 1158 } |
| 1159 | 1159 |
| 1160 void RenderWidgetHostViewAura::ScrollOffsetChanged() { | 1160 void RenderWidgetHostViewAura::ScrollOffsetChanged() { |
| 1161 aura::RootWindow* root = window_->GetRootWindow(); | 1161 aura::Window* root = window_->GetRootWindow(); |
| 1162 if (!root) | 1162 if (!root) |
| 1163 return; | 1163 return; |
| 1164 aura::client::CursorClient* cursor_client = | 1164 aura::client::CursorClient* cursor_client = |
| 1165 aura::client::GetCursorClient(root); | 1165 aura::client::GetCursorClient(root); |
| 1166 if (cursor_client && !cursor_client->IsCursorVisible()) | 1166 if (cursor_client && !cursor_client->IsCursorVisible()) |
| 1167 cursor_client->DisableMouseEvents(); | 1167 cursor_client->DisableMouseEvents(); |
| 1168 } | 1168 } |
| 1169 | 1169 |
| 1170 BackingStore* RenderWidgetHostViewAura::AllocBackingStore( | 1170 BackingStore* RenderWidgetHostViewAura::AllocBackingStore( |
| 1171 const gfx::Size& size) { | 1171 const gfx::Size& size) { |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 | 1386 |
| 1387 void RenderWidgetHostViewAura::UpdateConstrainedWindowRects( | 1387 void RenderWidgetHostViewAura::UpdateConstrainedWindowRects( |
| 1388 const std::vector<gfx::Rect>& rects) { | 1388 const std::vector<gfx::Rect>& rects) { |
| 1389 constrained_rects_ = rects; | 1389 constrained_rects_ = rects; |
| 1390 UpdateCutoutRects(); | 1390 UpdateCutoutRects(); |
| 1391 } | 1391 } |
| 1392 | 1392 |
| 1393 void RenderWidgetHostViewAura::UpdateCutoutRects() { | 1393 void RenderWidgetHostViewAura::UpdateCutoutRects() { |
| 1394 if (!window_->GetRootWindow()) | 1394 if (!window_->GetRootWindow()) |
| 1395 return; | 1395 return; |
| 1396 HWND parent = window_->GetRootWindow()->GetAcceleratedWidget(); | 1396 HWND parent = window_->GetDispatcher()->GetAcceleratedWidget(); |
| 1397 CutoutRectsParams params; | 1397 CutoutRectsParams params; |
| 1398 params.widget = this; | 1398 params.widget = this; |
| 1399 params.cutout_rects.assign(transient_rects_.begin(), transient_rects_.end()); | 1399 params.cutout_rects.assign(transient_rects_.begin(), transient_rects_.end()); |
| 1400 params.cutout_rects.insert(params.cutout_rects.end(), | 1400 params.cutout_rects.insert(params.cutout_rects.end(), |
| 1401 constrained_rects_.begin(), | 1401 constrained_rects_.begin(), |
| 1402 constrained_rects_.end()); | 1402 constrained_rects_.end()); |
| 1403 params.geometry = &plugin_window_moves_; | 1403 params.geometry = &plugin_window_moves_; |
| 1404 LPARAM lparam = reinterpret_cast<LPARAM>(¶ms); | 1404 LPARAM lparam = reinterpret_cast<LPARAM>(¶ms); |
| 1405 EnumChildWindows(parent, SetCutoutRectsCallback, lparam); | 1405 EnumChildWindows(parent, SetCutoutRectsCallback, lparam); |
| 1406 } | 1406 } |
| (...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2116 GetScreenInfoForWindow(results, window_->GetRootWindow() ? window_ : NULL); | 2116 GetScreenInfoForWindow(results, window_->GetRootWindow() ? window_ : NULL); |
| 2117 } | 2117 } |
| 2118 | 2118 |
| 2119 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { | 2119 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { |
| 2120 #if defined(OS_WIN) | 2120 #if defined(OS_WIN) |
| 2121 // aura::Window::GetBoundsInScreen doesn't take non-client area into | 2121 // aura::Window::GetBoundsInScreen doesn't take non-client area into |
| 2122 // account. | 2122 // account. |
| 2123 RECT window_rect = {0}; | 2123 RECT window_rect = {0}; |
| 2124 | 2124 |
| 2125 aura::Window* top_level = window_->GetToplevelWindow(); | 2125 aura::Window* top_level = window_->GetToplevelWindow(); |
| 2126 aura::RootWindow* root_window = top_level->GetRootWindow(); | 2126 aura::WindowEventDispatcher* dispatcher = top_level->GetDispatcher(); |
| 2127 if (!root_window) | 2127 if (!dispatcher) |
| 2128 return top_level->GetBoundsInScreen(); | 2128 return top_level->GetBoundsInScreen(); |
| 2129 HWND hwnd = root_window->GetAcceleratedWidget(); | 2129 HWND hwnd = dispatcher->GetAcceleratedWidget(); |
| 2130 ::GetWindowRect(hwnd, &window_rect); | 2130 ::GetWindowRect(hwnd, &window_rect); |
| 2131 gfx::Rect rect(window_rect); | 2131 gfx::Rect rect(window_rect); |
| 2132 | 2132 |
| 2133 // Maximized windows are outdented from the work area by the frame thickness | 2133 // Maximized windows are outdented from the work area by the frame thickness |
| 2134 // even though this "frame" is not painted. This confuses code (and people) | 2134 // even though this "frame" is not painted. This confuses code (and people) |
| 2135 // that think of a maximized window as corresponding exactly to the work area. | 2135 // that think of a maximized window as corresponding exactly to the work area. |
| 2136 // Correct for this by subtracting the frame thickness back off. | 2136 // Correct for this by subtracting the frame thickness back off. |
| 2137 if (::IsZoomed(hwnd)) { | 2137 if (::IsZoomed(hwnd)) { |
| 2138 rect.Inset(GetSystemMetrics(SM_CXSIZEFRAME), | 2138 rect.Inset(GetSystemMetrics(SM_CXSIZEFRAME), |
| 2139 GetSystemMetrics(SM_CYSIZEFRAME)); | 2139 GetSystemMetrics(SM_CYSIZEFRAME)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2151 touch_editing_client_->GestureEventAck(gesture_event_type); | 2151 touch_editing_client_->GestureEventAck(gesture_event_type); |
| 2152 } | 2152 } |
| 2153 | 2153 |
| 2154 void RenderWidgetHostViewAura::ProcessAckedTouchEvent( | 2154 void RenderWidgetHostViewAura::ProcessAckedTouchEvent( |
| 2155 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) { | 2155 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) { |
| 2156 ScopedVector<ui::TouchEvent> events; | 2156 ScopedVector<ui::TouchEvent> events; |
| 2157 if (!MakeUITouchEventsFromWebTouchEvents(touch, &events, | 2157 if (!MakeUITouchEventsFromWebTouchEvents(touch, &events, |
| 2158 SCREEN_COORDINATES)) | 2158 SCREEN_COORDINATES)) |
| 2159 return; | 2159 return; |
| 2160 | 2160 |
| 2161 aura::RootWindow* root = window_->GetRootWindow(); | 2161 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 2162 // |root| is NULL during tests. | 2162 // |dispatcher| is NULL during tests. |
| 2163 if (!root) | 2163 if (!dispatcher) |
| 2164 return; | 2164 return; |
| 2165 | 2165 |
| 2166 ui::EventResult result = (ack_result == | 2166 ui::EventResult result = (ack_result == |
| 2167 INPUT_EVENT_ACK_STATE_CONSUMED) ? ui::ER_HANDLED : ui::ER_UNHANDLED; | 2167 INPUT_EVENT_ACK_STATE_CONSUMED) ? ui::ER_HANDLED : ui::ER_UNHANDLED; |
| 2168 for (ScopedVector<ui::TouchEvent>::iterator iter = events.begin(), | 2168 for (ScopedVector<ui::TouchEvent>::iterator iter = events.begin(), |
| 2169 end = events.end(); iter != end; ++iter) { | 2169 end = events.end(); iter != end; ++iter) { |
| 2170 root->ProcessedTouchEvent((*iter), window_, result); | 2170 dispatcher->ProcessedTouchEvent((*iter), window_, result); |
| 2171 } | 2171 } |
| 2172 } | 2172 } |
| 2173 | 2173 |
| 2174 SyntheticGesture* RenderWidgetHostViewAura::CreateSmoothScrollGesture( | 2174 SyntheticGesture* RenderWidgetHostViewAura::CreateSmoothScrollGesture( |
| 2175 bool scroll_down, | 2175 bool scroll_down, |
| 2176 int pixels_to_scroll, | 2176 int pixels_to_scroll, |
| 2177 int mouse_event_x, | 2177 int mouse_event_x, |
| 2178 int mouse_event_y) { | 2178 int mouse_event_y) { |
| 2179 return new TouchSmoothScrollGestureAura(scroll_down, | 2179 return new TouchSmoothScrollGestureAura(scroll_down, |
| 2180 pixels_to_scroll, | 2180 pixels_to_scroll, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2205 if (shared_surface_handle_.is_null()) { | 2205 if (shared_surface_handle_.is_null()) { |
| 2206 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 2206 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 2207 shared_surface_handle_ = factory->CreateSharedSurfaceHandle(); | 2207 shared_surface_handle_ = factory->CreateSharedSurfaceHandle(); |
| 2208 if (!shared_surface_handle_.is_null()) | 2208 if (!shared_surface_handle_.is_null()) |
| 2209 factory->AddObserver(this); | 2209 factory->AddObserver(this); |
| 2210 } | 2210 } |
| 2211 return shared_surface_handle_; | 2211 return shared_surface_handle_; |
| 2212 } | 2212 } |
| 2213 | 2213 |
| 2214 bool RenderWidgetHostViewAura::LockMouse() { | 2214 bool RenderWidgetHostViewAura::LockMouse() { |
| 2215 aura::RootWindow* root_window = window_->GetRootWindow(); | 2215 aura::Window* root_window = window_->GetRootWindow(); |
| 2216 if (!root_window) | 2216 if (!root_window) |
| 2217 return false; | 2217 return false; |
| 2218 | 2218 |
| 2219 if (mouse_locked_) | 2219 if (mouse_locked_) |
| 2220 return true; | 2220 return true; |
| 2221 | 2221 |
| 2222 mouse_locked_ = true; | 2222 mouse_locked_ = true; |
| 2223 #if !defined(OS_WIN) | 2223 #if !defined(OS_WIN) |
| 2224 window_->SetCapture(); | 2224 window_->SetCapture(); |
| 2225 #endif | 2225 #endif |
| 2226 aura::client::CursorClient* cursor_client = | 2226 aura::client::CursorClient* cursor_client = |
| 2227 aura::client::GetCursorClient(root_window); | 2227 aura::client::GetCursorClient(root_window); |
| 2228 if (cursor_client) { | 2228 if (cursor_client) { |
| 2229 cursor_client->HideCursor(); | 2229 cursor_client->HideCursor(); |
| 2230 cursor_client->LockCursor(); | 2230 cursor_client->LockCursor(); |
| 2231 } | 2231 } |
| 2232 | 2232 |
| 2233 if (ShouldMoveToCenter()) { | 2233 if (ShouldMoveToCenter()) { |
| 2234 synthetic_move_sent_ = true; | 2234 synthetic_move_sent_ = true; |
| 2235 window_->MoveCursorTo(gfx::Rect(window_->bounds().size()).CenterPoint()); | 2235 window_->MoveCursorTo(gfx::Rect(window_->bounds().size()).CenterPoint()); |
| 2236 } | 2236 } |
| 2237 if (aura::client::GetTooltipClient(root_window)) | 2237 if (aura::client::GetTooltipClient(root_window)) |
| 2238 aura::client::GetTooltipClient(root_window)->SetTooltipsEnabled(false); | 2238 aura::client::GetTooltipClient(root_window)->SetTooltipsEnabled(false); |
| 2239 return true; | 2239 return true; |
| 2240 } | 2240 } |
| 2241 | 2241 |
| 2242 void RenderWidgetHostViewAura::UnlockMouse() { | 2242 void RenderWidgetHostViewAura::UnlockMouse() { |
| 2243 aura::RootWindow* root_window = window_->GetRootWindow(); | 2243 aura::Window* root_window = window_->GetRootWindow(); |
| 2244 if (!mouse_locked_ || !root_window) | 2244 if (!mouse_locked_ || !root_window) |
| 2245 return; | 2245 return; |
| 2246 | 2246 |
| 2247 mouse_locked_ = false; | 2247 mouse_locked_ = false; |
| 2248 | 2248 |
| 2249 #if !defined(OS_WIN) | 2249 #if !defined(OS_WIN) |
| 2250 window_->ReleaseCapture(); | 2250 window_->ReleaseCapture(); |
| 2251 #endif | 2251 #endif |
| 2252 window_->MoveCursorTo(unlocked_mouse_position_); | 2252 window_->MoveCursorTo(unlocked_mouse_position_); |
| 2253 aura::client::CursorClient* cursor_client = | 2253 aura::client::CursorClient* cursor_client = |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2342 | 2342 |
| 2343 bool RenderWidgetHostViewAura::CanComposeInline() const { | 2343 bool RenderWidgetHostViewAura::CanComposeInline() const { |
| 2344 return can_compose_inline_; | 2344 return can_compose_inline_; |
| 2345 } | 2345 } |
| 2346 | 2346 |
| 2347 gfx::Rect RenderWidgetHostViewAura::ConvertRectToScreen( | 2347 gfx::Rect RenderWidgetHostViewAura::ConvertRectToScreen( |
| 2348 const gfx::Rect& rect) const { | 2348 const gfx::Rect& rect) const { |
| 2349 gfx::Point origin = rect.origin(); | 2349 gfx::Point origin = rect.origin(); |
| 2350 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); | 2350 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); |
| 2351 | 2351 |
| 2352 aura::RootWindow* root_window = window_->GetRootWindow(); | 2352 aura::Window* root_window = window_->GetRootWindow(); |
| 2353 if (!root_window) | 2353 if (!root_window) |
| 2354 return rect; | 2354 return rect; |
| 2355 aura::client::ScreenPositionClient* screen_position_client = | 2355 aura::client::ScreenPositionClient* screen_position_client = |
| 2356 aura::client::GetScreenPositionClient(root_window); | 2356 aura::client::GetScreenPositionClient(root_window); |
| 2357 if (!screen_position_client) | 2357 if (!screen_position_client) |
| 2358 return rect; | 2358 return rect; |
| 2359 screen_position_client->ConvertPointToScreen(window_, &origin); | 2359 screen_position_client->ConvertPointToScreen(window_, &origin); |
| 2360 screen_position_client->ConvertPointToScreen(window_, &end); | 2360 screen_position_client->ConvertPointToScreen(window_, &end); |
| 2361 return gfx::Rect(origin.x(), | 2361 return gfx::Rect(origin.x(), |
| 2362 origin.y(), | 2362 origin.y(), |
| 2363 end.x() - origin.x(), | 2363 end.x() - origin.x(), |
| 2364 end.y() - origin.y()); | 2364 end.y() - origin.y()); |
| 2365 } | 2365 } |
| 2366 | 2366 |
| 2367 gfx::Rect RenderWidgetHostViewAura::ConvertRectFromScreen( | 2367 gfx::Rect RenderWidgetHostViewAura::ConvertRectFromScreen( |
| 2368 const gfx::Rect& rect) const { | 2368 const gfx::Rect& rect) const { |
| 2369 gfx::Point origin = rect.origin(); | 2369 gfx::Point origin = rect.origin(); |
| 2370 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); | 2370 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); |
| 2371 | 2371 |
| 2372 aura::RootWindow* root_window = window_->GetRootWindow(); | 2372 aura::Window* root_window = window_->GetRootWindow(); |
| 2373 if (root_window) { | 2373 if (root_window) { |
| 2374 aura::client::ScreenPositionClient* screen_position_client = | 2374 aura::client::ScreenPositionClient* screen_position_client = |
| 2375 aura::client::GetScreenPositionClient(root_window); | 2375 aura::client::GetScreenPositionClient(root_window); |
| 2376 screen_position_client->ConvertPointFromScreen(window_, &origin); | 2376 screen_position_client->ConvertPointFromScreen(window_, &origin); |
| 2377 screen_position_client->ConvertPointFromScreen(window_, &end); | 2377 screen_position_client->ConvertPointFromScreen(window_, &end); |
| 2378 return gfx::Rect(origin.x(), | 2378 return gfx::Rect(origin.x(), |
| 2379 origin.y(), | 2379 origin.y(), |
| 2380 end.x() - origin.x(), | 2380 end.x() - origin.x(), |
| 2381 end.y() - origin.y()); | 2381 end.y() - origin.y()); |
| 2382 } | 2382 } |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2608 } | 2608 } |
| 2609 | 2609 |
| 2610 void RenderWidgetHostViewAura::OnWindowDestroying() { | 2610 void RenderWidgetHostViewAura::OnWindowDestroying() { |
| 2611 #if defined(OS_WIN) | 2611 #if defined(OS_WIN) |
| 2612 HWND parent = NULL; | 2612 HWND parent = NULL; |
| 2613 // If the tab was hidden and it's closed, host_->is_hidden would have been | 2613 // If the tab was hidden and it's closed, host_->is_hidden would have been |
| 2614 // reset to false in RenderWidgetHostImpl::RendererExited. | 2614 // reset to false in RenderWidgetHostImpl::RendererExited. |
| 2615 if (!window_->GetRootWindow() || host_->is_hidden()) { | 2615 if (!window_->GetRootWindow() || host_->is_hidden()) { |
| 2616 parent = ui::GetHiddenWindow(); | 2616 parent = ui::GetHiddenWindow(); |
| 2617 } else { | 2617 } else { |
| 2618 parent = window_->GetRootWindow()->GetAcceleratedWidget(); | 2618 parent = window_->GetDispatcher()->GetAcceleratedWidget(); |
| 2619 } | 2619 } |
| 2620 LPARAM lparam = reinterpret_cast<LPARAM>(this); | 2620 LPARAM lparam = reinterpret_cast<LPARAM>(this); |
| 2621 EnumChildWindows(parent, WindowDestroyingCallback, lparam); | 2621 EnumChildWindows(parent, WindowDestroyingCallback, lparam); |
| 2622 #endif | 2622 #endif |
| 2623 | 2623 |
| 2624 // Make sure that the input method no longer references to this object before | 2624 // Make sure that the input method no longer references to this object before |
| 2625 // this object is removed from the root window (i.e. this object loses access | 2625 // this object is removed from the root window (i.e. this object loses access |
| 2626 // to the input method). | 2626 // to the input method). |
| 2627 ui::InputMethod* input_method = GetInputMethod(); | 2627 ui::InputMethod* input_method = GetInputMethod(); |
| 2628 if (input_method) | 2628 if (input_method) |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2812 event->type() == ui::ET_MOUSE_MOVED)) { | 2812 event->type() == ui::ET_MOUSE_MOVED)) { |
| 2813 event->StopPropagation(); | 2813 event->StopPropagation(); |
| 2814 return; | 2814 return; |
| 2815 } | 2815 } |
| 2816 | 2816 |
| 2817 if (event->type() == ui::ET_MOUSEWHEEL) { | 2817 if (event->type() == ui::ET_MOUSEWHEEL) { |
| 2818 #if defined(OS_WIN) | 2818 #if defined(OS_WIN) |
| 2819 // We get mouse wheel/scroll messages even if we are not in the foreground. | 2819 // We get mouse wheel/scroll messages even if we are not in the foreground. |
| 2820 // So here we check if we have any owned popup windows in the foreground and | 2820 // So here we check if we have any owned popup windows in the foreground and |
| 2821 // dismiss them. | 2821 // dismiss them. |
| 2822 aura::RootWindow* root_window = window_->GetRootWindow(); | 2822 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 2823 if (root_window) { | 2823 if (dispatcher) { |
| 2824 HWND parent = root_window->GetAcceleratedWidget(); | 2824 HWND parent = dispatcher->GetAcceleratedWidget(); |
| 2825 HWND toplevel_hwnd = ::GetAncestor(parent, GA_ROOT); | 2825 HWND toplevel_hwnd = ::GetAncestor(parent, GA_ROOT); |
| 2826 EnumThreadWindows(GetCurrentThreadId(), | 2826 EnumThreadWindows(GetCurrentThreadId(), |
| 2827 DismissOwnedPopups, | 2827 DismissOwnedPopups, |
| 2828 reinterpret_cast<LPARAM>(toplevel_hwnd)); | 2828 reinterpret_cast<LPARAM>(toplevel_hwnd)); |
| 2829 } | 2829 } |
| 2830 #endif | 2830 #endif |
| 2831 WebKit::WebMouseWheelEvent mouse_wheel_event = | 2831 WebKit::WebMouseWheelEvent mouse_wheel_event = |
| 2832 MakeWebMouseWheelEvent(static_cast<ui::MouseWheelEvent*>(event)); | 2832 MakeWebMouseWheelEvent(static_cast<ui::MouseWheelEvent*>(event)); |
| 2833 if (mouse_wheel_event.deltaX != 0 || mouse_wheel_event.deltaY != 0) | 2833 if (mouse_wheel_event.deltaX != 0 || mouse_wheel_event.deltaY != 0) |
| 2834 host_->ForwardWheelEvent(mouse_wheel_event); | 2834 host_->ForwardWheelEvent(mouse_wheel_event); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2969 | 2969 |
| 2970 // If a gesture is not processed by the webpage, then WebKit processes it | 2970 // If a gesture is not processed by the webpage, then WebKit processes it |
| 2971 // (e.g. generates synthetic mouse events). | 2971 // (e.g. generates synthetic mouse events). |
| 2972 event->SetHandled(); | 2972 event->SetHandled(); |
| 2973 } | 2973 } |
| 2974 | 2974 |
| 2975 //////////////////////////////////////////////////////////////////////////////// | 2975 //////////////////////////////////////////////////////////////////////////////// |
| 2976 // RenderWidgetHostViewAura, aura::client::ActivationDelegate implementation: | 2976 // RenderWidgetHostViewAura, aura::client::ActivationDelegate implementation: |
| 2977 | 2977 |
| 2978 bool RenderWidgetHostViewAura::ShouldActivate() const { | 2978 bool RenderWidgetHostViewAura::ShouldActivate() const { |
| 2979 aura::RootWindow* root_window = window_->GetRootWindow(); | 2979 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 2980 if (!root_window) | 2980 if (!dispatcher) |
| 2981 return true; | 2981 return true; |
| 2982 const ui::Event* event = root_window->current_event(); | 2982 const ui::Event* event = dispatcher->current_event(); |
| 2983 if (!event) | 2983 if (!event) |
| 2984 return true; | 2984 return true; |
| 2985 return is_fullscreen_; | 2985 return is_fullscreen_; |
| 2986 } | 2986 } |
| 2987 | 2987 |
| 2988 //////////////////////////////////////////////////////////////////////////////// | 2988 //////////////////////////////////////////////////////////////////////////////// |
| 2989 // RenderWidgetHostViewAura, | 2989 // RenderWidgetHostViewAura, |
| 2990 // aura::client::ActivationChangeObserver implementation: | 2990 // aura::client::ActivationChangeObserver implementation: |
| 2991 | 2991 |
| 2992 void RenderWidgetHostViewAura::OnWindowActivated(aura::Window* gained_active, | 2992 void RenderWidgetHostViewAura::OnWindowActivated(aura::Window* gained_active, |
| 2993 aura::Window* lost_active) { | 2993 aura::Window* lost_active) { |
| 2994 DCHECK(window_ == gained_active || window_ == lost_active); | 2994 DCHECK(window_ == gained_active || window_ == lost_active); |
| 2995 if (window_ == gained_active) { | 2995 if (window_ == gained_active) { |
| 2996 const ui::Event* event = window_->GetRootWindow()->current_event(); | 2996 const ui::Event* event = window_->GetDispatcher()->current_event(); |
| 2997 if (event && PointerEventActivates(*event)) | 2997 if (event && PointerEventActivates(*event)) |
| 2998 host_->OnPointerEventActivate(); | 2998 host_->OnPointerEventActivate(); |
| 2999 } | 2999 } |
| 3000 } | 3000 } |
| 3001 | 3001 |
| 3002 //////////////////////////////////////////////////////////////////////////////// | 3002 //////////////////////////////////////////////////////////////////////////////// |
| 3003 // RenderWidgetHostViewAura, aura::client::CursorClientObserver implementation: | 3003 // RenderWidgetHostViewAura, aura::client::CursorClientObserver implementation: |
| 3004 | 3004 |
| 3005 void RenderWidgetHostViewAura::OnCursorVisibilityChanged(bool is_visible) { | 3005 void RenderWidgetHostViewAura::OnCursorVisibilityChanged(bool is_visible) { |
| 3006 NotifyRendererOfCursorVisibilityState(is_visible); | 3006 NotifyRendererOfCursorVisibilityState(is_visible); |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3226 touch_editing_client_->OnViewDestroyed(); | 3226 touch_editing_client_->OnViewDestroyed(); |
| 3227 if (!shared_surface_handle_.is_null()) { | 3227 if (!shared_surface_handle_.is_null()) { |
| 3228 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 3228 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 3229 factory->DestroySharedSurfaceHandle(shared_surface_handle_); | 3229 factory->DestroySharedSurfaceHandle(shared_surface_handle_); |
| 3230 factory->RemoveObserver(this); | 3230 factory->RemoveObserver(this); |
| 3231 } | 3231 } |
| 3232 window_observer_.reset(); | 3232 window_observer_.reset(); |
| 3233 #if defined(OS_WIN) | 3233 #if defined(OS_WIN) |
| 3234 transient_observer_.reset(); | 3234 transient_observer_.reset(); |
| 3235 #endif | 3235 #endif |
| 3236 if (window_->GetRootWindow()) | 3236 if (window_->GetDispatcher()) |
| 3237 window_->GetRootWindow()->RemoveRootWindowObserver(this); | 3237 window_->GetDispatcher()->RemoveRootWindowObserver(this); |
| 3238 UnlockMouse(); | 3238 UnlockMouse(); |
| 3239 if (popup_type_ != WebKit::WebPopupTypeNone && popup_parent_host_view_) { | 3239 if (popup_type_ != WebKit::WebPopupTypeNone && popup_parent_host_view_) { |
| 3240 DCHECK(popup_parent_host_view_->popup_child_host_view_ == NULL || | 3240 DCHECK(popup_parent_host_view_->popup_child_host_view_ == NULL || |
| 3241 popup_parent_host_view_->popup_child_host_view_ == this); | 3241 popup_parent_host_view_->popup_child_host_view_ == this); |
| 3242 popup_parent_host_view_->popup_child_host_view_ = NULL; | 3242 popup_parent_host_view_->popup_child_host_view_ = NULL; |
| 3243 } | 3243 } |
| 3244 if (popup_child_host_view_) { | 3244 if (popup_child_host_view_) { |
| 3245 DCHECK(popup_child_host_view_->popup_parent_host_view_ == NULL || | 3245 DCHECK(popup_child_host_view_->popup_parent_host_view_ == NULL || |
| 3246 popup_child_host_view_->popup_parent_host_view_ == this); | 3246 popup_child_host_view_->popup_parent_host_view_ == this); |
| 3247 popup_child_host_view_->popup_parent_host_view_ = NULL; | 3247 popup_child_host_view_->popup_parent_host_view_ = NULL; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3258 // early. | 3258 // early. |
| 3259 framebuffer_holder_ = NULL; | 3259 framebuffer_holder_ = NULL; |
| 3260 | 3260 |
| 3261 if (resource_collection_.get()) | 3261 if (resource_collection_.get()) |
| 3262 resource_collection_->SetClient(NULL); | 3262 resource_collection_->SetClient(NULL); |
| 3263 } | 3263 } |
| 3264 | 3264 |
| 3265 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { | 3265 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { |
| 3266 const gfx::Point screen_point = | 3266 const gfx::Point screen_point = |
| 3267 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); | 3267 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); |
| 3268 aura::RootWindow* root_window = window_->GetRootWindow(); | 3268 aura::Window* root_window = window_->GetRootWindow(); |
| 3269 if (!root_window) | 3269 if (!root_window) |
| 3270 return; | 3270 return; |
| 3271 | 3271 |
| 3272 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); |
| 3273 |
| 3272 gfx::Rect screen_rect = GetViewBounds(); | 3274 gfx::Rect screen_rect = GetViewBounds(); |
| 3273 gfx::Point local_point = screen_point; | 3275 gfx::Point local_point = screen_point; |
| 3274 local_point.Offset(-screen_rect.x(), -screen_rect.y()); | 3276 local_point.Offset(-screen_rect.x(), -screen_rect.y()); |
| 3275 | 3277 |
| 3276 #if defined(OS_WIN) | 3278 #if defined(OS_WIN) |
| 3277 // If there's another toplevel window above us at this point (for example a | 3279 // If there's another toplevel window above us at this point (for example a |
| 3278 // menu), we don't want to update the cursor. | 3280 // menu), we don't want to update the cursor. |
| 3279 POINT windows_point = { screen_point.x(), screen_point.y() }; | 3281 POINT windows_point = { screen_point.x(), screen_point.y() }; |
| 3280 if (root_window->GetAcceleratedWidget() != ::WindowFromPoint(windows_point)) | 3282 if (dispatcher->GetAcceleratedWidget() != ::WindowFromPoint(windows_point)) |
| 3281 return; | 3283 return; |
| 3282 #endif | 3284 #endif |
| 3283 if (root_window->GetEventHandlerForPoint(local_point) != window_) | 3285 if (root_window->GetEventHandlerForPoint(local_point) != window_) |
| 3284 return; | 3286 return; |
| 3285 | 3287 |
| 3286 gfx::NativeCursor cursor = current_cursor_.GetNativeCursor(); | 3288 gfx::NativeCursor cursor = current_cursor_.GetNativeCursor(); |
| 3287 // Do not show loading cursor when the cursor is currently hidden. | 3289 // Do not show loading cursor when the cursor is currently hidden. |
| 3288 if (is_loading_ && cursor != ui::kCursorNone) | 3290 if (is_loading_ && cursor != ui::kCursorNone) |
| 3289 cursor = ui::kCursorPointer; | 3291 cursor = ui::kCursorPointer; |
| 3290 | 3292 |
| 3291 aura::client::CursorClient* cursor_client = | 3293 aura::client::CursorClient* cursor_client = |
| 3292 aura::client::GetCursorClient(root_window); | 3294 aura::client::GetCursorClient(root_window); |
| 3293 if (cursor_client) { | 3295 if (cursor_client) { |
| 3294 cursor_client->SetCursor(cursor); | 3296 cursor_client->SetCursor(cursor); |
| 3295 } | 3297 } |
| 3296 } | 3298 } |
| 3297 | 3299 |
| 3298 ui::InputMethod* RenderWidgetHostViewAura::GetInputMethod() const { | 3300 ui::InputMethod* RenderWidgetHostViewAura::GetInputMethod() const { |
| 3299 aura::RootWindow* root_window = window_->GetRootWindow(); | 3301 aura::Window* root_window = window_->GetRootWindow(); |
| 3300 if (!root_window) | 3302 if (!root_window) |
| 3301 return NULL; | 3303 return NULL; |
| 3302 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey); | 3304 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey); |
| 3303 } | 3305 } |
| 3304 | 3306 |
| 3305 bool RenderWidgetHostViewAura::NeedsInputGrab() { | 3307 bool RenderWidgetHostViewAura::NeedsInputGrab() { |
| 3306 return popup_type_ == WebKit::WebPopupTypeSelect; | 3308 return popup_type_ == WebKit::WebPopupTypeSelect; |
| 3307 } | 3309 } |
| 3308 | 3310 |
| 3309 void RenderWidgetHostViewAura::FinishImeCompositionSession() { | 3311 void RenderWidgetHostViewAura::FinishImeCompositionSession() { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3398 DCHECK(compositor); | 3400 DCHECK(compositor); |
| 3399 | 3401 |
| 3400 if (!compositor->HasObserver(this)) | 3402 if (!compositor->HasObserver(this)) |
| 3401 compositor->AddObserver(this); | 3403 compositor->AddObserver(this); |
| 3402 | 3404 |
| 3403 can_lock_compositor_ = NO_PENDING_COMMIT; | 3405 can_lock_compositor_ = NO_PENDING_COMMIT; |
| 3404 on_compositing_did_commit_callbacks_.push_back(callback); | 3406 on_compositing_did_commit_callbacks_.push_back(callback); |
| 3405 } | 3407 } |
| 3406 | 3408 |
| 3407 void RenderWidgetHostViewAura::AddedToRootWindow() { | 3409 void RenderWidgetHostViewAura::AddedToRootWindow() { |
| 3408 window_->GetRootWindow()->AddRootWindowObserver(this); | 3410 window_->GetDispatcher()->AddRootWindowObserver(this); |
| 3409 host_->ParentChanged(GetNativeViewId()); | 3411 host_->ParentChanged(GetNativeViewId()); |
| 3410 UpdateScreenInfo(window_); | 3412 UpdateScreenInfo(window_); |
| 3411 if (popup_type_ != WebKit::WebPopupTypeNone) | 3413 if (popup_type_ != WebKit::WebPopupTypeNone) |
| 3412 event_filter_for_popup_exit_.reset(new EventFilterForPopupExit(this)); | 3414 event_filter_for_popup_exit_.reset(new EventFilterForPopupExit(this)); |
| 3413 | 3415 |
| 3414 aura::client::CursorClient* cursor_client = | 3416 aura::client::CursorClient* cursor_client = |
| 3415 aura::client::GetCursorClient(window_->GetRootWindow()); | 3417 aura::client::GetCursorClient(window_->GetRootWindow()); |
| 3416 if (cursor_client) { | 3418 if (cursor_client) { |
| 3417 cursor_client->AddObserver(this); | 3419 cursor_client->AddObserver(this); |
| 3418 NotifyRendererOfCursorVisibilityState(cursor_client->IsCursorVisible()); | 3420 NotifyRendererOfCursorVisibilityState(cursor_client->IsCursorVisible()); |
| 3419 } | 3421 } |
| 3420 if (current_surface_.get()) | 3422 if (current_surface_.get()) |
| 3421 UpdateExternalTexture(); | 3423 UpdateExternalTexture(); |
| 3422 } | 3424 } |
| 3423 | 3425 |
| 3424 void RenderWidgetHostViewAura::RemovingFromRootWindow() { | 3426 void RenderWidgetHostViewAura::RemovingFromRootWindow() { |
| 3425 aura::client::CursorClient* cursor_client = | 3427 aura::client::CursorClient* cursor_client = |
| 3426 aura::client::GetCursorClient(window_->GetRootWindow()); | 3428 aura::client::GetCursorClient(window_->GetRootWindow()); |
| 3427 if (cursor_client) | 3429 if (cursor_client) |
| 3428 cursor_client->RemoveObserver(this); | 3430 cursor_client->RemoveObserver(this); |
| 3429 | 3431 |
| 3430 event_filter_for_popup_exit_.reset(); | 3432 event_filter_for_popup_exit_.reset(); |
| 3431 window_->GetRootWindow()->RemoveRootWindowObserver(this); | 3433 window_->GetDispatcher()->RemoveRootWindowObserver(this); |
| 3432 host_->ParentChanged(0); | 3434 host_->ParentChanged(0); |
| 3433 ui::Compositor* compositor = GetCompositor(); | 3435 ui::Compositor* compositor = GetCompositor(); |
| 3434 if (current_surface_.get()) { | 3436 if (current_surface_.get()) { |
| 3435 // We can't get notification for commits after this point, which would | 3437 // We can't get notification for commits after this point, which would |
| 3436 // guarantee that the compositor isn't using an old texture any more, so | 3438 // guarantee that the compositor isn't using an old texture any more, so |
| 3437 // instead we force the layer to stop using any external resources which | 3439 // instead we force the layer to stop using any external resources which |
| 3438 // synchronizes with the compositor thread, and makes it safe to run the | 3440 // synchronizes with the compositor thread, and makes it safe to run the |
| 3439 // callback. | 3441 // callback. |
| 3440 window_->layer()->SetShowPaintedContent(); | 3442 window_->layer()->SetShowPaintedContent(); |
| 3441 } | 3443 } |
| 3442 RunOnCommitCallbacks(); | 3444 RunOnCommitCallbacks(); |
| 3443 resize_lock_.reset(); | 3445 resize_lock_.reset(); |
| 3444 host_->WasResized(); | 3446 host_->WasResized(); |
| 3445 if (compositor && compositor->HasObserver(this)) | 3447 if (compositor && compositor->HasObserver(this)) |
| 3446 compositor->RemoveObserver(this); | 3448 compositor->RemoveObserver(this); |
| 3447 } | 3449 } |
| 3448 | 3450 |
| 3449 ui::Compositor* RenderWidgetHostViewAura::GetCompositor() const { | 3451 ui::Compositor* RenderWidgetHostViewAura::GetCompositor() const { |
| 3450 aura::RootWindow* root_window = window_->GetRootWindow(); | 3452 aura::WindowEventDispatcher* dispatcher = window_->GetDispatcher(); |
| 3451 return root_window ? root_window->compositor() : NULL; | 3453 return dispatcher ? dispatcher->compositor() : NULL; |
| 3452 } | 3454 } |
| 3453 | 3455 |
| 3454 void RenderWidgetHostViewAura::DetachFromInputMethod() { | 3456 void RenderWidgetHostViewAura::DetachFromInputMethod() { |
| 3455 ui::InputMethod* input_method = GetInputMethod(); | 3457 ui::InputMethod* input_method = GetInputMethod(); |
| 3456 if (input_method && input_method->GetTextInputClient() == this) | 3458 if (input_method && input_method->GetTextInputClient() == this) |
| 3457 input_method->SetFocusedTextInputClient(NULL); | 3459 input_method->SetFocusedTextInputClient(NULL); |
| 3458 } | 3460 } |
| 3459 | 3461 |
| 3460 //////////////////////////////////////////////////////////////////////////////// | 3462 //////////////////////////////////////////////////////////////////////////////// |
| 3461 // RenderWidgetHostView, public: | 3463 // RenderWidgetHostView, public: |
| 3462 | 3464 |
| 3463 // static | 3465 // static |
| 3464 RenderWidgetHostView* RenderWidgetHostView::CreateViewForWidget( | 3466 RenderWidgetHostView* RenderWidgetHostView::CreateViewForWidget( |
| 3465 RenderWidgetHost* widget) { | 3467 RenderWidgetHost* widget) { |
| 3466 return new RenderWidgetHostViewAura(widget); | 3468 return new RenderWidgetHostViewAura(widget); |
| 3467 } | 3469 } |
| 3468 | 3470 |
| 3469 // static | 3471 // static |
| 3470 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { | 3472 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { |
| 3471 GetScreenInfoForWindow(results, NULL); | 3473 GetScreenInfoForWindow(results, NULL); |
| 3472 } | 3474 } |
| 3473 | 3475 |
| 3474 } // namespace content | 3476 } // namespace content |
| OLD | NEW |