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

Side by Side Diff: chrome/browser/ui/views/extensions/extension_view.cc

Issue 9702068: Move extension pop-ups and notifications to the new auto-resize code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: small update Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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 "chrome/common/chrome_view_type.h"
9 #include "content/public/browser/content_browser_client.h" 10 #include "content/public/browser/content_browser_client.h"
10 #include "content/public/browser/render_view_host.h" 11 #include "content/public/browser/render_view_host.h"
11 #include "content/public/browser/render_widget_host_view.h" 12 #include "content/public/browser/render_widget_host_view.h"
12 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
13 #include "content/public/browser/web_contents_view.h" 14 #include "content/public/browser/web_contents_view.h"
14 #include "ui/views/widget/widget.h" 15 #include "ui/views/widget/widget.h"
15 16
16 ExtensionView::ExtensionView(ExtensionHost* host, Browser* browser) 17 ExtensionView::ExtensionView(ExtensionHost* host, Browser* browser)
17 : host_(host), 18 : host_(host),
18 browser_(browser), 19 browser_(browser),
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 } 83 }
83 84
84 void ExtensionView::ShowIfCompletelyLoaded() { 85 void ExtensionView::ShowIfCompletelyLoaded() {
85 if (visible() || is_clipped_) 86 if (visible() || is_clipped_)
86 return; 87 return;
87 88
88 // We wait to show the ExtensionView until it has loaded, and the view has 89 // We wait to show the ExtensionView until it has loaded, and the view has
89 // actually been created. These can happen in different orders. 90 // actually been created. These can happen in different orders.
90 if (host_->did_stop_loading()) { 91 if (host_->did_stop_loading()) {
91 SetVisible(true); 92 SetVisible(true);
92 UpdatePreferredSize(pending_preferred_size_); 93 ResizeDueToAutoResize(pending_preferred_size_);
93 } 94 }
94 } 95 }
95 96
96 void ExtensionView::CleanUp() { 97 void ExtensionView::CleanUp() {
97 if (!initialized_) 98 if (!initialized_)
98 return; 99 return;
99 if (native_view()) 100 if (native_view())
100 Detach(); 101 Detach();
101 initialized_ = false; 102 initialized_ = false;
102 } 103 }
103 104
104 void ExtensionView::SetBackground(const SkBitmap& background) { 105 void ExtensionView::SetBackground(const SkBitmap& background) {
105 if (render_view_host()->IsRenderViewLive() && render_view_host()->GetView()) { 106 if (render_view_host()->IsRenderViewLive() && render_view_host()->GetView()) {
106 render_view_host()->GetView()->SetBackground(background); 107 render_view_host()->GetView()->SetBackground(background);
107 } else { 108 } else {
108 pending_background_ = background; 109 pending_background_ = background;
109 } 110 }
110 ShowIfCompletelyLoaded(); 111 ShowIfCompletelyLoaded();
111 } 112 }
112 113
113 void ExtensionView::UpdatePreferredSize(const gfx::Size& new_size) { 114 void ExtensionView::ResizeDueToAutoResize(const gfx::Size& new_size) {
114 // Don't actually do anything with this information until we have been shown. 115 // Don't actually do anything with this information until we have been shown.
115 // Size changes will not be honored by lower layers while we are hidden. 116 // Size changes will not be honored by lower layers while we are hidden.
116 if (!visible()) { 117 if (!visible()) {
117 pending_preferred_size_ = new_size; 118 pending_preferred_size_ = new_size;
118 return; 119 return;
119 } 120 }
120 121
121 gfx::Size preferred_size = GetPreferredSize(); 122 gfx::Size preferred_size = GetPreferredSize();
122 if (new_size != preferred_size) 123 if (new_size != preferred_size)
123 SetPreferredSize(new_size); 124 SetPreferredSize(new_size);
124 } 125 }
125 126
126 void ExtensionView::ViewHierarchyChanged(bool is_add, 127 void ExtensionView::ViewHierarchyChanged(bool is_add,
127 views::View *parent, 128 views::View *parent,
128 views::View *child) { 129 views::View *child) {
129 NativeViewHost::ViewHierarchyChanged(is_add, parent, child); 130 NativeViewHost::ViewHierarchyChanged(is_add, parent, child);
130 if (is_add && GetWidget() && !initialized_) 131 if (is_add && GetWidget() && !initialized_)
131 CreateWidgetHostView(); 132 CreateWidgetHostView();
132 } 133 }
133 134
134 void ExtensionView::PreferredSizeChanged() { 135 void ExtensionView::PreferredSizeChanged() {
135 View::PreferredSizeChanged(); 136 View::PreferredSizeChanged();
136 if (container_) 137 if (container_)
137 container_->OnExtensionPreferredSizeChanged(this); 138 container_->OnExtensionSizeChanged(this);
138 } 139 }
139 140
140 bool ExtensionView::SkipDefaultKeyEventProcessing(const views::KeyEvent& e) { 141 bool ExtensionView::SkipDefaultKeyEventProcessing(const views::KeyEvent& e) {
141 // Let the tab key event be processed by the renderer (instead of moving the 142 // Let the tab key event be processed by the renderer (instead of moving the
142 // focus to the next focusable view). Also handle Backspace, since otherwise 143 // focus to the next focusable view). Also handle Backspace, since otherwise
143 // (on Windows at least), pressing Backspace, when focus is on a text field 144 // (on Windows at least), pressing Backspace, when focus is on a text field
144 // within the ExtensionView, will navigate the page back instead of erasing a 145 // within the ExtensionView, will navigate the page back instead of erasing a
145 // character. 146 // character.
146 return (e.key_code() == ui::VKEY_TAB || e.key_code() == ui::VKEY_BACK); 147 return (e.key_code() == ui::VKEY_TAB || e.key_code() == ui::VKEY_BACK);
147 } 148 }
148 149
149 void ExtensionView::OnBoundsChanged(const gfx::Rect& previous_bounds) { 150 void ExtensionView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
150 // Propagate the new size to RenderWidgetHostView. 151 // Propagate the new size to RenderWidgetHostView.
151 // We can't send size zero because RenderWidget DCHECKs that. 152 // We can't send size zero because RenderWidget DCHECKs that.
152 if (render_view_host()->GetView() && !bounds().IsEmpty()) { 153 if (render_view_host()->GetView() && !bounds().IsEmpty()) {
153 render_view_host()->GetView()->SetSize(size()); 154 render_view_host()->GetView()->SetSize(size());
154 155
155 if (container_) 156 if (container_)
156 container_->OnViewWasResized(); 157 container_->OnViewWasResized();
157 } 158 }
158 } 159 }
159 160
160 void ExtensionView::RenderViewCreated() { 161 void ExtensionView::RenderViewCreated() {
161 if (!pending_background_.empty() && render_view_host()->GetView()) { 162 if (!pending_background_.empty() && render_view_host()->GetView()) {
162 render_view_host()->GetView()->SetBackground(pending_background_); 163 render_view_host()->GetView()->SetBackground(pending_background_);
163 pending_background_.reset(); 164 pending_background_.reset();
164 } 165 }
165 166
166 // Tell the renderer not to draw scroll bars in popups unless the 167 content::ViewType host_type = host_->extension_host_type();
167 // popups are at the maximum allowed size. 168 if (host_type == chrome::VIEW_TYPE_EXTENSION_POPUP) {
168 gfx::Size largest_popup_size(ExtensionPopup::kMaxWidth, 169 gfx::Size min_size(ExtensionPopup::kMinWidth,
169 ExtensionPopup::kMaxHeight); 170 ExtensionPopup::kMinHeight);
170 host_->DisableScrollbarsForSmallWindows(largest_popup_size); 171 gfx::Size max_size(ExtensionPopup::kMaxWidth,
172 ExtensionPopup::kMaxHeight);
173 render_view_host()->EnableAutoResize(min_size, max_size);
174 }
171 175
172 if (container_) 176 if (container_)
173 container_->OnViewWasResized(); 177 container_->OnViewWasResized();
174 } 178 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698