| Index: extensions/browser/guest_view/guest_view_base.cc
|
| diff --git a/extensions/browser/guest_view/guest_view_base.cc b/extensions/browser/guest_view/guest_view_base.cc
|
| index de7e1d8443547a353d2d96521d5f0dbdd042167f..75dc69e5ada521d944a95b98c9c4d32d8c321590 100644
|
| --- a/extensions/browser/guest_view/guest_view_base.cc
|
| +++ b/extensions/browser/guest_view/guest_view_base.cc
|
| @@ -23,6 +23,7 @@
|
| #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
|
| #include "extensions/browser/guest_view/surface_worker/surface_worker_guest.h"
|
| #include "extensions/browser/guest_view/web_view/web_view_guest.h"
|
| +#include "extensions/browser/process_manager.h"
|
| #include "extensions/browser/process_map.h"
|
| #include "extensions/common/extension_messages.h"
|
| #include "extensions/common/features/feature.h"
|
| @@ -150,8 +151,7 @@ GuestViewBase::GuestViewBase(content::BrowserContext* browser_context,
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| -void GuestViewBase::Init(const std::string& owner_extension_id,
|
| - const base::DictionaryValue& create_params,
|
| +void GuestViewBase::Init(const base::DictionaryValue& create_params,
|
| const WebContentsCreatedCallback& callback) {
|
| if (initialized_)
|
| return;
|
| @@ -163,15 +163,17 @@ void GuestViewBase::Init(const std::string& owner_extension_id,
|
| ProcessMap* process_map = ProcessMap::Get(browser_context());
|
| CHECK(process_map);
|
|
|
| - const Extension* embedder_extension = ExtensionRegistry::Get(browser_context_)
|
| - ->enabled_extensions()
|
| - .GetByID(owner_extension_id);
|
| + const Extension* owner_extension =
|
| + ProcessManager::Get(owner_web_contents()->GetBrowserContext())->
|
| + GetExtensionForRenderViewHost(
|
| + owner_web_contents()->GetRenderViewHost());
|
| + owner_extension_id_ = owner_extension ? owner_extension->id() : std::string();
|
|
|
| - // Ok for |embedder_extension| to be NULL, the embedder might be WebUI.
|
| + // Ok for |owner_extension| to be NULL, the embedder might be WebUI.
|
| Feature::Availability availability = feature->IsAvailableToContext(
|
| - embedder_extension,
|
| + owner_extension,
|
| process_map->GetMostLikelyContextType(
|
| - embedder_extension,
|
| + owner_extension,
|
| owner_web_contents()->GetRenderProcessHost()->GetID()),
|
| GetOwnerSiteURL());
|
| if (!availability.is_available()) {
|
| @@ -185,17 +187,13 @@ void GuestViewBase::Init(const std::string& owner_extension_id,
|
| CreateWebContents(create_params,
|
| base::Bind(&GuestViewBase::CompleteInit,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| - owner_extension_id,
|
| callback));
|
| }
|
|
|
| void GuestViewBase::InitWithWebContents(
|
| - const std::string& owner_extension_id,
|
| content::WebContents* guest_web_contents) {
|
| DCHECK(guest_web_contents);
|
|
|
| - owner_extension_id_ = owner_extension_id;
|
| -
|
| // At this point, we have just created the guest WebContents, we need to add
|
| // an observer to the embedder WebContents. This observer will be responsible
|
| // for destroying the guest WebContents if the embedder goes away.
|
| @@ -542,8 +540,7 @@ void GuestViewBase::SendQueuedEvents() {
|
| }
|
| }
|
|
|
| -void GuestViewBase::CompleteInit(const std::string& owner_extension_id,
|
| - const WebContentsCreatedCallback& callback,
|
| +void GuestViewBase::CompleteInit(const WebContentsCreatedCallback& callback,
|
| content::WebContents* guest_web_contents) {
|
| if (!guest_web_contents) {
|
| // The derived class did not create a WebContents so this class serves no
|
| @@ -552,7 +549,7 @@ void GuestViewBase::CompleteInit(const std::string& owner_extension_id,
|
| callback.Run(NULL);
|
| return;
|
| }
|
| - InitWithWebContents(owner_extension_id, guest_web_contents);
|
| + InitWithWebContents(guest_web_contents);
|
| callback.Run(guest_web_contents);
|
| }
|
|
|
|
|