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

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

Issue 1102173002: Move GuestView layer in browser to components (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Mac Build + GN Test builds 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.h
diff --git a/extensions/browser/guest_view/guest_view_manager.h b/extensions/browser/guest_view/guest_view_manager.h
deleted file mode 100644
index e1fb334c184151abfb0f4a9a1ec04f21693a28b7..0000000000000000000000000000000000000000
--- a/extensions/browser/guest_view/guest_view_manager.h
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2014 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.
-
-#ifndef EXTENSIONS_BROWSER_GUEST_VIEW_GUEST_VIEW_MANAGER_H_
-#define EXTENSIONS_BROWSER_GUEST_VIEW_GUEST_VIEW_MANAGER_H_
-
-#include <map>
-
-#include "base/bind.h"
-#include "base/gtest_prod_util.h"
-#include "base/lazy_instance.h"
-#include "base/macros.h"
-#include "content/public/browser/browser_plugin_guest_manager.h"
-#include "content/public/browser/site_instance.h"
-#include "content/public/browser/web_contents.h"
-
-class GURL;
-
-namespace content {
-class BrowserContext;
-class WebContents;
-} // namespace content
-
-namespace guestview {
-class GuestViewManagerDelegate;
-} // namespace guestview
-
-namespace extensions{
-class GuestViewBase;
-class GuestViewManagerFactory;
-
-class GuestViewManager : public content::BrowserPluginGuestManager,
- public base::SupportsUserData::Data {
- public:
- GuestViewManager(content::BrowserContext* context,
- scoped_ptr<guestview::GuestViewManagerDelegate> delegate);
- ~GuestViewManager() override;
-
- // Returns the GuestViewManager associated with |context|. If one isn't
- // available, then it is created and returned.
- static GuestViewManager* CreateWithDelegate(
- content::BrowserContext* context,
- scoped_ptr<guestview::GuestViewManagerDelegate> delegate);
-
- // Returns the GuestViewManager associated with |context|. If one isn't
- // available, then nullptr is returned.
- static GuestViewManager* FromBrowserContext(content::BrowserContext* context);
-
- // Overrides factory for testing. Default (NULL) value indicates regular
- // (non-test) environment.
- static void set_factory_for_testing(GuestViewManagerFactory* factory) {
- GuestViewManager::factory_ = factory;
- }
- // Returns the guest WebContents associated with the given |guest_instance_id|
- // if the provided |embedder_render_process_id| is allowed to access it.
- // If the embedder is not allowed access, the embedder will be killed, and
- // this method will return NULL. If no WebContents exists with the given
- // instance ID, then NULL will also be returned.
- content::WebContents* GetGuestByInstanceIDSafely(
- int guest_instance_id,
- int embedder_render_process_id);
-
- // Associates the Browser Plugin with |element_instance_id| to a
- // guest that has ID of |guest_instance_id| and sets initialization
- // parameters, |params| for it.
- void AttachGuest(int embedder_process_id,
- int element_instance_id,
- int guest_instance_id,
- const base::DictionaryValue& attach_params);
-
- // Removes the association between |element_instance_id| and a guest instance
- // ID if one exists.
- void DetachGuest(GuestViewBase* guest);
-
- // Indicates whether the |guest| is owned by an extension or Chrome App.
- bool IsOwnedByExtension(GuestViewBase* guest);
-
- int GetNextInstanceID();
- int GetGuestInstanceIDForElementID(
- int owner_process_id,
- int element_instance_id);
-
- template <typename T>
- void RegisterGuestViewType() {
- auto it = guest_view_registry_.find(T::Type);
- DCHECK(it == guest_view_registry_.end());
- guest_view_registry_[T::Type] = base::Bind(&T::Create);
- }
-
- using WebContentsCreatedCallback =
- base::Callback<void(content::WebContents*)>;
- void CreateGuest(const std::string& view_type,
- content::WebContents* owner_web_contents,
- const base::DictionaryValue& create_params,
- const WebContentsCreatedCallback& callback);
-
- content::WebContents* CreateGuestWithWebContentsParams(
- const std::string& view_type,
- content::WebContents* owner_web_contents,
- const content::WebContents::CreateParams& create_params);
-
- content::SiteInstance* GetGuestSiteInstance(
- const GURL& guest_site);
-
- // BrowserPluginGuestManager implementation.
- content::WebContents* GetGuestByInstanceID(
- int owner_process_id,
- int element_instance_id) override;
- bool ForEachGuest(content::WebContents* owner_web_contents,
- const GuestCallback& callback) override;
- content::WebContents* GetFullPageGuest(
- content::WebContents* embedder_web_contents) override;
-
- protected:
- friend class GuestViewBase;
- friend class GuestViewEvent;
-
- // Can be overriden in tests.
- virtual void AddGuest(int guest_instance_id,
- content::WebContents* guest_web_contents);
-
- // Can be overriden in tests.
- virtual void RemoveGuest(int guest_instance_id);
-
- // Creates a guest of the provided |view_type|.
- GuestViewBase* CreateGuestInternal(content::WebContents* owner_web_contents,
- const std::string& view_type);
-
- // Adds GuestView types to the GuestView registry.
- void RegisterGuestViewTypes();
-
- // Indicates whether the provided |guest| can be used in the context it has
- // been created.
- bool IsGuestAvailableToContext(GuestViewBase* guest);
-
- // Dispatches the event with |name| with the provided |args| to the embedder
- // of the given |guest| with |instance_id| for routing.
- void DispatchEvent(const std::string& event_name,
- scoped_ptr<base::DictionaryValue> args,
- GuestViewBase* guest,
- int instance_id);
-
- content::WebContents* GetGuestByInstanceID(int guest_instance_id);
-
- bool CanEmbedderAccessInstanceIDMaybeKill(
- int embedder_render_process_id,
- int guest_instance_id);
-
- bool CanEmbedderAccessInstanceID(int embedder_render_process_id,
- int guest_instance_id);
-
- // Returns true if |guest_instance_id| can be used to add a new guest to this
- // manager.
- // We disallow adding new guest with instance IDs that were previously removed
- // from this manager using RemoveGuest.
- bool CanUseGuestInstanceID(int guest_instance_id);
-
- static bool GetFullPageGuestHelper(content::WebContents** result,
- content::WebContents* guest_web_contents);
-
- // Static factory instance (always NULL for non-test).
- static GuestViewManagerFactory* factory_;
-
- // Contains guests' WebContents, mapping from their instance ids.
- using GuestInstanceMap = std::map<int, content::WebContents*>;
- GuestInstanceMap guest_web_contents_by_instance_id_;
-
- struct ElementInstanceKey {
- int embedder_process_id;
- int element_instance_id;
-
- ElementInstanceKey();
- ElementInstanceKey(int embedder_process_id,
- int element_instance_id);
-
- bool operator<(const ElementInstanceKey& other) const;
- bool operator==(const ElementInstanceKey& other) const;
- };
-
- using GuestInstanceIDMap = std::map<ElementInstanceKey, int>;
- GuestInstanceIDMap instance_id_map_;
-
- // The reverse map of GuestInstanceIDMap.
- using GuestInstanceIDReverseMap = std::map<int, ElementInstanceKey>;
- GuestInstanceIDReverseMap reverse_instance_id_map_;
-
- using GuestCreationCallback =
- base::Callback<GuestViewBase*(content::WebContents*)>;
- using GuestViewCreationMap =
- std::map<std::string, GuestViewManager::GuestCreationCallback>;
- GuestViewCreationMap guest_view_registry_;
-
- int current_instance_id_;
-
- // Any instance ID whose number not greater than this was removed via
- // RemoveGuest.
- // This is used so that we don't have store all removed instance IDs in
- // |removed_instance_ids_|.
- int last_instance_id_removed_;
- // The remaining instance IDs that are greater than
- // |last_instance_id_removed_| are kept here.
- std::set<int> removed_instance_ids_;
-
- content::BrowserContext* context_;
-
- scoped_ptr<guestview::GuestViewManagerDelegate> delegate_;
-
- DISALLOW_COPY_AND_ASSIGN(GuestViewManager);
-};
-
-} // namespace extensions
-
-#endif // EXTENSIONS_BROWSER_GUEST_VIEW_GUEST_VIEW_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698