OLD | NEW |
---|---|
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_prefs.h" | 5 #include "chrome/browser/extensions/extension_prefs.h" |
6 | 6 |
7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/extensions/admin_policy.h" | 10 #include "chrome/browser/extensions/admin_policy.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
164 // A preference that contains extension-set content settings. | 164 // A preference that contains extension-set content settings. |
165 const char kPrefContentSettings[] = "content_settings"; | 165 const char kPrefContentSettings[] = "content_settings"; |
166 | 166 |
167 // A preference that contains extension-set content settings. | 167 // A preference that contains extension-set content settings. |
168 const char kPrefIncognitoContentSettings[] = "incognito_content_settings"; | 168 const char kPrefIncognitoContentSettings[] = "incognito_content_settings"; |
169 | 169 |
170 // A list of event names that this extension has registered from its lazy | 170 // A list of event names that this extension has registered from its lazy |
171 // background page. | 171 // background page. |
172 const char kRegisteredEvents[] = "events"; | 172 const char kRegisteredEvents[] = "events"; |
173 | 173 |
174 // A dictionary of event names to lists of filters that this extension has | |
175 // registered from its lazy background page. | |
176 const char kFilteredEvents[] = "filtered_events"; | |
177 | |
174 // A list of alarms that this extension has set. | 178 // A list of alarms that this extension has set. |
175 const char kRegisteredAlarms[] = "alarms"; | 179 const char kRegisteredAlarms[] = "alarms"; |
176 const char kAlarmScheduledRunTime[] = "scheduled_run_time"; | 180 const char kAlarmScheduledRunTime[] = "scheduled_run_time"; |
177 | 181 |
178 // Persisted value for omnibox.setDefaultSuggestion. | 182 // Persisted value for omnibox.setDefaultSuggestion. |
179 const char kOmniboxDefaultSuggestion[] = "omnibox_default_suggestion"; | 183 const char kOmniboxDefaultSuggestion[] = "omnibox_default_suggestion"; |
180 | 184 |
181 // A preference containing context menu items, persisted for event pages. | 185 // A preference containing context menu items, persisted for event pages. |
182 const char kPrefContextMenus[] = "context_menus"; | 186 const char kPrefContextMenus[] = "context_menus"; |
183 | 187 |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
940 return events; | 944 return events; |
941 | 945 |
942 for (size_t i = 0; i < value->GetSize(); ++i) { | 946 for (size_t i = 0; i < value->GetSize(); ++i) { |
943 std::string event; | 947 std::string event; |
944 if (value->GetString(i, &event)) | 948 if (value->GetString(i, &event)) |
945 events.insert(event); | 949 events.insert(event); |
946 } | 950 } |
947 return events; | 951 return events; |
948 } | 952 } |
949 | 953 |
954 void ExtensionPrefs::AddFilterToEvent(const std::string& event_name, | |
955 const std::string& extension_id, | |
956 const DictionaryValue* filter) { | |
957 const DictionaryValue* filtered_events = GetFilteredEvents(extension_id); | |
958 scoped_ptr<DictionaryValue> new_filtered_events; | |
959 if (!filtered_events) | |
960 new_filtered_events.reset(new DictionaryValue); | |
961 else | |
962 new_filtered_events.reset(filtered_events->DeepCopy()); | |
963 | |
964 ListValue* filter_list; | |
battre
2012/06/13 09:21:54
initialize to NULL
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
| |
965 if (!new_filtered_events->GetList(event_name, &filter_list)) { | |
966 filter_list = new ListValue(); | |
967 new_filtered_events->Set(event_name, filter_list); | |
968 } | |
969 filter_list->Append(filter->DeepCopy()); | |
970 | |
971 UpdateExtensionPref(extension_id, kFilteredEvents, | |
972 new_filtered_events.release()); | |
973 } | |
974 | |
975 void ExtensionPrefs::RemoveFilterFromEvent(const std::string& event_name, | |
976 const std::string& extension_id, | |
977 const DictionaryValue* filter) { | |
978 const DictionaryValue* filtered_events = GetFilteredEvents(extension_id); | |
979 if (!filtered_events) | |
980 return; | |
981 | |
982 scoped_ptr<DictionaryValue> new_filtered_events(filtered_events->DeepCopy()); | |
983 ListValue* filter_list; | |
984 if (!new_filtered_events->GetList(event_name, &filter_list)) | |
985 return; | |
986 | |
987 bool removed = false; | |
988 for (size_t i = 0; i < filter_list->GetSize(); i++) { | |
989 DictionaryValue* filter; | |
990 CHECK(filter_list->GetDictionary(i, &filter)); | |
991 if (filter->Equals(filter)) { | |
992 filter_list->Remove(i, NULL); | |
993 removed = true; | |
994 break; | |
995 } | |
996 } | |
997 | |
998 if (removed) | |
999 UpdateExtensionPref(extension_id, kFilteredEvents, | |
1000 new_filtered_events.release()); | |
1001 } | |
1002 | |
1003 const DictionaryValue* ExtensionPrefs::GetFilteredEvents( | |
1004 const std::string& extension_id) { | |
1005 const DictionaryValue* extension = GetExtensionPref(extension_id); | |
1006 if (!extension) | |
1007 return NULL; | |
1008 DictionaryValue* result; | |
battre
2012/06/13 09:21:54
initialize to NULL.
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
| |
1009 if (!extension->GetDictionary(kFilteredEvents, &result)) | |
1010 return NULL; | |
1011 return result; | |
1012 } | |
1013 | |
950 void ExtensionPrefs::SetRegisteredEvents( | 1014 void ExtensionPrefs::SetRegisteredEvents( |
951 const std::string& extension_id, const std::set<std::string>& events) { | 1015 const std::string& extension_id, const std::set<std::string>& events) { |
952 ListValue* value = new ListValue(); | 1016 ListValue* value = new ListValue(); |
953 for (std::set<std::string>::const_iterator it = events.begin(); | 1017 for (std::set<std::string>::const_iterator it = events.begin(); |
954 it != events.end(); ++it) { | 1018 it != events.end(); ++it) { |
955 value->Append(new StringValue(*it)); | 1019 value->Append(new StringValue(*it)); |
956 } | 1020 } |
957 UpdateExtensionPref(extension_id, kRegisteredEvents, value); | 1021 UpdateExtensionPref(extension_id, kRegisteredEvents, value); |
958 } | 1022 } |
959 | 1023 |
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1925 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, | 1989 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, |
1926 "0", // default value | 1990 "0", // default value |
1927 PrefService::UNSYNCABLE_PREF); | 1991 PrefService::UNSYNCABLE_PREF); |
1928 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, | 1992 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, |
1929 0, // default value | 1993 0, // default value |
1930 PrefService::UNSYNCABLE_PREF); | 1994 PrefService::UNSYNCABLE_PREF); |
1931 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, | 1995 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, |
1932 0, // default value | 1996 0, // default value |
1933 PrefService::UNSYNCABLE_PREF); | 1997 PrefService::UNSYNCABLE_PREF); |
1934 } | 1998 } |
OLD | NEW |