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

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

Issue 1066563006: GuestView: Move GuestViewManager extension dependencies to ExtensionsGuestViewManagerDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@extensions_guest_view_message_filter
Patch Set: Fixed tests I hope 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/extensions_guest_view_manager_delegate.cc
diff --git a/extensions/browser/guest_view/extensions_guest_view_manager_delegate.cc b/extensions/browser/guest_view/extensions_guest_view_manager_delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0893e0a127e8c51fefe6f9f9c89825494c0a5960
--- /dev/null
+++ b/extensions/browser/guest_view/extensions_guest_view_manager_delegate.cc
@@ -0,0 +1,72 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h"
+
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/render_process_host.h"
+#include "extensions/browser/guest_view/app_view/app_view_guest.h"
+#include "extensions/browser/guest_view/extension_options/extension_options_guest.h"
+#include "extensions/browser/guest_view/extension_view/extension_view_guest.h"
+#include "extensions/browser/guest_view/guest_view_base.h"
+#include "extensions/browser/guest_view/guest_view_manager.h"
+#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/features/feature.h"
+#include "extensions/common/features/feature_provider.h"
+
+namespace extensions {
+
+ExtensionsGuestViewManagerDelegate::ExtensionsGuestViewManagerDelegate(
+ content::BrowserContext* context)
+ : context_(context) {
+}
+
+ExtensionsGuestViewManagerDelegate::~ExtensionsGuestViewManagerDelegate() {
+}
+
+bool ExtensionsGuestViewManagerDelegate::IsGuestAvailableToContext(
+ extensions::GuestViewBase* guest) {
+ 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());
+
+ // 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();
+}
+
+bool ExtensionsGuestViewManagerDelegate::IsOwnedByExtension(
+ extensions::GuestViewBase* guest) {
+ return !!ProcessManager::Get(context_)->
+ GetExtensionForWebContents(guest->owner_web_contents());
+}
+
+void ExtensionsGuestViewManagerDelegate::RegisterAdditionalGuestViewTypes() {
+ extensions::GuestViewManager* manager =
+ extensions::GuestViewManager::FromBrowserContext(context_);
+ manager->RegisterGuestViewType<AppViewGuest>();
+ manager->RegisterGuestViewType<ExtensionOptionsGuest>();
+ manager->RegisterGuestViewType<ExtensionViewGuest>();
+ manager->RegisterGuestViewType<MimeHandlerViewGuest>();
+ manager->RegisterGuestViewType<SurfaceWorkerGuest>();
+ manager->RegisterGuestViewType<WebViewGuest>();
+}
+
+} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698