Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: extensions/browser/process_manager_unittest.cc

Issue 2802433004: ExtensionsTest: Move initialization to SetUp and avoid potential UAF. (Closed)
Patch Set: Avoid UAF. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/memory/ptr_util.h"
8 #include "content/public/browser/content_browser_client.h" 9 #include "content/public/browser/content_browser_client.h"
9 #include "content/public/browser/notification_service.h" 10 #include "content/public/browser/notification_service.h"
10 #include "content/public/browser/site_instance.h" 11 #include "content/public/browser/site_instance.h"
11 #include "content/public/common/content_client.h" 12 #include "content/public/common/content_client.h"
12 #include "content/public/test/test_browser_context.h" 13 #include "content/public/test/test_browser_context.h"
13 #include "extensions/browser/extension_registry.h" 14 #include "extensions/browser/extension_registry.h"
14 #include "extensions/browser/extensions_test.h" 15 #include "extensions/browser/extensions_test.h"
15 #include "extensions/browser/notification_types.h" 16 #include "extensions/browser/notification_types.h"
16 #include "extensions/browser/process_manager_delegate.h" 17 #include "extensions/browser/process_manager_delegate.h"
17 #include "extensions/browser/test_extensions_browser_client.h" 18 #include "extensions/browser/test_extensions_browser_client.h"
(...skipping 30 matching lines...) Expand all
48 } 49 }
49 50
50 bool is_background_page_allowed_; 51 bool is_background_page_allowed_;
51 bool defer_creating_startup_background_hosts_; 52 bool defer_creating_startup_background_hosts_;
52 }; 53 };
53 54
54 } // namespace 55 } // namespace
55 56
56 class ProcessManagerTest : public ExtensionsTest { 57 class ProcessManagerTest : public ExtensionsTest {
57 public: 58 public:
58 ProcessManagerTest() : extension_registry_(browser_context()) { 59 ProcessManagerTest() {}
60
61 ~ProcessManagerTest() override {}
62
63 void SetUp() override {
64 ExtensionsTest::SetUp();
65 extension_registry_ =
66 base::MakeUnique<ExtensionRegistry>(browser_context());
59 extensions_browser_client()->set_process_manager_delegate( 67 extensions_browser_client()->set_process_manager_delegate(
60 &process_manager_delegate_); 68 &process_manager_delegate_);
61 } 69 }
62 70
63 ~ProcessManagerTest() override {}
64
65 // Use original_context() to make it clear it is a non-incognito context. 71 // Use original_context() to make it clear it is a non-incognito context.
66 BrowserContext* original_context() { return browser_context(); } 72 BrowserContext* original_context() { return browser_context(); }
67 ExtensionRegistry* extension_registry() { return &extension_registry_; } 73 ExtensionRegistry* extension_registry() { return extension_registry_.get(); }
68 TestProcessManagerDelegate* process_manager_delegate() { 74 TestProcessManagerDelegate* process_manager_delegate() {
69 return &process_manager_delegate_; 75 return &process_manager_delegate_;
70 } 76 }
71 77
72 // Returns true if the notification |type| is registered for |manager| with 78 // Returns true if the notification |type| is registered for |manager| with
73 // source |context|. Pass NULL for |context| for all sources. 79 // source |context|. Pass NULL for |context| for all sources.
74 static bool IsRegistered(ProcessManager* manager, 80 static bool IsRegistered(ProcessManager* manager,
75 int type, 81 int type,
76 BrowserContext* context) { 82 BrowserContext* context) {
77 return manager->registrar_.IsRegistered( 83 return manager->registrar_.IsRegistered(
78 manager, type, content::Source<BrowserContext>(context)); 84 manager, type, content::Source<BrowserContext>(context));
79 } 85 }
80 86
81 private: 87 private:
82 ExtensionRegistry extension_registry_; // Shared between BrowserContexts. 88 std::unique_ptr<ExtensionRegistry>
89 extension_registry_; // Shared between BrowserContexts.
83 TestProcessManagerDelegate process_manager_delegate_; 90 TestProcessManagerDelegate process_manager_delegate_;
84 91
85 DISALLOW_COPY_AND_ASSIGN(ProcessManagerTest); 92 DISALLOW_COPY_AND_ASSIGN(ProcessManagerTest);
86 }; 93 };
87 94
88 // Test that notification registration works properly. 95 // Test that notification registration works properly.
89 TEST_F(ProcessManagerTest, ExtensionNotificationRegistration) { 96 TEST_F(ProcessManagerTest, ExtensionNotificationRegistration) {
90 // Test for a normal context ProcessManager. 97 // Test for a normal context ProcessManager.
91 std::unique_ptr<ProcessManager> manager1(ProcessManager::CreateForTesting( 98 std::unique_ptr<ProcessManager> manager1(ProcessManager::CreateForTesting(
92 original_context(), extension_registry())); 99 original_context(), extension_registry()));
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 scoped_refptr<SiteInstance> site21 = 235 scoped_refptr<SiteInstance> site21 =
229 manager1->GetSiteInstanceForURL(ext2_url1); 236 manager1->GetSiteInstanceForURL(ext2_url1);
230 EXPECT_NE(site11, site21); 237 EXPECT_NE(site11, site21);
231 238
232 scoped_refptr<SiteInstance> other_profile_site = 239 scoped_refptr<SiteInstance> other_profile_site =
233 manager2->GetSiteInstanceForURL(ext1_url1); 240 manager2->GetSiteInstanceForURL(ext1_url1);
234 EXPECT_NE(site11, other_profile_site); 241 EXPECT_NE(site11, other_profile_site);
235 } 242 }
236 243
237 } // namespace extensions 244 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698