| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "extensions/browser/process_manager.h" | 5 #include "extensions/browser/process_manager.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 159 |
| 160 ExtensionRenderFrameData() | 160 ExtensionRenderFrameData() |
| 161 : view_type(VIEW_TYPE_INVALID), has_keepalive(false) {} | 161 : view_type(VIEW_TYPE_INVALID), has_keepalive(false) {} |
| 162 | 162 |
| 163 // Returns whether the view can keep the lazy background page alive or not. | 163 // Returns whether the view can keep the lazy background page alive or not. |
| 164 bool CanKeepalive() const { | 164 bool CanKeepalive() const { |
| 165 switch (view_type) { | 165 switch (view_type) { |
| 166 case VIEW_TYPE_APP_WINDOW: | 166 case VIEW_TYPE_APP_WINDOW: |
| 167 case VIEW_TYPE_BACKGROUND_CONTENTS: | 167 case VIEW_TYPE_BACKGROUND_CONTENTS: |
| 168 case VIEW_TYPE_EXTENSION_DIALOG: | 168 case VIEW_TYPE_EXTENSION_DIALOG: |
| 169 case VIEW_TYPE_EXTENSION_GUEST: |
| 169 case VIEW_TYPE_EXTENSION_POPUP: | 170 case VIEW_TYPE_EXTENSION_POPUP: |
| 170 case VIEW_TYPE_LAUNCHER_PAGE: | 171 case VIEW_TYPE_LAUNCHER_PAGE: |
| 171 case VIEW_TYPE_PANEL: | 172 case VIEW_TYPE_PANEL: |
| 172 case VIEW_TYPE_TAB_CONTENTS: | 173 case VIEW_TYPE_TAB_CONTENTS: |
| 173 case VIEW_TYPE_VIRTUAL_KEYBOARD: | 174 case VIEW_TYPE_VIRTUAL_KEYBOARD: |
| 174 return true; | 175 return true; |
| 175 | 176 |
| 176 case VIEW_TYPE_INVALID: | 177 case VIEW_TYPE_INVALID: |
| 177 case VIEW_TYPE_EXTENSION_BACKGROUND_PAGE: | 178 case VIEW_TYPE_EXTENSION_BACKGROUND_PAGE: |
| 178 return false; | 179 return false; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 ReleaseLazyKeepaliveCountForFrame(render_frame_host); | 303 ReleaseLazyKeepaliveCountForFrame(render_frame_host); |
| 303 all_extension_frames_.erase(frame); | 304 all_extension_frames_.erase(frame); |
| 304 | 305 |
| 305 FOR_EACH_OBSERVER(ProcessManagerObserver, | 306 FOR_EACH_OBSERVER(ProcessManagerObserver, |
| 306 observer_list_, | 307 observer_list_, |
| 307 OnExtensionFrameUnregistered(extension_id, | 308 OnExtensionFrameUnregistered(extension_id, |
| 308 render_frame_host)); | 309 render_frame_host)); |
| 309 } | 310 } |
| 310 } | 311 } |
| 311 | 312 |
| 313 void ProcessManager::DidNavigateRenderFrameHost( |
| 314 content::RenderFrameHost* render_frame_host) { |
| 315 ExtensionRenderFrames::iterator frame = |
| 316 all_extension_frames_.find(render_frame_host); |
| 317 |
| 318 if (frame != all_extension_frames_.end()) { |
| 319 std::string extension_id = GetExtensionID(render_frame_host); |
| 320 |
| 321 FOR_EACH_OBSERVER(ProcessManagerObserver, |
| 322 observer_list_, |
| 323 OnExtensionFrameNavigated(extension_id, |
| 324 render_frame_host)); |
| 325 } |
| 326 } |
| 327 |
| 312 scoped_refptr<content::SiteInstance> ProcessManager::GetSiteInstanceForURL( | 328 scoped_refptr<content::SiteInstance> ProcessManager::GetSiteInstanceForURL( |
| 313 const GURL& url) { | 329 const GURL& url) { |
| 314 return make_scoped_refptr(site_instance_->GetRelatedSiteInstance(url)); | 330 return make_scoped_refptr(site_instance_->GetRelatedSiteInstance(url)); |
| 315 } | 331 } |
| 316 | 332 |
| 317 const ProcessManager::FrameSet ProcessManager::GetAllFrames() const { | 333 const ProcessManager::FrameSet ProcessManager::GetAllFrames() const { |
| 318 FrameSet result; | 334 FrameSet result; |
| 319 for (const auto& key_value : all_extension_frames_) | 335 for (const auto& key_value : all_extension_frames_) |
| 320 result.insert(key_value.first); | 336 result.insert(key_value.first); |
| 321 return result; | 337 return result; |
| 322 } | 338 } |
| 323 | 339 |
| 324 ProcessManager::FrameSet ProcessManager::GetRenderFrameHostsForExtension( | 340 ProcessManager::FrameSet ProcessManager::GetRenderFrameHostsForExtension( |
| 325 const std::string& extension_id) { | 341 const std::string& extension_id) { |
| 326 FrameSet result; | 342 FrameSet result; |
| 327 scoped_refptr<content::SiteInstance> site_instance(GetSiteInstanceForURL( | |
| 328 Extension::GetBaseURLFromExtensionId(extension_id))); | |
| 329 if (!site_instance.get()) | |
| 330 return result; | |
| 331 | |
| 332 // Gather up all the frames for that site. | |
| 333 for (const auto& key_value : all_extension_frames_) { | 343 for (const auto& key_value : all_extension_frames_) { |
| 334 if (key_value.first->GetSiteInstance() == site_instance) | 344 if (GetExtensionID(key_value.first) == extension_id) |
| 335 result.insert(key_value.first); | 345 result.insert(key_value.first); |
| 336 } | 346 } |
| 347 return result; |
| 348 } |
| 337 | 349 |
| 338 return result; | 350 bool ProcessManager::IsRenderFrameHostRegistered( |
| 351 content::RenderFrameHost* render_frame_host) { |
| 352 return all_extension_frames_.find(render_frame_host) != |
| 353 all_extension_frames_.end(); |
| 339 } | 354 } |
| 340 | 355 |
| 341 void ProcessManager::AddObserver(ProcessManagerObserver* observer) { | 356 void ProcessManager::AddObserver(ProcessManagerObserver* observer) { |
| 342 observer_list_.AddObserver(observer); | 357 observer_list_.AddObserver(observer); |
| 343 } | 358 } |
| 344 | 359 |
| 345 void ProcessManager::RemoveObserver(ProcessManagerObserver* observer) { | 360 void ProcessManager::RemoveObserver(ProcessManagerObserver* observer) { |
| 346 observer_list_.RemoveObserver(observer); | 361 observer_list_.RemoveObserver(observer); |
| 347 } | 362 } |
| 348 | 363 |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 if (extension && !IncognitoInfo::IsSplitMode(extension)) { | 976 if (extension && !IncognitoInfo::IsSplitMode(extension)) { |
| 962 BrowserContext* original_context = | 977 BrowserContext* original_context = |
| 963 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context()); | 978 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context()); |
| 964 return ProcessManager::Get(original_context)->GetSiteInstanceForURL(url); | 979 return ProcessManager::Get(original_context)->GetSiteInstanceForURL(url); |
| 965 } | 980 } |
| 966 | 981 |
| 967 return ProcessManager::GetSiteInstanceForURL(url); | 982 return ProcessManager::GetSiteInstanceForURL(url); |
| 968 } | 983 } |
| 969 | 984 |
| 970 } // namespace extensions | 985 } // namespace extensions |
| OLD | NEW |