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

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

Issue 426593007: Refactor guest view availability to be API not permission based. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: app view Created 6 years, 4 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 | « chrome/browser/guest_view/guest_view_base.h ('k') | chrome/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: chrome/browser/guest_view/guest_view_base.cc
diff --git a/chrome/browser/guest_view/guest_view_base.cc b/chrome/browser/guest_view/guest_view_base.cc
index 1300cfbb50d4b30240729963b6c2ff87dfcf8b4a..24211a66dba7eec26e72fca541dbd11cb97e0207 100644
--- a/chrome/browser/guest_view/guest_view_base.cc
+++ b/chrome/browser/guest_view/guest_view_base.cc
@@ -18,6 +18,9 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/url_constants.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/process_map.h"
+#include "extensions/common/features/feature.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
using content::WebContents;
@@ -97,28 +100,46 @@ GuestViewBase::GuestViewBase(content::BrowserContext* browser_context,
weak_ptr_factory_(this) {
}
-void GuestViewBase::Init(
- const std::string& embedder_extension_id,
- int embedder_render_process_id,
- const base::DictionaryValue& create_params,
- const WebContentsCreatedCallback& callback) {
+void GuestViewBase::Init(const std::string& embedder_extension_id,
+ int embedder_render_process_id,
+ content::WebContents* web_contents,
+ const base::DictionaryValue& create_params,
+ const WebContentsCreatedCallback& callback) {
if (initialized_)
return;
initialized_ = true;
- if (!CanEmbedderUseGuestView(embedder_extension_id)) {
+ extensions::Feature* feature = GetFeature();
+ CHECK(feature);
+
+ const extensions::Extension* embedder_extension =
+ extensions::ExtensionRegistry::Get(browser_context_)
+ ->enabled_extensions()
+ .GetByID(embedder_extension_id);
+
+ extensions::ProcessMap* process_map =
+ extensions::ProcessMap::Get(browser_context());
+ CHECK(process_map);
+
+ extensions::Feature::Availability availability =
+ feature->IsAvailableToContext(
Fady Samuel 2014/08/07 17:29:31 appViewInternal is available in all apps I think.
not at google - send to devlin 2014/08/07 17:34:41 appViewInternal is defined like: https://code.goo
+ embedder_extension,
+ process_map->GuessContextType(embedder_extension,
+ embedder_render_process_id),
+ web_contents->GetLastCommittedURL());
+
+ if (availability.is_available()) {
Fady Samuel 2014/08/07 17:29:31 Early exit preferred: if (!availability.is_availa
not at google - send to devlin 2014/08/07 17:34:41 yeah this was an accidental change :)
+ CreateWebContents(embedder_extension_id,
+ embedder_render_process_id,
+ create_params,
+ base::Bind(&GuestViewBase::CompleteInit,
+ AsWeakPtr(),
+ embedder_extension_id,
+ embedder_render_process_id,
+ callback));
+ } else {
callback.Run(NULL);
- return;
}
-
- CreateWebContents(embedder_extension_id,
- embedder_render_process_id,
- create_params,
- base::Bind(&GuestViewBase::CompleteInit,
- AsWeakPtr(),
- embedder_extension_id,
- embedder_render_process_id,
- callback));
}
void GuestViewBase::InitWithWebContents(
« no previous file with comments | « chrome/browser/guest_view/guest_view_base.h ('k') | chrome/browser/guest_view/guest_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698