Don't preload rarely seen large images
[chromium-blink-merge.git] / components / keyed_service / content / browser_context_dependency_manager.cc
blob55978c45877086bca26e739661d0c0c13ceadac7
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
3 // found in the LICENSE file.
5 #include "components/keyed_service/content/browser_context_dependency_manager.h"
7 #include "base/memory/singleton.h"
8 #include "base/trace_event/trace_event.h"
9 #include "content/public/browser/browser_context.h"
11 #ifndef NDEBUG
12 #include "base/command_line.h"
13 #include "base/files/file_util.h"
15 // Dumps dependency information about our browser context keyed services
16 // into a dot file in the browser context directory.
17 const char kDumpBrowserContextDependencyGraphFlag[] =
18 "dump-browser-context-graph";
19 #endif // NDEBUG
21 void BrowserContextDependencyManager::RegisterProfilePrefsForServices(
22 content::BrowserContext* context,
23 user_prefs::PrefRegistrySyncable* pref_registry) {
24 TRACE_EVENT0(
25 "browser",
26 "BrowserContextDependencyManager::RegisterProfilePrefsForServices");
27 RegisterPrefsForServices(context, pref_registry);
30 void BrowserContextDependencyManager::CreateBrowserContextServices(
31 content::BrowserContext* context) {
32 DoCreateBrowserContextServices(context, false);
35 void BrowserContextDependencyManager::CreateBrowserContextServicesForTest(
36 content::BrowserContext* context) {
37 DoCreateBrowserContextServices(context, true);
40 void BrowserContextDependencyManager::DoCreateBrowserContextServices(
41 content::BrowserContext* context,
42 bool is_testing_context) {
43 TRACE_EVENT0(
44 "browser",
45 "BrowserContextDependencyManager::DoCreateBrowserContextServices")
46 will_create_browser_context_services_callbacks_.Notify(context);
47 DependencyManager::CreateContextServices(context, is_testing_context);
50 void BrowserContextDependencyManager::DestroyBrowserContextServices(
51 content::BrowserContext* context) {
52 DependencyManager::DestroyContextServices(context);
55 scoped_ptr<base::CallbackList<void(content::BrowserContext*)>::Subscription>
56 BrowserContextDependencyManager::
57 RegisterWillCreateBrowserContextServicesCallbackForTesting(
58 const base::Callback<void(content::BrowserContext*)>& callback) {
59 return will_create_browser_context_services_callbacks_.Add(callback);
62 #ifndef NDEBUG
63 void BrowserContextDependencyManager::AssertBrowserContextWasntDestroyed(
64 content::BrowserContext* context) {
65 DependencyManager::AssertContextWasntDestroyed(context);
68 void BrowserContextDependencyManager::MarkBrowserContextLiveForTesting(
69 content::BrowserContext* context) {
70 DependencyManager::MarkContextLiveForTesting(context);
72 #endif // NDEBUG
74 // static
75 BrowserContextDependencyManager*
76 BrowserContextDependencyManager::GetInstance() {
77 return Singleton<BrowserContextDependencyManager>::get();
80 BrowserContextDependencyManager::BrowserContextDependencyManager() {
83 BrowserContextDependencyManager::~BrowserContextDependencyManager() {
86 #ifndef NDEBUG
87 void BrowserContextDependencyManager::DumpContextDependencies(
88 base::SupportsUserData* context) const {
89 // Whenever we try to build a destruction ordering, we should also dump a
90 // dependency graph to "/path/to/context/context-dependencies.dot".
91 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
92 kDumpBrowserContextDependencyGraphFlag)) {
93 base::FilePath dot_file =
94 static_cast<const content::BrowserContext*>(context)
95 ->GetPath()
96 .AppendASCII("browser-context-dependencies.dot");
97 DumpDependenciesAsGraphviz("BrowserContext", dot_file);
100 #endif // NDEBUG