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

Side by Side Diff: trunk/src/chrome/browser/guest_view/guest_view_base.cc

Issue 446823002: Revert 287732 "<webview>: Move autosize from content to chrome." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/guest_view/guest_view_base.h" 5 #include "chrome/browser/guest_view/guest_view_base.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/guest_view/app_view/app_view_guest.h" 9 #include "chrome/browser/guest_view/app_view/app_view_guest.h"
10 #include "chrome/browser/guest_view/extension_options/extension_options_guest.h" 10 #include "chrome/browser/guest_view/extension_options/extension_options_guest.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 }; 86 };
87 87
88 GuestViewBase::GuestViewBase(content::BrowserContext* browser_context, 88 GuestViewBase::GuestViewBase(content::BrowserContext* browser_context,
89 int guest_instance_id) 89 int guest_instance_id)
90 : embedder_web_contents_(NULL), 90 : embedder_web_contents_(NULL),
91 embedder_render_process_id_(0), 91 embedder_render_process_id_(0),
92 browser_context_(browser_context), 92 browser_context_(browser_context),
93 guest_instance_id_(guest_instance_id), 93 guest_instance_id_(guest_instance_id),
94 view_instance_id_(guestview::kInstanceIDNone), 94 view_instance_id_(guestview::kInstanceIDNone),
95 initialized_(false), 95 initialized_(false),
96 auto_size_enabled_(false),
97 weak_ptr_factory_(this) { 96 weak_ptr_factory_(this) {
98 } 97 }
99 98
100 void GuestViewBase::Init( 99 void GuestViewBase::Init(
101 const std::string& embedder_extension_id, 100 const std::string& embedder_extension_id,
102 int embedder_render_process_id, 101 int embedder_render_process_id,
103 const base::DictionaryValue& create_params, 102 const base::DictionaryValue& create_params,
104 const WebContentsCreatedCallback& callback) { 103 const WebContentsCreatedCallback& callback) {
105 if (initialized_) 104 if (initialized_)
106 return; 105 return;
(...skipping 30 matching lines...) Expand all
137 guest_web_contents->SetDelegate(this); 136 guest_web_contents->SetDelegate(this);
138 webcontents_guestview_map.Get().insert( 137 webcontents_guestview_map.Get().insert(
139 std::make_pair(guest_web_contents, this)); 138 std::make_pair(guest_web_contents, this));
140 GuestViewManager::FromBrowserContext(browser_context_)-> 139 GuestViewManager::FromBrowserContext(browser_context_)->
141 AddGuest(guest_instance_id_, guest_web_contents); 140 AddGuest(guest_instance_id_, guest_web_contents);
142 141
143 // Give the derived class an opportunity to perform additional initialization. 142 // Give the derived class an opportunity to perform additional initialization.
144 DidInitialize(); 143 DidInitialize();
145 } 144 }
146 145
147 void GuestViewBase::SetAutoSize(bool enabled,
148 const gfx::Size& min_size,
149 const gfx::Size& max_size) {
150 min_auto_size_ = min_size;
151 min_auto_size_.SetToMin(max_size);
152 max_auto_size_ = max_size;
153 max_auto_size_.SetToMax(min_size);
154
155 enabled &= !!max_auto_size_.width() && !!max_auto_size_.height() &&
156 IsAutoSizeSupported();
157 if (!enabled && !auto_size_enabled_)
158 return;
159
160 auto_size_enabled_ = enabled;
161
162 if (!attached())
163 return;
164
165 content::RenderViewHost* rvh = guest_web_contents()->GetRenderViewHost();
166 if (auto_size_enabled_) {
167 rvh->EnableAutoResize(min_auto_size_, max_auto_size_);
168 } else {
169 rvh->DisableAutoResize(element_size_);
170 guest_size_ = element_size_;
171 GuestSizeChangedDueToAutoSize(guest_size_, element_size_);
172 }
173 }
174
175 // static 146 // static
176 void GuestViewBase::RegisterGuestViewType( 147 void GuestViewBase::RegisterGuestViewType(
177 const std::string& view_type, 148 const std::string& view_type,
178 const GuestCreationCallback& callback) { 149 const GuestCreationCallback& callback) {
179 GuestViewCreationMap::iterator it = 150 GuestViewCreationMap::iterator it =
180 guest_view_registry.Get().find(view_type); 151 guest_view_registry.Get().find(view_type);
181 DCHECK(it == guest_view_registry.Get().end()); 152 DCHECK(it == guest_view_registry.Get().end());
182 guest_view_registry.Get()[view_type] = callback; 153 guest_view_registry.Get()[view_type] = callback;
183 } 154 }
184 155
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 ContentSettingsPattern::Wildcard(), 215 ContentSettingsPattern::Wildcard(),
245 CONTENT_SETTING_ALLOW, 216 CONTENT_SETTING_ALLOW,
246 std::string(), 217 std::string(),
247 incognito)); 218 incognito));
248 } 219 }
249 220
250 base::WeakPtr<GuestViewBase> GuestViewBase::AsWeakPtr() { 221 base::WeakPtr<GuestViewBase> GuestViewBase::AsWeakPtr() {
251 return weak_ptr_factory_.GetWeakPtr(); 222 return weak_ptr_factory_.GetWeakPtr();
252 } 223 }
253 224
254 bool GuestViewBase::IsAutoSizeSupported() const {
255 return false;
256 }
257
258 bool GuestViewBase::IsDragAndDropEnabled() const { 225 bool GuestViewBase::IsDragAndDropEnabled() const {
259 return false; 226 return false;
260 } 227 }
261 228
262 void GuestViewBase::RenderProcessExited(content::RenderProcessHost* host, 229 void GuestViewBase::RenderProcessExited(content::RenderProcessHost* host,
263 base::ProcessHandle handle, 230 base::ProcessHandle handle,
264 base::TerminationStatus status, 231 base::TerminationStatus status,
265 int exit_code) { 232 int exit_code) {
266 // GuestViewBase tracks the lifetime of its embedder render process until it 233 // GuestViewBase tracks the lifetime of its embedder render process until it
267 // is attached to a particular embedder WebContents. At that point, its 234 // is attached to a particular embedder WebContents. At that point, its
(...skipping 26 matching lines...) Expand all
294 delete guest_web_contents(); 261 delete guest_web_contents();
295 } 262 }
296 263
297 void GuestViewBase::DidAttach() { 264 void GuestViewBase::DidAttach() {
298 // Give the derived class an opportunity to perform some actions. 265 // Give the derived class an opportunity to perform some actions.
299 DidAttachToEmbedder(); 266 DidAttachToEmbedder();
300 267
301 SendQueuedEvents(); 268 SendQueuedEvents();
302 } 269 }
303 270
304 void GuestViewBase::ElementSizeChanged(const gfx::Size& old_size,
305 const gfx::Size& new_size) {
306 element_size_ = new_size;
307 }
308
309 int GuestViewBase::GetGuestInstanceID() const { 271 int GuestViewBase::GetGuestInstanceID() const {
310 return guest_instance_id_; 272 return guest_instance_id_;
311 } 273 }
312 274
313 void GuestViewBase::GuestSizeChanged(const gfx::Size& old_size,
314 const gfx::Size& new_size) {
315 if (!auto_size_enabled_)
316 return;
317 guest_size_ = new_size;
318 GuestSizeChangedDueToAutoSize(old_size, new_size);
319 }
320
321 void GuestViewBase::SetOpener(GuestViewBase* guest) { 275 void GuestViewBase::SetOpener(GuestViewBase* guest) {
322 if (guest && guest->IsViewType(GetViewType())) { 276 if (guest && guest->IsViewType(GetViewType())) {
323 opener_ = guest->AsWeakPtr(); 277 opener_ = guest->AsWeakPtr();
324 return; 278 return;
325 } 279 }
326 opener_ = base::WeakPtr<GuestViewBase>(); 280 opener_ = base::WeakPtr<GuestViewBase>();
327 } 281 }
328 282
329 void GuestViewBase::RegisterDestructionCallback( 283 void GuestViewBase::RegisterDestructionCallback(
330 const DestructionCallback& callback) { 284 const DestructionCallback& callback) {
(...skipping 19 matching lines...) Expand all
350 if (!IsDragAndDropEnabled()) { 304 if (!IsDragAndDropEnabled()) {
351 const char script[] = "window.addEventListener('dragstart', function() { " 305 const char script[] = "window.addEventListener('dragstart', function() { "
352 " window.event.preventDefault(); " 306 " window.event.preventDefault(); "
353 "});"; 307 "});";
354 render_view_host->GetMainFrame()->ExecuteJavaScript( 308 render_view_host->GetMainFrame()->ExecuteJavaScript(
355 base::ASCIIToUTF16(script)); 309 base::ASCIIToUTF16(script));
356 } 310 }
357 DidStopLoading(); 311 DidStopLoading();
358 } 312 }
359 313
360 void GuestViewBase::RenderViewReady() {
361 GuestReady();
362 content::RenderViewHost* rvh = guest_web_contents()->GetRenderViewHost();
363 if (auto_size_enabled_) {
364 rvh->EnableAutoResize(min_auto_size_, max_auto_size_);
365 } else {
366 rvh->DisableAutoResize(element_size_);
367 }
368 }
369
370 void GuestViewBase::WebContentsDestroyed() { 314 void GuestViewBase::WebContentsDestroyed() {
371 GuestDestroyed(); 315 GuestDestroyed();
372 delete this; 316 delete this;
373 } 317 }
374 318
375 bool GuestViewBase::ShouldFocusPageAfterCrash() { 319 bool GuestViewBase::ShouldFocusPageAfterCrash() {
376 // Focus is managed elsewhere. 320 // Focus is managed elsewhere.
377 return false; 321 return false;
378 } 322 }
379 323
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 guest_web_contents); 384 guest_web_contents);
441 callback.Run(guest_web_contents); 385 callback.Run(guest_web_contents);
442 } 386 }
443 387
444 // static 388 // static
445 void GuestViewBase::RegisterGuestViewTypes() { 389 void GuestViewBase::RegisterGuestViewTypes() {
446 AppViewGuest::Register(); 390 AppViewGuest::Register();
447 ExtensionOptionsGuest::Register(); 391 ExtensionOptionsGuest::Register();
448 WebViewGuest::Register(); 392 WebViewGuest::Register();
449 } 393 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698