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

Side by Side Diff: components/browser_context_keyed_service/browser_context_dependency_manager.cc

Issue 159763004: Eliminate potential for flaky crash in BCKSFactory::SetTestingFactory(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "components/browser_context_keyed_service/browser_context_dependency_ma nager.h" 5 #include "components/browser_context_keyed_service/browser_context_dependency_ma nager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <deque> 8 #include <deque>
9 #include <iterator> 9 #include <iterator>
10 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 content::BrowserContext* context) { 64 content::BrowserContext* context) {
65 DoCreateBrowserContextServices(context, true); 65 DoCreateBrowserContextServices(context, true);
66 } 66 }
67 67
68 void BrowserContextDependencyManager::DoCreateBrowserContextServices( 68 void BrowserContextDependencyManager::DoCreateBrowserContextServices(
69 content::BrowserContext* context, 69 content::BrowserContext* context,
70 bool is_testing_context) { 70 bool is_testing_context) {
71 TRACE_EVENT0("browser", 71 TRACE_EVENT0("browser",
72 "BrowserContextDependencyManager::DoCreateBrowserContextServices") 72 "BrowserContextDependencyManager::DoCreateBrowserContextServices")
73 #ifndef NDEBUG 73 #ifndef NDEBUG
74 // Unmark |context| as dead. This exists because of unit tests, which will 74 MarkBrowserContextLiveForTesting(context);
75 // often have similar stack structures. 0xWhatever might be created, go out
76 // of scope, and then a new BrowserContext object might be created
77 // at 0xWhatever.
78 dead_context_pointers_.erase(context);
79 #endif 75 #endif
80 76
81 std::vector<DependencyNode*> construction_order; 77 std::vector<DependencyNode*> construction_order;
82 if (!dependency_graph_.GetConstructionOrder(&construction_order)) { 78 if (!dependency_graph_.GetConstructionOrder(&construction_order)) {
83 NOTREACHED(); 79 NOTREACHED();
84 } 80 }
85 81
86 #ifndef NDEBUG 82 #ifndef NDEBUG
87 DumpBrowserContextDependencies(context); 83 DumpBrowserContextDependencies(context);
88 #endif 84 #endif
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 void BrowserContextDependencyManager::AssertBrowserContextWasntDestroyed( 128 void BrowserContextDependencyManager::AssertBrowserContextWasntDestroyed(
133 content::BrowserContext* context) { 129 content::BrowserContext* context) {
134 if (dead_context_pointers_.find(context) != dead_context_pointers_.end()) { 130 if (dead_context_pointers_.find(context) != dead_context_pointers_.end()) {
135 NOTREACHED() << "Attempted to access a BrowserContext that was ShutDown(). " 131 NOTREACHED() << "Attempted to access a BrowserContext that was ShutDown(). "
136 << "This is most likely a heap smasher in progress. After " 132 << "This is most likely a heap smasher in progress. After "
137 << "BrowserContextKeyedService::Shutdown() completes, your " 133 << "BrowserContextKeyedService::Shutdown() completes, your "
138 << "service MUST NOT refer to depended BrowserContext " 134 << "service MUST NOT refer to depended BrowserContext "
139 << "services again."; 135 << "services again.";
140 } 136 }
141 } 137 }
138
139 void BrowserContextDependencyManager::MarkBrowserContextLiveForTesting(
140 content::BrowserContext* context) {
141 dead_context_pointers_.erase(context);
142 }
142 #endif 143 #endif
143 144
144 // static 145 // static
145 BrowserContextDependencyManager* 146 BrowserContextDependencyManager*
146 BrowserContextDependencyManager::GetInstance() { 147 BrowserContextDependencyManager::GetInstance() {
147 return Singleton<BrowserContextDependencyManager>::get(); 148 return Singleton<BrowserContextDependencyManager>::get();
148 } 149 }
149 150
150 BrowserContextDependencyManager::BrowserContextDependencyManager() { 151 BrowserContextDependencyManager::BrowserContextDependencyManager() {
151 } 152 }
(...skipping 18 matching lines...) Expand all
170 kDumpBrowserContextDependencyGraphFlag)) { 171 kDumpBrowserContextDependencyGraphFlag)) {
171 base::FilePath dot_file = 172 base::FilePath dot_file =
172 context->GetPath().AppendASCII("browser-context-dependencies.dot"); 173 context->GetPath().AppendASCII("browser-context-dependencies.dot");
173 std::string contents = dependency_graph_.DumpAsGraphviz( 174 std::string contents = dependency_graph_.DumpAsGraphviz(
174 "BrowserContext", 175 "BrowserContext",
175 base::Bind(&BrowserContextKeyedBaseFactoryGetNodeName)); 176 base::Bind(&BrowserContextKeyedBaseFactoryGetNodeName));
176 file_util::WriteFile(dot_file, contents.c_str(), contents.size()); 177 file_util::WriteFile(dot_file, contents.c_str(), contents.size());
177 } 178 }
178 } 179 }
179 #endif // NDEBUG 180 #endif // NDEBUG
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698