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

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

Issue 61323002: Fix broken threading model in CheckDesktopNotificationPermission (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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) 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/extensions/extension_info_map.h" 5 #include "chrome/browser/extensions/extension_info_map.h"
6 6
7 #include "chrome/common/extensions/extension.h" 7 #include "chrome/common/extensions/extension.h"
8 #include "chrome/common/extensions/extension_set.h" 8 #include "chrome/common/extensions/extension_set.h"
9 #include "chrome/common/extensions/incognito_handler.h" 9 #include "chrome/common/extensions/incognito_handler.h"
10 #include "chrome/common/url_constants.h" 10 #include "chrome/common/url_constants.h"
(...skipping 12 matching lines...) Expand all
23 23
24 } // namespace 24 } // namespace
25 25
26 struct ExtensionInfoMap::ExtraData { 26 struct ExtensionInfoMap::ExtraData {
27 // When the extension was installed. 27 // When the extension was installed.
28 base::Time install_time; 28 base::Time install_time;
29 29
30 // True if the user has allowed this extension to run in incognito mode. 30 // True if the user has allowed this extension to run in incognito mode.
31 bool incognito_enabled; 31 bool incognito_enabled;
32 32
33 // True if the user has disabled notifications for this extension manually.
34 bool notifications_disabled;
35
33 ExtraData(); 36 ExtraData();
34 ~ExtraData(); 37 ~ExtraData();
35 }; 38 };
36 39
37 ExtensionInfoMap::ExtraData::ExtraData() : incognito_enabled(false) {} 40 ExtensionInfoMap::ExtraData::ExtraData() : incognito_enabled(false) {}
38 41
39 ExtensionInfoMap::ExtraData::~ExtraData() {} 42 ExtensionInfoMap::ExtraData::~ExtraData() {}
40 43
41 ExtensionInfoMap::ExtensionInfoMap() : signin_process_id_(-1) {} 44 ExtensionInfoMap::ExtensionInfoMap() : signin_process_id_(-1) {}
42 45
43 const extensions::ProcessMap& ExtensionInfoMap::process_map() const { 46 const extensions::ProcessMap& ExtensionInfoMap::process_map() const {
44 return process_map_; 47 return process_map_;
45 } 48 }
46 49
47 void ExtensionInfoMap::AddExtension(const Extension* extension, 50 void ExtensionInfoMap::AddExtension(const Extension* extension,
48 base::Time install_time, 51 base::Time install_time,
49 bool incognito_enabled) { 52 bool incognito_enabled,
53 bool notifications_disabled) {
50 CheckOnValidThread(); 54 CheckOnValidThread();
51 extensions_.Insert(extension); 55 extensions_.Insert(extension);
52 disabled_extensions_.Remove(extension->id()); 56 disabled_extensions_.Remove(extension->id());
53 57
54 extra_data_[extension->id()].install_time = install_time; 58 extra_data_[extension->id()].install_time = install_time;
55 extra_data_[extension->id()].incognito_enabled = incognito_enabled; 59 extra_data_[extension->id()].incognito_enabled = incognito_enabled;
60 extra_data_[extension->id()].notifications_disabled = notifications_disabled;
56 } 61 }
57 62
58 void ExtensionInfoMap::RemoveExtension( 63 void ExtensionInfoMap::RemoveExtension(
59 const std::string& extension_id, 64 const std::string& extension_id,
60 const UnloadedExtensionInfo::Reason reason) { 65 const UnloadedExtensionInfo::Reason reason) {
61 CheckOnValidThread(); 66 CheckOnValidThread();
62 const Extension* extension = extensions_.GetByID(extension_id); 67 const Extension* extension = extensions_.GetByID(extension_id);
63 extra_data_.erase(extension_id); // we don't care about disabled extra data 68 extra_data_.erase(extension_id); // we don't care about disabled extra data
64 bool was_uninstalled = (reason != UnloadedExtensionInfo::REASON_DISABLE && 69 bool was_uninstalled = (reason != UnloadedExtensionInfo::REASON_DISABLE &&
65 reason != UnloadedExtensionInfo::REASON_TERMINATE); 70 reason != UnloadedExtensionInfo::REASON_TERMINATE);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 175 }
171 176
172 void ExtensionInfoMap::SetSigninProcess(int process_id) { 177 void ExtensionInfoMap::SetSigninProcess(int process_id) {
173 signin_process_id_ = process_id; 178 signin_process_id_ = process_id;
174 } 179 }
175 180
176 bool ExtensionInfoMap::IsSigninProcess(int process_id) const { 181 bool ExtensionInfoMap::IsSigninProcess(int process_id) const {
177 return process_id == signin_process_id_; 182 return process_id == signin_process_id_;
178 } 183 }
179 184
185 void ExtensionInfoMap::SetNotificationsDisabled(
186 const std::string& extension_id,
187 bool notifications_disabled) {
188 ExtraDataMap::iterator iter = extra_data_.find(extension_id);
189 if (iter != extra_data_.end())
190 iter->second.notifications_disabled = notifications_disabled;
191 }
192
193 bool ExtensionInfoMap::GetNotificationsDisabledForExtension(
194 const std::string& extension_id) const {
195 ExtraDataMap::const_iterator iter = extra_data_.find(extension_id);
196 if (iter != extra_data_.end())
197 return iter->second.notifications_disabled;
198 return false;
199 }
200
180 ExtensionInfoMap::~ExtensionInfoMap() { 201 ExtensionInfoMap::~ExtensionInfoMap() {
181 if (quota_service_) { 202 if (quota_service_) {
182 BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, 203 BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
183 quota_service_.release()); 204 quota_service_.release());
184 } 205 }
185 } 206 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698