| Index: chrome/browser/guest_view/web_view/web_view_renderer_state.cc
|
| diff --git a/chrome/browser/guest_view/web_view/web_view_renderer_state.cc b/chrome/browser/guest_view/web_view/web_view_renderer_state.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..89c0f6e3973a0524cc0baa285463ebed5cd4d9cf
|
| --- /dev/null
|
| +++ b/chrome/browser/guest_view/web_view/web_view_renderer_state.cc
|
| @@ -0,0 +1,85 @@
|
| +// 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.
|
| +
|
| +#include "chrome/browser/guest_view/web_view/web_view_renderer_state.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +
|
| +using content::BrowserThread;
|
| +
|
| +namespace extensions {
|
| +
|
| +// static
|
| +WebViewRendererState* WebViewRendererState::GetInstance() {
|
| + return Singleton<WebViewRendererState>::get();
|
| +}
|
| +
|
| +WebViewRendererState::WebViewRendererState() {
|
| +}
|
| +
|
| +WebViewRendererState::~WebViewRendererState() {
|
| +}
|
| +
|
| +bool WebViewRendererState::IsGuest(int render_process_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + return webview_partition_id_map_.find(render_process_id) !=
|
| + webview_partition_id_map_.end();
|
| +}
|
| +
|
| +void WebViewRendererState::AddGuest(int guest_process_id,
|
| + int guest_routing_id,
|
| + const WebViewInfo& webview_info) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + RenderId render_id(guest_process_id, guest_routing_id);
|
| + webview_info_map_[render_id] = webview_info;
|
| + WebViewPartitionIDMap::iterator iter =
|
| + webview_partition_id_map_.find(guest_process_id);
|
| + if (iter != webview_partition_id_map_.end()) {
|
| + ++iter->second.web_view_count;
|
| + return;
|
| + }
|
| + WebViewPartitionInfo partition_info(1, webview_info.partition_id);
|
| + webview_partition_id_map_[guest_process_id] = partition_info;
|
| +}
|
| +
|
| +void WebViewRendererState::RemoveGuest(int guest_process_id,
|
| + int guest_routing_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + RenderId render_id(guest_process_id, guest_routing_id);
|
| + webview_info_map_.erase(render_id);
|
| + WebViewPartitionIDMap::iterator iter =
|
| + webview_partition_id_map_.find(guest_process_id);
|
| + if (iter != webview_partition_id_map_.end() &&
|
| + iter->second.web_view_count > 1) {
|
| + --iter->second.web_view_count;
|
| + return;
|
| + }
|
| + webview_partition_id_map_.erase(guest_process_id);
|
| +}
|
| +
|
| +bool WebViewRendererState::GetInfo(int guest_process_id,
|
| + int guest_routing_id,
|
| + WebViewInfo* webview_info) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + RenderId render_id(guest_process_id, guest_routing_id);
|
| + WebViewInfoMap::iterator iter = webview_info_map_.find(render_id);
|
| + if (iter != webview_info_map_.end()) {
|
| + *webview_info = iter->second;
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool WebViewRendererState::GetPartitionID(int guest_process_id,
|
| + std::string* partition_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + WebViewPartitionIDMap::iterator iter =
|
| + webview_partition_id_map_.find(guest_process_id);
|
| + if (iter != webview_partition_id_map_.end()) {
|
| + *partition_id = iter->second.partition_id;
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|