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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 272573005: <webview>: Move NewWindow API to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@guestview_manager_rename
Patch Set: Merge with ToT Created 6 years, 7 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
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 "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
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 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 430
431 STLDeleteContainerPairSecondPointers(destruction_observers_.begin(), 431 STLDeleteContainerPairSecondPointers(destruction_observers_.begin(),
432 destruction_observers_.end()); 432 destruction_observers_.end());
433 } 433 }
434 434
435 WebContentsImpl* WebContentsImpl::CreateWithOpener( 435 WebContentsImpl* WebContentsImpl::CreateWithOpener(
436 const WebContents::CreateParams& params, 436 const WebContents::CreateParams& params,
437 WebContentsImpl* opener) { 437 WebContentsImpl* opener) {
438 TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener"); 438 TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener");
439 WebContentsImpl* new_contents = new WebContentsImpl( 439 WebContentsImpl* new_contents = new WebContentsImpl(
440 params.browser_context, opener); 440 params.browser_context, params.opener_suppressed ? NULL : opener);
441 441
442 if (params.guest_instance_id) { 442 if (params.guest_instance_id) {
443 scoped_ptr<base::DictionaryValue> extra_params( 443 scoped_ptr<base::DictionaryValue> extra_params;
444 params.guest_extra_params->DeepCopy()); 444 if (params.guest_extra_params)
445 extra_params.reset(params.guest_extra_params->DeepCopy());
445 // This makes |new_contents| act as a guest. 446 // This makes |new_contents| act as a guest.
446 // For more info, see comment above class BrowserPluginGuest. 447 // For more info, see comment above class BrowserPluginGuest.
447 BrowserPluginGuest::Create(params.guest_instance_id, 448 BrowserPluginGuest::Create(params.guest_instance_id,
448 params.site_instance, 449 params.site_instance,
449 new_contents, 450 new_contents,
450 extra_params.Pass()); 451 extra_params.Pass(),
452 opener ? opener->GetBrowserPluginGuest() : NULL);
451 // We are instantiating a WebContents for browser plugin. Set its subframe 453 // We are instantiating a WebContents for browser plugin. Set its subframe
452 // bit to true. 454 // bit to true.
453 new_contents->is_subframe_ = true; 455 new_contents->is_subframe_ = true;
454 } 456 }
455 new_contents->Init(params); 457 new_contents->Init(params);
456 return new_contents; 458 return new_contents;
457 } 459 }
458 460
459 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() { 461 RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() {
460 return GetRenderManager(); 462 return GetRenderManager();
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 646
645 void WebContentsImpl::SendToAllFrames(IPC::Message* message) { 647 void WebContentsImpl::SendToAllFrames(IPC::Message* message) {
646 ForEachFrame(base::Bind(&SendToAllFramesInternal, message)); 648 ForEachFrame(base::Bind(&SendToAllFramesInternal, message));
647 delete message; 649 delete message;
648 } 650 }
649 651
650 RenderViewHost* WebContentsImpl::GetRenderViewHost() const { 652 RenderViewHost* WebContentsImpl::GetRenderViewHost() const {
651 return GetRenderManager()->current_host(); 653 return GetRenderManager()->current_host();
652 } 654 }
653 655
654 WebContents* WebContentsImpl::GetEmbedderWebContents() const {
655 BrowserPluginGuest* guest = GetBrowserPluginGuest();
656 if (guest)
657 return guest->embedder_web_contents();
658 return NULL;
659 }
660
661 int WebContentsImpl::GetEmbeddedInstanceID() const {
662 BrowserPluginGuest* guest = GetBrowserPluginGuest();
663 if (guest)
664 return guest->instance_id();
665 return 0;
666 }
667
668 int WebContentsImpl::GetRoutingID() const { 656 int WebContentsImpl::GetRoutingID() const {
669 if (!GetRenderViewHost()) 657 if (!GetRenderViewHost())
670 return MSG_ROUTING_NONE; 658 return MSG_ROUTING_NONE;
671 659
672 return GetRenderViewHost()->GetRoutingID(); 660 return GetRenderViewHost()->GetRoutingID();
673 } 661 }
674 662
675 int WebContentsImpl::GetFullscreenWidgetRoutingID() const { 663 int WebContentsImpl::GetFullscreenWidgetRoutingID() const {
676 return fullscreen_widget_routing_id_; 664 return fullscreen_widget_routing_id_;
677 } 665 }
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 Send(new ViewMsg_Close(route_id)); 1384 Send(new ViewMsg_Close(route_id));
1397 } 1385 }
1398 GetRenderViewHost()->GetProcess()->ResumeRequestsForView(route_id); 1386 GetRenderViewHost()->GetProcess()->ResumeRequestsForView(route_id);
1399 GetRenderViewHost()->GetProcess()->ResumeRequestsForView( 1387 GetRenderViewHost()->GetProcess()->ResumeRequestsForView(
1400 main_frame_route_id); 1388 main_frame_route_id);
1401 return; 1389 return;
1402 } 1390 }
1403 1391
1404 // Create the new web contents. This will automatically create the new 1392 // Create the new web contents. This will automatically create the new
1405 // WebContentsView. In the future, we may want to create the view separately. 1393 // WebContentsView. In the future, we may want to create the view separately.
1406 WebContentsImpl* new_contents =
1407 new WebContentsImpl(GetBrowserContext(),
1408 params.opener_suppressed ? NULL : this);
1409
1410 new_contents->GetController().SetSessionStorageNamespace(
1411 partition_id,
1412 session_storage_namespace);
1413 CreateParams create_params(GetBrowserContext(), site_instance.get()); 1394 CreateParams create_params(GetBrowserContext(), site_instance.get());
1414 create_params.routing_id = route_id; 1395 create_params.routing_id = route_id;
1415 create_params.main_frame_routing_id = main_frame_route_id; 1396 create_params.main_frame_routing_id = main_frame_route_id;
1397 create_params.opener = this;
1398 create_params.opener_suppressed = params.opener_suppressed;
1399 if (params.disposition == NEW_BACKGROUND_TAB)
1400 create_params.initially_hidden = true;
1401
1416 if (!is_guest) { 1402 if (!is_guest) {
1417 create_params.context = view_->GetNativeView(); 1403 create_params.context = view_->GetNativeView();
1418 create_params.initial_size = GetContainerBounds().size(); 1404 create_params.initial_size = GetContainerBounds().size();
1419 } else { 1405 } else {
1420 // This makes |new_contents| act as a guest. 1406 create_params.guest_instance_id =
1421 // For more info, see comment above class BrowserPluginGuest.
1422 int instance_id =
1423 GetBrowserContext()->GetGuestManager()->GetNextInstanceID(); 1407 GetBrowserContext()->GetGuestManager()->GetNextInstanceID();
1424 WebContentsImpl* new_contents_impl =
1425 static_cast<WebContentsImpl*>(new_contents);
1426 BrowserPluginGuest::CreateWithOpener(instance_id,
1427 new_contents_impl->opener() != NULL,
1428 new_contents_impl,
1429 GetBrowserPluginGuest());
1430 } 1408 }
1431 if (params.disposition == NEW_BACKGROUND_TAB) 1409 WebContentsImpl* new_contents = static_cast<WebContentsImpl*>(
1432 create_params.initially_hidden = true; 1410 WebContents::Create(create_params));
1433 new_contents->Init(create_params); 1411 new_contents->GetController().SetSessionStorageNamespace(
1412 partition_id,
1413 session_storage_namespace);
1434 new_contents->RenderViewCreated(new_contents->GetRenderViewHost()); 1414 new_contents->RenderViewCreated(new_contents->GetRenderViewHost());
1435 1415
1436 // Save the window for later if we're not suppressing the opener (since it 1416 // Save the window for later if we're not suppressing the opener (since it
1437 // will be shown immediately). 1417 // will be shown immediately).
1438 if (!params.opener_suppressed) { 1418 if (!params.opener_suppressed) {
1439 if (!is_guest) { 1419 if (!is_guest) {
1440 WebContentsView* new_view = new_contents->view_.get(); 1420 WebContentsView* new_view = new_contents->view_.get();
1441 1421
1442 // TODO(brettw): It seems bogus that we have to call this function on the 1422 // TODO(brettw): It seems bogus that we have to call this function on the
1443 // newly created object and give it one of its own member variables. 1423 // newly created object and give it one of its own member variables.
(...skipping 2646 matching lines...) Expand 10 before | Expand all | Expand 10 after
4090 4070
4091 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 4071 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
4092 if (!delegate_) 4072 if (!delegate_)
4093 return; 4073 return;
4094 const gfx::Size new_size = GetPreferredSize(); 4074 const gfx::Size new_size = GetPreferredSize();
4095 if (new_size != old_size) 4075 if (new_size != old_size)
4096 delegate_->UpdatePreferredSize(this, new_size); 4076 delegate_->UpdatePreferredSize(this, new_size);
4097 } 4077 }
4098 4078
4099 } // namespace content 4079 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/common/browser_plugin/browser_plugin_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698