| 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/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 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 window_->SetBounds(rect); | 460 window_->SetBounds(rect); |
| 461 host_->WasResized(); | 461 host_->WasResized(); |
| 462 } | 462 } |
| 463 | 463 |
| 464 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { | 464 gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { |
| 465 return window_; | 465 return window_; |
| 466 } | 466 } |
| 467 | 467 |
| 468 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const { | 468 gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const { |
| 469 #if defined(OS_WIN) | 469 #if defined(OS_WIN) |
| 470 HWND window = window_->GetRootWindow()->GetAcceleratedWidget(); | 470 aura::RootWindow* root_window = window_->GetRootWindow(); |
| 471 return reinterpret_cast<gfx::NativeViewId>(window); | 471 if (root_window) { |
| 472 #else | 472 HWND window = root_window->GetAcceleratedWidget(); |
| 473 return reinterpret_cast<gfx::NativeViewId>(window); |
| 474 } |
| 475 #endif |
| 473 return static_cast<gfx::NativeViewId>(NULL); | 476 return static_cast<gfx::NativeViewId>(NULL); |
| 474 #endif | |
| 475 } | 477 } |
| 476 | 478 |
| 477 gfx::NativeViewAccessible RenderWidgetHostViewAura::GetNativeViewAccessible() { | 479 gfx::NativeViewAccessible RenderWidgetHostViewAura::GetNativeViewAccessible() { |
| 478 NOTIMPLEMENTED(); | 480 NOTIMPLEMENTED(); |
| 479 return static_cast<gfx::NativeViewAccessible>(NULL); | 481 return static_cast<gfx::NativeViewAccessible>(NULL); |
| 480 } | 482 } |
| 481 | 483 |
| 482 void RenderWidgetHostViewAura::MovePluginWindows( | 484 void RenderWidgetHostViewAura::MovePluginWindows( |
| 483 const gfx::Vector2d& scroll_offset, | 485 const gfx::Vector2d& scroll_offset, |
| 484 const std::vector<webkit::npapi::WebPluginGeometry>& plugin_window_moves) { | 486 const std::vector<webkit::npapi::WebPluginGeometry>& plugin_window_moves) { |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 gfx::Rect clip_rect; | 619 gfx::Rect clip_rect; |
| 618 if (paint_canvas_) { | 620 if (paint_canvas_) { |
| 619 SkRect sk_clip_rect; | 621 SkRect sk_clip_rect; |
| 620 if (paint_canvas_->sk_canvas()->getClipBounds(&sk_clip_rect)) | 622 if (paint_canvas_->sk_canvas()->getClipBounds(&sk_clip_rect)) |
| 621 clip_rect = gfx::ToEnclosingRect(gfx::SkRectToRectF(sk_clip_rect)); | 623 clip_rect = gfx::ToEnclosingRect(gfx::SkRectToRectF(sk_clip_rect)); |
| 622 } | 624 } |
| 623 | 625 |
| 624 if (!scroll_rect.IsEmpty()) | 626 if (!scroll_rect.IsEmpty()) |
| 625 SchedulePaintIfNotInClip(scroll_rect, clip_rect); | 627 SchedulePaintIfNotInClip(scroll_rect, clip_rect); |
| 626 | 628 |
| 629 #if defined(OS_WIN) |
| 630 aura::RootWindow* root_window = window_->GetRootWindow(); |
| 631 #endif |
| 627 for (size_t i = 0; i < copy_rects.size(); ++i) { | 632 for (size_t i = 0; i < copy_rects.size(); ++i) { |
| 628 gfx::Rect rect = gfx::SubtractRects(copy_rects[i], scroll_rect); | 633 gfx::Rect rect = gfx::SubtractRects(copy_rects[i], scroll_rect); |
| 629 if (rect.IsEmpty()) | 634 if (rect.IsEmpty()) |
| 630 continue; | 635 continue; |
| 631 | 636 |
| 632 SchedulePaintIfNotInClip(rect, clip_rect); | 637 SchedulePaintIfNotInClip(rect, clip_rect); |
| 633 | 638 |
| 634 #if defined(OS_WIN) | 639 #if defined(OS_WIN) |
| 635 // Send the invalid rect in screen coordinates. | 640 if (root_window) { |
| 636 gfx::Rect screen_rect = GetViewBounds(); | 641 // Send the invalid rect in screen coordinates. |
| 637 gfx::Rect invalid_screen_rect(rect); | 642 gfx::Rect screen_rect = GetViewBounds(); |
| 638 invalid_screen_rect.Offset(screen_rect.x(), screen_rect.y()); | 643 gfx::Rect invalid_screen_rect(rect); |
| 639 HWND hwnd = window_->GetRootWindow()->GetAcceleratedWidget(); | 644 invalid_screen_rect.Offset(screen_rect.x(), screen_rect.y()); |
| 640 PaintPluginWindowsHelper(hwnd, invalid_screen_rect); | 645 HWND hwnd = root_window->GetAcceleratedWidget(); |
| 646 PaintPluginWindowsHelper(hwnd, invalid_screen_rect); |
| 647 } |
| 641 #endif // defined(OS_WIN) | 648 #endif // defined(OS_WIN) |
| 642 } | 649 } |
| 643 } | 650 } |
| 644 | 651 |
| 645 void RenderWidgetHostViewAura::RenderViewGone(base::TerminationStatus status, | 652 void RenderWidgetHostViewAura::RenderViewGone(base::TerminationStatus status, |
| 646 int error_code) { | 653 int error_code) { |
| 647 UpdateCursorIfOverSelf(); | 654 UpdateCursorIfOverSelf(); |
| 648 Destroy(); | 655 Destroy(); |
| 649 } | 656 } |
| 650 | 657 |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 --render_widget_host_view->pending_thumbnail_tasks_; | 1020 --render_widget_host_view->pending_thumbnail_tasks_; |
| 1014 } | 1021 } |
| 1015 | 1022 |
| 1016 void RenderWidgetHostViewAura::SetBackground(const SkBitmap& background) { | 1023 void RenderWidgetHostViewAura::SetBackground(const SkBitmap& background) { |
| 1017 RenderWidgetHostViewBase::SetBackground(background); | 1024 RenderWidgetHostViewBase::SetBackground(background); |
| 1018 host_->SetBackground(background); | 1025 host_->SetBackground(background); |
| 1019 window_->layer()->SetFillsBoundsOpaquely(background.isOpaque()); | 1026 window_->layer()->SetFillsBoundsOpaquely(background.isOpaque()); |
| 1020 } | 1027 } |
| 1021 | 1028 |
| 1022 void RenderWidgetHostViewAura::GetScreenInfo(WebScreenInfo* results) { | 1029 void RenderWidgetHostViewAura::GetScreenInfo(WebScreenInfo* results) { |
| 1023 GetScreenInfoForWindow(results, window_); | 1030 GetScreenInfoForWindow(results, window_->GetRootWindow() ? window_ : NULL); |
| 1024 } | 1031 } |
| 1025 | 1032 |
| 1026 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { | 1033 gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { |
| 1027 return window_->GetToplevelWindow()->GetBoundsInScreen(); | 1034 return window_->GetToplevelWindow()->GetBoundsInScreen(); |
| 1028 } | 1035 } |
| 1029 | 1036 |
| 1030 void RenderWidgetHostViewAura::ProcessAckedTouchEvent( | 1037 void RenderWidgetHostViewAura::ProcessAckedTouchEvent( |
| 1031 const WebKit::WebTouchEvent& touch_event, InputEventAckState ack_result) { | 1038 const WebKit::WebTouchEvent& touch_event, InputEventAckState ack_result) { |
| 1032 ScopedVector<ui::TouchEvent> events; | 1039 ScopedVector<ui::TouchEvent> events; |
| 1033 if (!MakeUITouchEventsFromWebTouchEvents(touch_event, &events)) | 1040 if (!MakeUITouchEventsFromWebTouchEvents(touch_event, &events)) |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1176 | 1183 |
| 1177 bool RenderWidgetHostViewAura::CanComposeInline() const { | 1184 bool RenderWidgetHostViewAura::CanComposeInline() const { |
| 1178 return can_compose_inline_; | 1185 return can_compose_inline_; |
| 1179 } | 1186 } |
| 1180 | 1187 |
| 1181 gfx::Rect RenderWidgetHostViewAura::ConvertRectToScreen(const gfx::Rect& rect) { | 1188 gfx::Rect RenderWidgetHostViewAura::ConvertRectToScreen(const gfx::Rect& rect) { |
| 1182 gfx::Point origin = rect.origin(); | 1189 gfx::Point origin = rect.origin(); |
| 1183 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); | 1190 gfx::Point end = gfx::Point(rect.right(), rect.bottom()); |
| 1184 | 1191 |
| 1185 aura::RootWindow* root_window = window_->GetRootWindow(); | 1192 aura::RootWindow* root_window = window_->GetRootWindow(); |
| 1186 aura::client::ScreenPositionClient* screen_position_client = | 1193 if (root_window) { |
| 1187 aura::client::GetScreenPositionClient(root_window); | 1194 aura::client::ScreenPositionClient* screen_position_client = |
| 1188 screen_position_client->ConvertPointToScreen(window_, &origin); | 1195 aura::client::GetScreenPositionClient(root_window); |
| 1189 screen_position_client->ConvertPointToScreen(window_, &end); | 1196 screen_position_client->ConvertPointToScreen(window_, &origin); |
| 1190 return gfx::Rect(origin.x(), | 1197 screen_position_client->ConvertPointToScreen(window_, &end); |
| 1191 origin.y(), | 1198 return gfx::Rect(origin.x(), |
| 1192 end.x() - origin.x(), | 1199 origin.y(), |
| 1193 end.y() - origin.y()); | 1200 end.x() - origin.x(), |
| 1201 end.y() - origin.y()); |
| 1202 } |
| 1203 |
| 1204 return rect; |
| 1194 } | 1205 } |
| 1195 | 1206 |
| 1196 gfx::Rect RenderWidgetHostViewAura::GetCaretBounds() { | 1207 gfx::Rect RenderWidgetHostViewAura::GetCaretBounds() { |
| 1197 const gfx::Rect rect = | 1208 const gfx::Rect rect = |
| 1198 gfx::UnionRects(selection_start_rect_, selection_end_rect_); | 1209 gfx::UnionRects(selection_start_rect_, selection_end_rect_); |
| 1199 return ConvertRectToScreen(rect); | 1210 return ConvertRectToScreen(rect); |
| 1200 } | 1211 } |
| 1201 | 1212 |
| 1202 bool RenderWidgetHostViewAura::GetCompositionCharacterBounds(uint32 index, | 1213 bool RenderWidgetHostViewAura::GetCompositionCharacterBounds(uint32 index, |
| 1203 gfx::Rect* rect) { | 1214 gfx::Rect* rect) { |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1675 | 1686 |
| 1676 // If a gesture is not processed by the webpage, then WebKit processes it | 1687 // If a gesture is not processed by the webpage, then WebKit processes it |
| 1677 // (e.g. generates synthetic mouse events). | 1688 // (e.g. generates synthetic mouse events). |
| 1678 event->SetHandled(); | 1689 event->SetHandled(); |
| 1679 } | 1690 } |
| 1680 | 1691 |
| 1681 //////////////////////////////////////////////////////////////////////////////// | 1692 //////////////////////////////////////////////////////////////////////////////// |
| 1682 // RenderWidgetHostViewAura, aura::client::ActivationDelegate implementation: | 1693 // RenderWidgetHostViewAura, aura::client::ActivationDelegate implementation: |
| 1683 | 1694 |
| 1684 bool RenderWidgetHostViewAura::ShouldActivate() const { | 1695 bool RenderWidgetHostViewAura::ShouldActivate() const { |
| 1685 const ui::Event* event = window_->GetRootWindow()->current_event(); | 1696 aura::RootWindow* root_window = window_->GetRootWindow(); |
| 1697 if (!root_window) |
| 1698 return true; |
| 1699 const ui::Event* event = root_window->current_event(); |
| 1686 if (!event) | 1700 if (!event) |
| 1687 return true; | 1701 return true; |
| 1688 return is_fullscreen_; | 1702 return is_fullscreen_; |
| 1689 } | 1703 } |
| 1690 | 1704 |
| 1691 //////////////////////////////////////////////////////////////////////////////// | 1705 //////////////////////////////////////////////////////////////////////////////// |
| 1692 // RenderWidgetHostViewAura, | 1706 // RenderWidgetHostViewAura, |
| 1693 // aura::client::ActivationChangeObserver implementation: | 1707 // aura::client::ActivationChangeObserver implementation: |
| 1694 | 1708 |
| 1695 void RenderWidgetHostViewAura::OnWindowActivated(aura::Window* gained_active, | 1709 void RenderWidgetHostViewAura::OnWindowActivated(aura::Window* gained_active, |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2002 RenderWidgetHost* widget) { | 2016 RenderWidgetHost* widget) { |
| 2003 return new RenderWidgetHostViewAura(widget); | 2017 return new RenderWidgetHostViewAura(widget); |
| 2004 } | 2018 } |
| 2005 | 2019 |
| 2006 // static | 2020 // static |
| 2007 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { | 2021 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { |
| 2008 GetScreenInfoForWindow(results, NULL); | 2022 GetScreenInfoForWindow(results, NULL); |
| 2009 } | 2023 } |
| 2010 | 2024 |
| 2011 } // namespace content | 2025 } // namespace content |
| OLD | NEW |