electron/shell/browser/web_view_manager.h

47 lines
1.4 KiB
C
Raw Normal View History

// Copyright (c) 2014 GitHub, Inc.
2014-10-22 14:55:13 +00:00
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ELECTRON_SHELL_BROWSER_WEB_VIEW_MANAGER_H_
#define ELECTRON_SHELL_BROWSER_WEB_VIEW_MANAGER_H_
2014-10-22 14:55:13 +00:00
2014-10-23 15:08:48 +00:00
#include <map>
#include "base/memory/raw_ptr.h"
2014-10-22 14:55:13 +00:00
#include "content/public/browser/browser_plugin_guest_manager.h"
namespace electron {
2014-10-22 14:55:13 +00:00
class WebViewManager : public content::BrowserPluginGuestManager {
public:
WebViewManager();
~WebViewManager() override;
2015-02-04 23:08:29 +00:00
// disable copy
WebViewManager(const WebViewManager&) = delete;
WebViewManager& operator=(const WebViewManager&) = delete;
2014-10-23 15:08:48 +00:00
void AddGuest(int guest_instance_id,
content::WebContents* embedder,
content::WebContents* web_contents);
2014-10-23 15:08:48 +00:00
void RemoveGuest(int guest_instance_id);
static WebViewManager* GetWebViewManager(content::WebContents* web_contents);
2014-10-22 14:55:13 +00:00
// content::BrowserPluginGuestManager:
bool ForEachGuest(content::WebContents* embedder,
const GuestCallback& callback) override;
2014-10-22 14:55:13 +00:00
private:
2014-10-23 15:08:48 +00:00
struct WebContentsWithEmbedder {
raw_ptr<content::WebContents> web_contents;
raw_ptr<content::WebContents> embedder;
2014-10-23 15:08:48 +00:00
};
2015-02-04 23:28:26 +00:00
// guest_instance_id => (web_contents, embedder)
2015-08-06 15:01:05 +00:00
std::map<int, WebContentsWithEmbedder> web_contents_embedder_map_;
2014-10-22 14:55:13 +00:00
};
} // namespace electron
2014-10-22 14:55:13 +00:00
#endif // ELECTRON_SHELL_BROWSER_WEB_VIEW_MANAGER_H_