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

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

Issue 1096623002: Moved guest_view_registry to GuestViewManager and made it an instance map (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@switch_to_frombrowsercontextifavailable
Patch Set: Addressed comments 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
« no previous file with comments | « extensions/browser/guest_view/guest_view_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 dce3a7fbcb689059bd4124d271052b2a6ce2885d..dd2ad1ce6d4f5009a8caf1d4559229a315302897 100644
--- a/extensions/browser/guest_view/guest_view_manager.cc
+++ b/extensions/browser/guest_view/guest_view_manager.cc
@@ -14,8 +14,14 @@
#include "content/public/common/child_process_host.h"
#include "content/public/common/result_codes.h"
#include "content/public/common/url_constants.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_factory.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"
@@ -124,7 +130,7 @@ void GuestViewManager::CreateGuest(const std::string& view_type,
content::WebContents* owner_web_contents,
const base::DictionaryValue& create_params,
const WebContentsCreatedCallback& callback) {
- auto guest = GuestViewBase::Create(owner_web_contents, view_type);
+ GuestViewBase* guest = CreateGuestInternal(owner_web_contents, view_type);
if (!guest) {
callback.Run(nullptr);
return;
@@ -136,7 +142,7 @@ content::WebContents* GuestViewManager::CreateGuestWithWebContentsParams(
const std::string& view_type,
content::WebContents* owner_web_contents,
const content::WebContents::CreateParams& create_params) {
- auto guest = GuestViewBase::Create(owner_web_contents, view_type);
+ auto guest = CreateGuestInternal(owner_web_contents, view_type);
if (!guest)
return nullptr;
content::WebContents::CreateParams guest_create_params(create_params);
@@ -239,6 +245,31 @@ void GuestViewManager::RemoveGuest(int guest_instance_id) {
}
}
+GuestViewBase* GuestViewManager::CreateGuestInternal(
+ content::WebContents* owner_web_contents,
+ const std::string& view_type) {
+ if (guest_view_registry_.empty())
+ RegisterGuestViewTypes();
+
+ auto it = guest_view_registry_.find(view_type);
+ if (it == guest_view_registry_.end()) {
+ NOTREACHED();
+ return nullptr;
+ }
+
+ return it->second.Run(owner_web_contents);
+}
+
+// static
+void GuestViewManager::RegisterGuestViewTypes() {
+ RegisterGuestViewType<AppViewGuest>();
+ RegisterGuestViewType<ExtensionOptionsGuest>();
+ RegisterGuestViewType<ExtensionViewGuest>();
+ RegisterGuestViewType<MimeHandlerViewGuest>();
+ RegisterGuestViewType<SurfaceWorkerGuest>();
+ RegisterGuestViewType<WebViewGuest>();
+}
+
bool GuestViewManager::IsGuestAvailableToContext(
GuestViewBase* guest,
std::string* owner_extension_id) {
« no previous file with comments | « extensions/browser/guest_view/guest_view_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698