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

Side by Side Diff: chrome/browser/profiles/profile.cc

Issue 2899113002: Explicitly catch tests in chrome/ not using proper test profiles. (Closed)
Patch Set: nil Created 3 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/profiles/profile.h" 5 #include "chrome/browser/profiles/profile.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 22 matching lines...) Expand all
33 #endif 33 #endif
34 34
35 #if !defined(OS_ANDROID) 35 #if !defined(OS_ANDROID)
36 #include "content/public/browser/host_zoom_map.h" 36 #include "content/public/browser/host_zoom_map.h"
37 #endif 37 #endif
38 38
39 #if BUILDFLAG(ENABLE_EXTENSIONS) 39 #if BUILDFLAG(ENABLE_EXTENSIONS)
40 #include "extensions/browser/pref_names.h" 40 #include "extensions/browser/pref_names.h"
41 #endif 41 #endif
42 42
43 #if DCHECK_IS_ON()
44
45 #include <set>
46 #include "base/lazy_instance.h"
47 #include "base/logging.h"
48 #include "base/synchronization/lock.h"
49
50 namespace {
51
52 base::LazyInstance<base::Lock>::Leaky g_instances_lock =
53 LAZY_INSTANCE_INITIALIZER;
54 base::LazyInstance<std::set<content::BrowserContext*>>::Leaky g_instances =
55 LAZY_INSTANCE_INITIALIZER;
56
57 } // namespace
58
59 #endif // DCHECK_IS_ON()
60
43 Profile::Profile() 61 Profile::Profile()
44 : restored_last_session_(false), 62 : restored_last_session_(false),
45 sent_destroyed_notification_(false), 63 sent_destroyed_notification_(false),
46 accessibility_pause_level_(0), 64 accessibility_pause_level_(0),
47 is_guest_profile_(false), 65 is_guest_profile_(false),
48 is_system_profile_(false) { 66 is_system_profile_(false) {
67 #if DCHECK_IS_ON()
68 base::AutoLock lock(g_instances_lock.Get());
69 g_instances.Get().insert(this);
70 #endif // DCHECK_IS_ON()
49 } 71 }
50 72
51 Profile::~Profile() { 73 Profile::~Profile() {
74 #if DCHECK_IS_ON()
75 base::AutoLock lock(g_instances_lock.Get());
76 g_instances.Get().erase(this);
77 #endif // DCHECK_IS_ON()
52 } 78 }
53 79
54 // static 80 // static
55 Profile* Profile::FromBrowserContext(content::BrowserContext* browser_context) { 81 Profile* Profile::FromBrowserContext(content::BrowserContext* browser_context) {
56 // This is safe; this is the only implementation of the browser context. 82 if (!browser_context)
83 return nullptr;
84
85 // For code running in a chrome/ environment, it is safe to cast to Profile*
86 // because Profile is the only implementation of BrowserContext used. In
87 // testing, however, there are several BrowserContext subclasses that are not
88 // Profile subclasses, and we can catch them. http://crbug.com/725276
89 #if DCHECK_IS_ON()
90 base::AutoLock lock(g_instances_lock.Get());
91 if (!g_instances.Get().count(browser_context)) {
92 DCHECK(false)
93 << "Non-Profile BrowserContext passed to Profile::FromBrowserContext! "
94 "If you have a test linked in chrome/ you need a chrome/ based test "
95 "class such as TestingProfile in chrome/test/base/testing_profile.h "
96 "or you need to subclass your test class from Profile, not from "
97 "BrowserContext.";
98 }
99 #endif // DCHECK_IS_ON()
57 return static_cast<Profile*>(browser_context); 100 return static_cast<Profile*>(browser_context);
58 } 101 }
59 102
60 // static 103 // static
61 Profile* Profile::FromWebUI(content::WebUI* web_ui) { 104 Profile* Profile::FromWebUI(content::WebUI* web_ui) {
62 return FromBrowserContext(web_ui->GetWebContents()->GetBrowserContext()); 105 return FromBrowserContext(web_ui->GetWebContents()->GetBrowserContext());
63 } 106 }
64 107
65 TestingProfile* Profile::AsTestingProfile() { 108 TestingProfile* Profile::AsTestingProfile() {
66 return NULL; 109 return nullptr;
67 } 110 }
68 111
69 #if !defined(OS_ANDROID) 112 #if !defined(OS_ANDROID)
70 ChromeZoomLevelPrefs* Profile::GetZoomLevelPrefs() { 113 ChromeZoomLevelPrefs* Profile::GetZoomLevelPrefs() {
71 return NULL; 114 return nullptr;
72 } 115 }
73 #endif // !defined(OS_ANDROID) 116 #endif // !defined(OS_ANDROID)
74 117
75 Profile::Delegate::~Delegate() { 118 Profile::Delegate::~Delegate() {
76 } 119 }
77 120
78 // static 121 // static
79 const char Profile::kProfileKey[] = "__PROFILE__"; 122 const char Profile::kProfileKey[] = "__PROFILE__";
80 // This must be a string which can never be a valid domain. 123 // This must be a string which can never be a valid domain.
81 const char Profile::kNoHostedDomainFound[] = "NO_HOSTED_DOMAIN"; 124 const char Profile::kNoHostedDomainFound[] = "NO_HOSTED_DOMAIN";
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 return a->GetOriginalProfile() < b->GetOriginalProfile(); 296 return a->GetOriginalProfile() < b->GetOriginalProfile();
254 } 297 }
255 298
256 #if !defined(OS_ANDROID) 299 #if !defined(OS_ANDROID)
257 double Profile::GetDefaultZoomLevelForProfile() { 300 double Profile::GetDefaultZoomLevelForProfile() {
258 return GetDefaultStoragePartition(this) 301 return GetDefaultStoragePartition(this)
259 ->GetHostZoomMap() 302 ->GetHostZoomMap()
260 ->GetDefaultZoomLevel(); 303 ->GetDefaultZoomLevel();
261 } 304 }
262 #endif // !defined(OS_ANDROID) 305 #endif // !defined(OS_ANDROID)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698