1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_MANAGER_H_ 6 #define CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_MANAGER_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "content/common/content_export.h" 12 13 class GURL; 14 15 namespace base { 16 class DictionaryValue; 17 } // namespace base 18 19 namespace content { 20 21 class SiteInstance; 22 class WebContents; 23 24 // A BrowserPluginGuestManager offloads guest management and routing 25 // operations outside of the content layer. 26 class CONTENT_EXPORT BrowserPluginGuestManager { 27 public: 28 virtual ~BrowserPluginGuestManager() {} 29 30 // Requests the allocation of a new guest WebContents. 31 virtual content::WebContents* CreateGuest( 32 content::SiteInstance* embedder_site_instance, 33 int instance_id, 34 scoped_ptr<base::DictionaryValue> extra_params); 35 36 // Return a new instance ID. 37 // TODO(fsamuel): Remove this. Once the instance ID concept is moved 38 // entirely out of content and into chrome, this API will be unnecessary. 39 virtual int GetNextInstanceID(); 40 41 typedef base::Callback<void(WebContents*)> GuestByInstanceIDCallback; 42 // Requests a guest WebContents associated with the provided 43 // |guest_instance_id|. If a guest associated with the provided ID 44 // does not exist, then the |callback| will be called with a NULL 45 // WebContents. If the provided |embedder_render_process_id| does 46 // not own the requested guest, then the embedder will be killed, 47 // and the |callback| will not be called. 48 virtual void MaybeGetGuestByInstanceIDOrKill( 49 int guest_instance_id, 50 int embedder_render_process_id, 51 const GuestByInstanceIDCallback& callback) {} 52 53 // Iterates over all WebContents belonging to a given |embedder_web_contents|, 54 // calling |callback| for each. If one of the callbacks returns true, then 55 // the iteration exits early. 56 typedef base::Callback<bool(WebContents*)> GuestCallback; 57 virtual bool ForEachGuest(WebContents* embedder_web_contents, 58 const GuestCallback& callback); 59 }; 60 61 } // namespace content 62 63 #endif // CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_MANAGER_H_ 64