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

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

Issue 1087123002: Towards Decoupling GuestView from Extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: extensions/browser/guest_view/guest_view_manager.cc
diff --git a/extensions/browser/guest_view/guest_view_manager.cc b/extensions/browser/guest_view/guest_view_manager.cc
index b7ddae913cb8c7fbf2a050471b3d5b70b9b56817..6276af6e7f2863931bd7e5ce9113e2804902c198 100644
--- a/extensions/browser/guest_view/guest_view_manager.cc
+++ b/extensions/browser/guest_view/guest_view_manager.cc
@@ -17,7 +17,11 @@
#include "extensions/browser/extension_system.h"
#include "extensions/browser/guest_view/guest_view_base.h"
#include "extensions/browser/guest_view/guest_view_manager_factory.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"
+#include "extensions/common/features/feature_provider.h"
#include "extensions/common/guest_view/guest_view_constants.h"
#include "net/base/escape.h"
#include "url/gurl.h"
@@ -229,6 +233,31 @@ void GuestViewManager::RemoveGuest(int guest_instance_id) {
}
}
+bool GuestViewManager::IsGuestAvailableToContext(
+ GuestViewBase* guest,
lazyboy 2015/04/15 02:50:11 run git cl format for the CL, these probably can f
Fady Samuel 2015/04/15 15:14:05 Nope.
+ std::string* owner_extension_id) {
+ const Feature* feature =
+ FeatureProvider::GetAPIFeature(guest->GetAPINamespace());
+ CHECK(feature);
+
+ ProcessMap* process_map = ProcessMap::Get(context_);
+ CHECK(process_map);
+
+ const Extension* owner_extension = ProcessManager::Get(context_)->
+ GetExtensionForWebContents(guest->owner_web_contents());
+ *owner_extension_id = owner_extension ? owner_extension->id() : std::string();
+
+ // Ok for |owner_extension| to be nullptr, the embedder might be WebUI.
+ Feature::Availability availability = feature->IsAvailableToContext(
+ owner_extension,
+ process_map->GetMostLikelyContextType(
+ owner_extension,
+ guest->owner_web_contents()->GetRenderProcessHost()->GetID()),
+ guest->GetOwnerSiteURL());
+
+ return availability.is_available();
+}
+
content::WebContents* GuestViewManager::GetGuestByInstanceID(
int guest_instance_id) {
auto it = guest_web_contents_by_instance_id_.find(guest_instance_id);

Powered by Google App Engine
This is Rietveld 408576698