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

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

Issue 10514013: Filtered events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: split out event_filter changes Created 8 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 | 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_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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698