| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/ui/views/extensions/extension_view.h" | 5 #include "chrome/browser/ui/views/extensions/extension_view.h" |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/extension_host.h" | 7 #include "chrome/browser/extensions/extension_host.h" |
| 8 #include "chrome/browser/ui/views/extensions/extension_popup.h" | 8 #include "chrome/browser/ui/views/extensions/extension_popup.h" |
| 9 #include "content/browser/renderer_host/render_view_host.h" | 9 #include "content/browser/renderer_host/render_view_host.h" |
| 10 #include "content/browser/renderer_host/render_widget_host_view.h" | 10 #include "content/browser/renderer_host/render_widget_host_view.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 : host_(host), | 22 : host_(host), |
| 23 browser_(browser), | 23 browser_(browser), |
| 24 initialized_(false), | 24 initialized_(false), |
| 25 container_(NULL), | 25 container_(NULL), |
| 26 is_clipped_(false) { | 26 is_clipped_(false) { |
| 27 host_->set_view(this); | 27 host_->set_view(this); |
| 28 | 28 |
| 29 // This view needs to be focusable so it can act as the focused view for the | 29 // This view needs to be focusable so it can act as the focused view for the |
| 30 // focus manager. This is required to have SkipDefaultKeyEventProcessing | 30 // focus manager. This is required to have SkipDefaultKeyEventProcessing |
| 31 // called so the tab key events are forwarded to the renderer. | 31 // called so the tab key events are forwarded to the renderer. |
| 32 SetFocusable(true); | 32 set_focusable(true); |
| 33 } | 33 } |
| 34 | 34 |
| 35 ExtensionView::~ExtensionView() { | 35 ExtensionView::~ExtensionView() { |
| 36 if (parent()) | 36 if (parent()) |
| 37 parent()->RemoveChildView(this); | 37 parent()->RemoveChildView(this); |
| 38 CleanUp(); | 38 CleanUp(); |
| 39 } | 39 } |
| 40 | 40 |
| 41 const Extension* ExtensionView::extension() const { | 41 const Extension* ExtensionView::extension() const { |
| 42 return host_->extension(); | 42 return host_->extension(); |
| 43 } | 43 } |
| 44 | 44 |
| 45 RenderViewHost* ExtensionView::render_view_host() const { | 45 RenderViewHost* ExtensionView::render_view_host() const { |
| 46 return host_->render_view_host(); | 46 return host_->render_view_host(); |
| 47 } | 47 } |
| 48 | 48 |
| 49 void ExtensionView::DidStopLoading() { | 49 void ExtensionView::DidStopLoading() { |
| 50 ShowIfCompletelyLoaded(); | 50 ShowIfCompletelyLoaded(); |
| 51 } | 51 } |
| 52 | 52 |
| 53 void ExtensionView::SetIsClipped(bool is_clipped) { | 53 void ExtensionView::SetIsClipped(bool is_clipped) { |
| 54 if (is_clipped_ != is_clipped) { | 54 if (is_clipped_ != is_clipped) { |
| 55 is_clipped_ = is_clipped; | 55 is_clipped_ = is_clipped; |
| 56 if (IsVisible()) | 56 if (visible()) |
| 57 ShowIfCompletelyLoaded(); | 57 ShowIfCompletelyLoaded(); |
| 58 } | 58 } |
| 59 } | 59 } |
| 60 | 60 |
| 61 gfx::NativeCursor ExtensionView::GetCursor(const views::MouseEvent& event) { | 61 gfx::NativeCursor ExtensionView::GetCursor(const views::MouseEvent& event) { |
| 62 return NULL; | 62 return NULL; |
| 63 } | 63 } |
| 64 | 64 |
| 65 void ExtensionView::SetVisible(bool is_visible) { | 65 void ExtensionView::SetVisible(bool is_visible) { |
| 66 if (is_visible != IsVisible()) { | 66 if (is_visible != visible()) { |
| 67 NativeViewHost::SetVisible(is_visible); | 67 NativeViewHost::SetVisible(is_visible); |
| 68 | 68 |
| 69 // Also tell RenderWidgetHostView the new visibility. Despite its name, it | 69 // Also tell RenderWidgetHostView the new visibility. Despite its name, it |
| 70 // is not part of the View hierarchy and does not know about the change | 70 // is not part of the View hierarchy and does not know about the change |
| 71 // unless we tell it. | 71 // unless we tell it. |
| 72 if (render_view_host()->view()) { | 72 if (render_view_host()->view()) { |
| 73 if (is_visible) | 73 if (is_visible) |
| 74 render_view_host()->view()->Show(); | 74 render_view_host()->view()->Show(); |
| 75 else | 75 else |
| 76 render_view_host()->view()->Hide(); | 76 render_view_host()->view()->Hide(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 Attach(view_gtk->GetNativeView()); | 108 Attach(view_gtk->GetNativeView()); |
| 109 #else | 109 #else |
| 110 NOTIMPLEMENTED(); | 110 NOTIMPLEMENTED(); |
| 111 #endif | 111 #endif |
| 112 | 112 |
| 113 host_->CreateRenderViewSoon(view); | 113 host_->CreateRenderViewSoon(view); |
| 114 SetVisible(false); | 114 SetVisible(false); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void ExtensionView::ShowIfCompletelyLoaded() { | 117 void ExtensionView::ShowIfCompletelyLoaded() { |
| 118 if (IsVisible() || is_clipped_) | 118 if (visible() || is_clipped_) |
| 119 return; | 119 return; |
| 120 | 120 |
| 121 // We wait to show the ExtensionView until it has loaded, and the view has | 121 // We wait to show the ExtensionView until it has loaded, and the view has |
| 122 // actually been created. These can happen in different orders. | 122 // actually been created. These can happen in different orders. |
| 123 if (host_->did_stop_loading()) { | 123 if (host_->did_stop_loading()) { |
| 124 SetVisible(true); | 124 SetVisible(true); |
| 125 UpdatePreferredSize(pending_preferred_size_); | 125 UpdatePreferredSize(pending_preferred_size_); |
| 126 } | 126 } |
| 127 } | 127 } |
| 128 | 128 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 139 render_view_host()->view()->SetBackground(background); | 139 render_view_host()->view()->SetBackground(background); |
| 140 } else { | 140 } else { |
| 141 pending_background_ = background; | 141 pending_background_ = background; |
| 142 } | 142 } |
| 143 ShowIfCompletelyLoaded(); | 143 ShowIfCompletelyLoaded(); |
| 144 } | 144 } |
| 145 | 145 |
| 146 void ExtensionView::UpdatePreferredSize(const gfx::Size& new_size) { | 146 void ExtensionView::UpdatePreferredSize(const gfx::Size& new_size) { |
| 147 // Don't actually do anything with this information until we have been shown. | 147 // Don't actually do anything with this information until we have been shown. |
| 148 // Size changes will not be honored by lower layers while we are hidden. | 148 // Size changes will not be honored by lower layers while we are hidden. |
| 149 if (!IsVisible()) { | 149 if (!visible()) { |
| 150 pending_preferred_size_ = new_size; | 150 pending_preferred_size_ = new_size; |
| 151 return; | 151 return; |
| 152 } | 152 } |
| 153 | 153 |
| 154 gfx::Size preferred_size = GetPreferredSize(); | 154 gfx::Size preferred_size = GetPreferredSize(); |
| 155 if (new_size != preferred_size) | 155 if (new_size != preferred_size) |
| 156 SetPreferredSize(new_size); | 156 SetPreferredSize(new_size); |
| 157 } | 157 } |
| 158 | 158 |
| 159 void ExtensionView::ViewHierarchyChanged(bool is_add, | 159 void ExtensionView::ViewHierarchyChanged(bool is_add, |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 render_view_host()->view()->SetBackground(pending_background_); | 198 render_view_host()->view()->SetBackground(pending_background_); |
| 199 pending_background_.reset(); | 199 pending_background_.reset(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 // Tell the renderer not to draw scroll bars in popups unless the | 202 // Tell the renderer not to draw scroll bars in popups unless the |
| 203 // popups are at the maximum allowed size. | 203 // popups are at the maximum allowed size. |
| 204 gfx::Size largest_popup_size(ExtensionPopup::kMaxWidth, | 204 gfx::Size largest_popup_size(ExtensionPopup::kMaxWidth, |
| 205 ExtensionPopup::kMaxHeight); | 205 ExtensionPopup::kMaxHeight); |
| 206 host_->DisableScrollbarsForSmallWindows(largest_popup_size); | 206 host_->DisableScrollbarsForSmallWindows(largest_popup_size); |
| 207 } | 207 } |
| OLD | NEW |