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 #include "extensions/browser/process_manager.h" | 5 #include "extensions/browser/process_manager.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "content/public/browser/content_browser_client.h" | 8 #include "content/public/browser/content_browser_client.h" |
9 #include "content/public/browser/notification_service.h" | 9 #include "content/public/browser/notification_service.h" |
10 #include "content/public/browser/site_instance.h" | 10 #include "content/public/browser/site_instance.h" |
11 #include "content/public/common/content_client.h" | 11 #include "content/public/common/content_client.h" |
12 #include "content/public/test/test_browser_context.h" | 12 #include "content/public/test/test_browser_context.h" |
13 #include "extensions/browser/extension_registry.h" | 13 #include "extensions/browser/extension_registry.h" |
14 #include "extensions/browser/extensions_test.h" | 14 #include "extensions/browser/extensions_test.h" |
15 #include "extensions/browser/notification_types.h" | 15 #include "extensions/browser/notification_types.h" |
16 #include "extensions/browser/process_manager_delegate.h" | 16 #include "extensions/browser/process_manager_delegate.h" |
17 #include "extensions/browser/test_extensions_browser_client.h" | 17 #include "extensions/browser/test_extensions_browser_client.h" |
18 | 18 |
19 using content::BrowserContext; | 19 using content::BrowserContext; |
20 using content::SiteInstance; | 20 using content::SiteInstance; |
21 using content::TestBrowserContext; | 21 using content::TestBrowserContext; |
22 | 22 |
23 namespace extensions { | 23 namespace extensions { |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
27 // An incognito version of a TestBrowserContext. | |
28 class TestBrowserContextIncognito : public TestBrowserContext { | |
29 public: | |
30 TestBrowserContextIncognito() {} | |
31 ~TestBrowserContextIncognito() override {} | |
32 | |
33 // TestBrowserContext implementation. | |
34 bool IsOffTheRecord() const override { return true; } | |
35 | |
36 private: | |
37 DISALLOW_COPY_AND_ASSIGN(TestBrowserContextIncognito); | |
38 }; | |
39 | |
40 // A trivial ProcessManagerDelegate. | 27 // A trivial ProcessManagerDelegate. |
41 class TestProcessManagerDelegate : public ProcessManagerDelegate { | 28 class TestProcessManagerDelegate : public ProcessManagerDelegate { |
42 public: | 29 public: |
43 TestProcessManagerDelegate() | 30 TestProcessManagerDelegate() |
44 : is_background_page_allowed_(true), | 31 : is_background_page_allowed_(true), |
45 defer_creating_startup_background_hosts_(false) {} | 32 defer_creating_startup_background_hosts_(false) {} |
46 ~TestProcessManagerDelegate() override {} | 33 ~TestProcessManagerDelegate() override {} |
47 | 34 |
48 // ProcessManagerDelegate implementation. | 35 // ProcessManagerDelegate implementation. |
49 bool AreBackgroundPagesAllowedForContext( | 36 bool AreBackgroundPagesAllowedForContext( |
(...skipping 12 matching lines...) Expand all Loading... |
62 | 49 |
63 bool is_background_page_allowed_; | 50 bool is_background_page_allowed_; |
64 bool defer_creating_startup_background_hosts_; | 51 bool defer_creating_startup_background_hosts_; |
65 }; | 52 }; |
66 | 53 |
67 } // namespace | 54 } // namespace |
68 | 55 |
69 class ProcessManagerTest : public ExtensionsTest { | 56 class ProcessManagerTest : public ExtensionsTest { |
70 public: | 57 public: |
71 ProcessManagerTest() : extension_registry_(browser_context()) { | 58 ProcessManagerTest() : extension_registry_(browser_context()) { |
72 extensions_browser_client()->SetIncognitoContext(&incognito_context_); | |
73 extensions_browser_client()->set_process_manager_delegate( | 59 extensions_browser_client()->set_process_manager_delegate( |
74 &process_manager_delegate_); | 60 &process_manager_delegate_); |
75 } | 61 } |
76 | 62 |
77 ~ProcessManagerTest() override {} | 63 ~ProcessManagerTest() override {} |
78 | 64 |
79 // Use original_context() to make it clear it is a non-incognito context. | 65 // Use original_context() to make it clear it is a non-incognito context. |
80 BrowserContext* original_context() { return browser_context(); } | 66 BrowserContext* original_context() { return browser_context(); } |
81 BrowserContext* incognito_context() { return &incognito_context_; } | |
82 ExtensionRegistry* extension_registry() { return &extension_registry_; } | 67 ExtensionRegistry* extension_registry() { return &extension_registry_; } |
83 TestProcessManagerDelegate* process_manager_delegate() { | 68 TestProcessManagerDelegate* process_manager_delegate() { |
84 return &process_manager_delegate_; | 69 return &process_manager_delegate_; |
85 } | 70 } |
86 | 71 |
87 // Returns true if the notification |type| is registered for |manager| with | 72 // Returns true if the notification |type| is registered for |manager| with |
88 // source |context|. Pass NULL for |context| for all sources. | 73 // source |context|. Pass NULL for |context| for all sources. |
89 static bool IsRegistered(ProcessManager* manager, | 74 static bool IsRegistered(ProcessManager* manager, |
90 int type, | 75 int type, |
91 BrowserContext* context) { | 76 BrowserContext* context) { |
92 return manager->registrar_.IsRegistered( | 77 return manager->registrar_.IsRegistered( |
93 manager, type, content::Source<BrowserContext>(context)); | 78 manager, type, content::Source<BrowserContext>(context)); |
94 } | 79 } |
95 | 80 |
96 private: | 81 private: |
97 TestBrowserContextIncognito incognito_context_; | |
98 ExtensionRegistry extension_registry_; // Shared between BrowserContexts. | 82 ExtensionRegistry extension_registry_; // Shared between BrowserContexts. |
99 TestProcessManagerDelegate process_manager_delegate_; | 83 TestProcessManagerDelegate process_manager_delegate_; |
100 | 84 |
101 DISALLOW_COPY_AND_ASSIGN(ProcessManagerTest); | 85 DISALLOW_COPY_AND_ASSIGN(ProcessManagerTest); |
102 }; | 86 }; |
103 | 87 |
104 // Test that notification registration works properly. | 88 // Test that notification registration works properly. |
105 TEST_F(ProcessManagerTest, ExtensionNotificationRegistration) { | 89 TEST_F(ProcessManagerTest, ExtensionNotificationRegistration) { |
106 // Test for a normal context ProcessManager. | 90 // Test for a normal context ProcessManager. |
107 std::unique_ptr<ProcessManager> manager1(ProcessManager::CreateForTesting( | 91 std::unique_ptr<ProcessManager> manager1(ProcessManager::CreateForTesting( |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 scoped_refptr<SiteInstance> site21 = | 228 scoped_refptr<SiteInstance> site21 = |
245 manager1->GetSiteInstanceForURL(ext2_url1); | 229 manager1->GetSiteInstanceForURL(ext2_url1); |
246 EXPECT_NE(site11, site21); | 230 EXPECT_NE(site11, site21); |
247 | 231 |
248 scoped_refptr<SiteInstance> other_profile_site = | 232 scoped_refptr<SiteInstance> other_profile_site = |
249 manager2->GetSiteInstanceForURL(ext1_url1); | 233 manager2->GetSiteInstanceForURL(ext1_url1); |
250 EXPECT_NE(site11, other_profile_site); | 234 EXPECT_NE(site11, other_profile_site); |
251 } | 235 } |
252 | 236 |
253 } // namespace extensions | 237 } // namespace extensions |
OLD | NEW |