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

Unified Diff: chrome/browser/extensions/extension_prefs.cc

Issue 10152008: Extension alarms now persist in Preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: no more TimerInfo Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_prefs.cc
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 7dc67c8488624e8dd642d8bc63d95cc9754e4700..793a04ed61d02e95f23e532ede4f1ea559b2950f 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -7,6 +7,7 @@
#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
+#include "chrome/browser/extensions/api/alarms/alarm_manager.h"
#include "chrome/browser/extensions/extension_pref_store.h"
#include "chrome/browser/extensions/extension_sorting.h"
#include "chrome/browser/prefs/pref_notifier.h"
@@ -156,6 +157,10 @@ const char kPrefIncognitoContentSettings[] = "incognito_content_settings";
// background page.
const char kRegisteredEvents[] = "events";
+// A list of alarms that this extension has set.
+const char kRegisteredAlarms[] = "alarms";
+const char kAlarmScheduledRunTime[] = "scheduled_run_time";
+
// Provider of write access to a dictionary storing extension prefs.
class ScopedExtensionPrefUpdate : public DictionaryPrefUpdate {
public:
@@ -933,6 +938,43 @@ void ExtensionPrefs::SetRegisteredEvents(
UpdateExtensionPref(extension_id, kRegisteredEvents, value);
}
+std::vector<extensions::AlarmPref> ExtensionPrefs::GetRegisteredAlarms(
+ const std::string& extension_id) {
+ std::vector<extensions::AlarmPref> alarms;
+ const base::DictionaryValue* extension = GetExtensionPref(extension_id);
+ if (!extension)
+ return alarms;
+
+ base::ListValue* list = NULL;
+ if (!extension->GetList(kRegisteredAlarms, &list))
+ return alarms;
+
+ typedef extensions::AlarmManager::Alarm Alarm;
+ for (size_t i = 0; i < list->GetSize(); ++i) {
+ base::DictionaryValue* alarm_dict = NULL;
+ extensions::AlarmPref alarm;
+ alarm.alarm.reset(new Alarm());
+ if (list->GetDictionary(i, &alarm_dict) &&
+ Alarm::Populate(*alarm_dict, alarm.alarm.get())) {
+ alarm.scheduled_run_time = ReadTime(alarm_dict, kAlarmScheduledRunTime);
+ alarms.push_back(alarm);
+ }
+ }
+ return alarms;
+}
+
+void ExtensionPrefs::SetRegisteredAlarms(
+ const std::string& extension_id,
+ const std::vector<extensions::AlarmPref>& alarms) {
+ base::ListValue* list = new ListValue();
+ for (size_t i = 0; i < alarms.size(); ++i) {
+ scoped_ptr<base::DictionaryValue> alarm = alarms[i].alarm->ToValue().Pass();
+ SaveTime(alarm.get(), kAlarmScheduledRunTime, alarms[i].scheduled_run_time);
+ list->Append(alarm.release());
+ }
+ UpdateExtensionPref(extension_id, kRegisteredAlarms, list);
+}
+
bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) {
return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled);
}
@@ -1130,8 +1172,9 @@ void ExtensionPrefs::OnExtensionInstalled(
extension->manifest()->value()->DeepCopy());
}
- // Clear any events that may be registered from a previous install.
+ // Clear any events and alarms that may be registered from a previous install.
extension_dict->Remove(kRegisteredEvents, NULL);
+ extension_dict->Remove(kRegisteredAlarms, NULL);
if (extension->is_app()) {
StringOrdinal new_page_ordinal = page_ordinal.IsValid() ?
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698