OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // WebViewRendererState manages state data for WebView guest renderer processes. | 5 // WebViewRendererState manages state data for WebView guest renderer processes. |
6 // | 6 // |
7 // This class's data can be accessed via its methods from both the UI and IO | 7 // This class's data can be accessed via its methods from both the UI and IO |
8 // threads, and uses locks to mediate this access. When making changes to this | 8 // threads, and uses locks to mediate this access. When making changes to this |
9 // class, ensure that you avoid introducing any reentrant code in the methods, | 9 // class, ensure that you avoid introducing any reentrant code in the methods, |
10 // and that you always aquire the locks in the order |web_view_info_map_lock_| | 10 // and that you always aquire the locks in the order |web_view_info_map_lock_| |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 friend class WebViewGuest; | 74 friend class WebViewGuest; |
75 friend struct base::DefaultSingletonTraits<WebViewRendererState>; | 75 friend struct base::DefaultSingletonTraits<WebViewRendererState>; |
76 | 76 |
77 using RenderId = std::pair<int, int>; | 77 using RenderId = std::pair<int, int>; |
78 using WebViewInfoMap = std::map<RenderId, WebViewInfo>; | 78 using WebViewInfoMap = std::map<RenderId, WebViewInfo>; |
79 | 79 |
80 struct WebViewPartitionInfo { | 80 struct WebViewPartitionInfo { |
81 int web_view_count; | 81 int web_view_count; |
82 std::string partition_id; | 82 std::string partition_id; |
83 WebViewPartitionInfo() {} | 83 WebViewPartitionInfo() {} |
84 WebViewPartitionInfo(int count, std::string partition): | 84 WebViewPartitionInfo(int count, const std::string& partition) |
85 web_view_count(count), | 85 : web_view_count(count), partition_id(partition) {} |
86 partition_id(partition) {} | |
87 }; | 86 }; |
88 | 87 |
89 using WebViewPartitionIDMap = std::map<int, WebViewPartitionInfo>; | 88 using WebViewPartitionIDMap = std::map<int, WebViewPartitionInfo>; |
90 | 89 |
91 WebViewRendererState(); | 90 WebViewRendererState(); |
92 ~WebViewRendererState(); | 91 ~WebViewRendererState(); |
93 | 92 |
94 // Adds/removes a WebView guest render process to/from the set. | 93 // Adds/removes a WebView guest render process to/from the set. |
95 void AddGuest(int render_process_host_id, int routing_id, | 94 void AddGuest(int render_process_host_id, int routing_id, |
96 const WebViewInfo& web_view_info); | 95 const WebViewInfo& web_view_info); |
97 void RemoveGuest(int render_process_host_id, int routing_id); | 96 void RemoveGuest(int render_process_host_id, int routing_id); |
98 | 97 |
99 // Locks are used to mediate access to these maps from both the UI and IO | 98 // Locks are used to mediate access to these maps from both the UI and IO |
100 // threads. | 99 // threads. |
101 WebViewInfoMap web_view_info_map_; | 100 WebViewInfoMap web_view_info_map_; |
102 mutable base::Lock web_view_info_map_lock_; | 101 mutable base::Lock web_view_info_map_lock_; |
103 WebViewPartitionIDMap web_view_partition_id_map_; | 102 WebViewPartitionIDMap web_view_partition_id_map_; |
104 mutable base::Lock web_view_partition_id_map_lock_; | 103 mutable base::Lock web_view_partition_id_map_lock_; |
105 | 104 |
106 DISALLOW_COPY_AND_ASSIGN(WebViewRendererState); | 105 DISALLOW_COPY_AND_ASSIGN(WebViewRendererState); |
107 }; | 106 }; |
108 | 107 |
109 } // namespace extensions | 108 } // namespace extensions |
110 | 109 |
111 #endif // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_RENDERER_STATE_H_ | 110 #endif // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_RENDERER_STATE_H_ |
OLD | NEW |