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

Unified Diff: extensions/browser/guest_view/guest_view_base.cc

Issue 823543003: AppView: Fix owner_extension_id (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/browser/guest_view/guest_view_base.h ('k') | extensions/browser/guest_view/guest_view_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « extensions/browser/guest_view/guest_view_base.h ('k') | extensions/browser/guest_view/guest_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698