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 = NULL; |
| 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 = NULL; |
| 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 |