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

Side by Side Diff: chrome/browser/extensions/extension_storage_monitor.cc

Issue 1092963004: [chrome/browser/extensions] favor DCHECK_CURRENTLY_ON for better logs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 "chrome/browser/extensions/extension_storage_monitor.h" 5 #include "chrome/browser/extensions/extension_storage_monitor.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 116
117 // Register as an observer for the extension's storage events. 117 // Register as an observer for the extension's storage events.
118 void StartObservingForExtension( 118 void StartObservingForExtension(
119 scoped_refptr<storage::QuotaManager> quota_manager, 119 scoped_refptr<storage::QuotaManager> quota_manager,
120 const std::string& extension_id, 120 const std::string& extension_id,
121 const GURL& site_url, 121 const GURL& site_url,
122 int64 next_threshold, 122 int64 next_threshold,
123 const base::TimeDelta& rate, 123 const base::TimeDelta& rate,
124 bool should_uma) { 124 bool should_uma) {
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 125 DCHECK_CURRENTLY_ON(BrowserThread::IO);
126 DCHECK(quota_manager.get()); 126 DCHECK(quota_manager.get());
127 127
128 GURL origin = site_url.GetOrigin(); 128 GURL origin = site_url.GetOrigin();
129 StorageState& state = origin_state_map_[origin]; 129 StorageState& state = origin_state_map_[origin];
130 state.quota_manager = quota_manager; 130 state.quota_manager = quota_manager;
131 state.extension_id = extension_id; 131 state.extension_id = extension_id;
132 state.next_threshold = next_threshold; 132 state.next_threshold = next_threshold;
133 state.should_uma = should_uma; 133 state.should_uma = should_uma;
134 134
135 // We always observe persistent storage usage. 135 // We always observe persistent storage usage.
136 storage::StorageObserver::MonitorParams params( 136 storage::StorageObserver::MonitorParams params(
137 storage::kStorageTypePersistent, origin, rate, false); 137 storage::kStorageTypePersistent, origin, rate, false);
138 quota_manager->AddStorageObserver(this, params); 138 quota_manager->AddStorageObserver(this, params);
139 if (should_uma) { 139 if (should_uma) {
140 // And if this is for uma, we also observe temporary storage usage. 140 // And if this is for uma, we also observe temporary storage usage.
141 MonitorParams temporary_params( 141 MonitorParams temporary_params(
142 storage::kStorageTypeTemporary, origin, rate, false); 142 storage::kStorageTypeTemporary, origin, rate, false);
143 quota_manager->AddStorageObserver(this, temporary_params); 143 quota_manager->AddStorageObserver(this, temporary_params);
144 } 144 }
145 } 145 }
146 146
147 // Updates the threshold for an extension already being monitored. 147 // Updates the threshold for an extension already being monitored.
148 void UpdateThresholdForExtension(const std::string& extension_id, 148 void UpdateThresholdForExtension(const std::string& extension_id,
149 int64 next_threshold) { 149 int64 next_threshold) {
150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 150 DCHECK_CURRENTLY_ON(BrowserThread::IO);
151 151
152 for (OriginStorageStateMap::iterator it = origin_state_map_.begin(); 152 for (OriginStorageStateMap::iterator it = origin_state_map_.begin();
153 it != origin_state_map_.end(); 153 it != origin_state_map_.end();
154 ++it) { 154 ++it) {
155 if (it->second.extension_id == extension_id) { 155 if (it->second.extension_id == extension_id) {
156 it->second.next_threshold = next_threshold; 156 it->second.next_threshold = next_threshold;
157 break; 157 break;
158 } 158 }
159 } 159 }
160 } 160 }
161 161
162 // Deregister as an observer for the extension's storage events. 162 // Deregister as an observer for the extension's storage events.
163 void StopObservingForExtension(const std::string& extension_id) { 163 void StopObservingForExtension(const std::string& extension_id) {
164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 164 DCHECK_CURRENTLY_ON(BrowserThread::IO);
165 165
166 for (OriginStorageStateMap::iterator it = origin_state_map_.begin(); 166 for (OriginStorageStateMap::iterator it = origin_state_map_.begin();
167 it != origin_state_map_.end(); ) { 167 it != origin_state_map_.end(); ) {
168 if (it->second.extension_id == extension_id) { 168 if (it->second.extension_id == extension_id) {
169 storage::StorageObserver::Filter filter( 169 storage::StorageObserver::Filter filter(
170 storage::kStorageTypePersistent, it->first); 170 storage::kStorageTypePersistent, it->first);
171 it->second.quota_manager->RemoveStorageObserverForFilter(this, filter); 171 it->second.quota_manager->RemoveStorageObserverForFilter(this, filter);
172 // We also need to unregister temporary storage observation, if this was 172 // We also need to unregister temporary storage observation, if this was
173 // being tracked for uma. 173 // being tracked for uma.
174 if (it->second.should_uma) { 174 if (it->second.should_uma) {
175 storage::StorageObserver::Filter temporary_filter( 175 storage::StorageObserver::Filter temporary_filter(
176 storage::kStorageTypeTemporary, it->first); 176 storage::kStorageTypeTemporary, it->first);
177 it->second.quota_manager->RemoveStorageObserverForFilter(this, 177 it->second.quota_manager->RemoveStorageObserverForFilter(this,
178 filter); 178 filter);
179 } 179 }
180 origin_state_map_.erase(it++); 180 origin_state_map_.erase(it++);
181 } else { 181 } else {
182 ++it; 182 ++it;
183 } 183 }
184 } 184 }
185 } 185 }
186 186
187 // Stop observing all storage events. Called during shutdown. 187 // Stop observing all storage events. Called during shutdown.
188 void StopObserving() { 188 void StopObserving() {
189 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 189 DCHECK_CURRENTLY_ON(BrowserThread::IO);
190 190
191 for (OriginStorageStateMap::iterator it = origin_state_map_.begin(); 191 for (OriginStorageStateMap::iterator it = origin_state_map_.begin();
192 it != origin_state_map_.end(); ++it) { 192 it != origin_state_map_.end(); ++it) {
193 it->second.quota_manager->RemoveStorageObserver(this); 193 it->second.quota_manager->RemoveStorageObserver(this);
194 } 194 }
195 origin_state_map_.clear(); 195 origin_state_map_.clear();
196 } 196 }
197 197
198 private: 198 private:
199 friend class base::DeleteHelper<StorageEventObserver>; 199 friend class base::DeleteHelper<StorageEventObserver>;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 placeholders.push_back(context_->GetPath().BaseName().MaybeAsASCII()); 394 placeholders.push_back(context_->GetPath().BaseName().MaybeAsASCII());
395 placeholders.push_back(extension_id); 395 placeholders.push_back(extension_id);
396 396
397 return ReplaceStringPlaceholders(kNotificationIdFormat, placeholders, NULL); 397 return ReplaceStringPlaceholders(kNotificationIdFormat, placeholders, NULL);
398 } 398 }
399 399
400 void ExtensionStorageMonitor::OnStorageThresholdExceeded( 400 void ExtensionStorageMonitor::OnStorageThresholdExceeded(
401 const std::string& extension_id, 401 const std::string& extension_id,
402 int64 next_threshold, 402 int64 next_threshold,
403 int64 current_usage) { 403 int64 current_usage) {
404 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 404 DCHECK_CURRENTLY_ON(BrowserThread::UI);
405 405
406 const Extension* extension = GetExtensionById(context_, extension_id); 406 const Extension* extension = GetExtensionById(context_, extension_id);
407 if (!extension) 407 if (!extension)
408 return; 408 return;
409 409
410 if (GetNextStorageThreshold(extension->id()) < next_threshold) 410 if (GetNextStorageThreshold(extension->id()) < next_threshold)
411 SetNextStorageThreshold(extension->id(), next_threshold); 411 SetNextStorageThreshold(extension->id(), next_threshold);
412 412
413 const int kIconSize = message_center::kNotificationIconSize; 413 const int kIconSize = message_center::kNotificationIconSize;
414 ExtensionResource resource = IconsInfo::GetIconResource( 414 ExtensionResource resource = IconsInfo::GetIconResource(
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 void ExtensionStorageMonitor::SetStorageNotificationEnabled( 678 void ExtensionStorageMonitor::SetStorageNotificationEnabled(
679 const std::string& extension_id, 679 const std::string& extension_id,
680 bool enable_notifications) { 680 bool enable_notifications) {
681 extension_prefs_->UpdateExtensionPref( 681 extension_prefs_->UpdateExtensionPref(
682 extension_id, 682 extension_id,
683 kPrefDisableStorageNotifications, 683 kPrefDisableStorageNotifications,
684 enable_notifications ? NULL : new base::FundamentalValue(true)); 684 enable_notifications ? NULL : new base::FundamentalValue(true));
685 } 685 }
686 686
687 } // namespace extensions 687 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_gcm_app_handler_unittest.cc ('k') | chrome/browser/extensions/webstore_installer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698