Index: chrome/browser/extensions/api/alarms/alarms_api.cc |
diff --git a/chrome/browser/extensions/api/alarms/alarms_api.cc b/chrome/browser/extensions/api/alarms/alarms_api.cc |
deleted file mode 100644 |
index 9ac6ab2264fa23d8024d1172eafdcdb1081f3459..0000000000000000000000000000000000000000 |
--- a/chrome/browser/extensions/api/alarms/alarms_api.cc |
+++ /dev/null |
@@ -1,206 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/extensions/api/alarms/alarms_api.h" |
- |
-#include "base/strings/string_number_conversions.h" |
-#include "base/time/clock.h" |
-#include "base/time/default_clock.h" |
-#include "base/values.h" |
-#include "chrome/browser/extensions/api/alarms/alarm_manager.h" |
-#include "chrome/common/extensions/api/alarms.h" |
-#include "extensions/common/error_utils.h" |
- |
-namespace alarms = extensions::api::alarms; |
- |
-namespace extensions { |
- |
-namespace { |
- |
-const char kDefaultAlarmName[] = ""; |
-const char kBothRelativeAndAbsoluteTime[] = |
- "Cannot set both when and delayInMinutes."; |
-const char kNoScheduledTime[] = |
- "Must set at least one of when, delayInMinutes, or periodInMinutes."; |
-const int kReleaseDelayMinimum = 1; |
-const int kDevDelayMinimum = 0; |
- |
-bool ValidateAlarmCreateInfo(const std::string& alarm_name, |
- const alarms::AlarmCreateInfo& create_info, |
- const Extension* extension, |
- std::string* error, |
- std::vector<std::string>* warnings) { |
- if (create_info.delay_in_minutes.get() && |
- create_info.when.get()) { |
- *error = kBothRelativeAndAbsoluteTime; |
- return false; |
- } |
- if (create_info.delay_in_minutes == NULL && |
- create_info.when == NULL && |
- create_info.period_in_minutes == NULL) { |
- *error = kNoScheduledTime; |
- return false; |
- } |
- |
- // Users can always use an absolute timeout to request an arbitrarily-short or |
- // negative delay. We won't honor the short timeout, but we can't check it |
- // and warn the user because it would introduce race conditions (say they |
- // compute a long-enough timeout, but then the call into the alarms interface |
- // gets delayed past the boundary). However, it's still worth warning about |
- // relative delays that are shorter than we'll honor. |
- if (create_info.delay_in_minutes.get()) { |
- if (*create_info.delay_in_minutes < kReleaseDelayMinimum) { |
- static_assert(kReleaseDelayMinimum == 1, |
- "warning message must be updated"); |
- if (Manifest::IsUnpackedLocation(extension->location())) |
- warnings->push_back(ErrorUtils::FormatErrorMessage( |
- "Alarm delay is less than minimum of 1 minutes." |
- " In released .crx, alarm \"*\" will fire in approximately" |
- " 1 minutes.", |
- alarm_name)); |
- else |
- warnings->push_back(ErrorUtils::FormatErrorMessage( |
- "Alarm delay is less than minimum of 1 minutes." |
- " Alarm \"*\" will fire in approximately 1 minutes.", |
- alarm_name)); |
- } |
- } |
- if (create_info.period_in_minutes.get()) { |
- if (*create_info.period_in_minutes < kReleaseDelayMinimum) { |
- static_assert(kReleaseDelayMinimum == 1, |
- "warning message must be updated"); |
- if (Manifest::IsUnpackedLocation(extension->location())) |
- warnings->push_back(ErrorUtils::FormatErrorMessage( |
- "Alarm period is less than minimum of 1 minutes." |
- " In released .crx, alarm \"*\" will fire approximately" |
- " every 1 minutes.", |
- alarm_name)); |
- else |
- warnings->push_back(ErrorUtils::FormatErrorMessage( |
- "Alarm period is less than minimum of 1 minutes." |
- " Alarm \"*\" will fire approximately every 1 minutes.", |
- alarm_name)); |
- } |
- } |
- |
- return true; |
-} |
- |
-} // namespace |
- |
-AlarmsCreateFunction::AlarmsCreateFunction() |
- : clock_(new base::DefaultClock()), owns_clock_(true) {} |
- |
-AlarmsCreateFunction::AlarmsCreateFunction(base::Clock* clock) |
- : clock_(clock), owns_clock_(false) {} |
- |
-AlarmsCreateFunction::~AlarmsCreateFunction() { |
- if (owns_clock_) |
- delete clock_; |
-} |
- |
-bool AlarmsCreateFunction::RunAsync() { |
- scoped_ptr<alarms::Create::Params> params( |
- alarms::Create::Params::Create(*args_)); |
- EXTENSION_FUNCTION_VALIDATE(params.get()); |
- const std::string& alarm_name = |
- params->name.get() ? *params->name : kDefaultAlarmName; |
- std::vector<std::string> warnings; |
- if (!ValidateAlarmCreateInfo( |
- alarm_name, params->alarm_info, extension(), &error_, &warnings)) { |
- return false; |
- } |
- for (std::vector<std::string>::const_iterator it = warnings.begin(); |
- it != warnings.end(); ++it) |
- WriteToConsole(content::CONSOLE_MESSAGE_LEVEL_WARNING, *it); |
- |
- Alarm alarm(alarm_name, |
- params->alarm_info, |
- base::TimeDelta::FromMinutes( |
- Manifest::IsUnpackedLocation(extension()->location()) |
- ? kDevDelayMinimum |
- : kReleaseDelayMinimum), |
- clock_->Now()); |
- AlarmManager::Get(browser_context())->AddAlarm( |
- extension_id(), alarm, base::Bind(&AlarmsCreateFunction::Callback, this)); |
- |
- return true; |
-} |
- |
-void AlarmsCreateFunction::Callback() { |
- SendResponse(true); |
-} |
- |
-bool AlarmsGetFunction::RunAsync() { |
- scoped_ptr<alarms::Get::Params> params(alarms::Get::Params::Create(*args_)); |
- EXTENSION_FUNCTION_VALIDATE(params.get()); |
- |
- std::string name = params->name.get() ? *params->name : kDefaultAlarmName; |
- AlarmManager::Get(browser_context()) |
- ->GetAlarm(extension_id(), |
- name, |
- base::Bind(&AlarmsGetFunction::Callback, this, name)); |
- |
- return true; |
-} |
- |
-void AlarmsGetFunction::Callback( |
- const std::string& name, extensions::Alarm* alarm) { |
- if (alarm) { |
- results_ = alarms::Get::Results::Create(*alarm->js_alarm); |
- } |
- SendResponse(true); |
-} |
- |
-bool AlarmsGetAllFunction::RunAsync() { |
- AlarmManager::Get(browser_context())->GetAllAlarms( |
- extension_id(), base::Bind(&AlarmsGetAllFunction::Callback, this)); |
- return true; |
-} |
- |
-void AlarmsGetAllFunction::Callback(const AlarmList* alarms) { |
- if (alarms) { |
- std::vector<linked_ptr<extensions::api::alarms::Alarm> > create_arg; |
- create_arg.reserve(alarms->size()); |
- for (size_t i = 0, size = alarms->size(); i < size; ++i) { |
- create_arg.push_back((*alarms)[i].js_alarm); |
- } |
- results_ = alarms::GetAll::Results::Create(create_arg); |
- } else { |
- SetResult(new base::ListValue()); |
- } |
- SendResponse(true); |
-} |
- |
-bool AlarmsClearFunction::RunAsync() { |
- scoped_ptr<alarms::Clear::Params> params( |
- alarms::Clear::Params::Create(*args_)); |
- EXTENSION_FUNCTION_VALIDATE(params.get()); |
- |
- std::string name = params->name.get() ? *params->name : kDefaultAlarmName; |
- AlarmManager::Get(browser_context()) |
- ->RemoveAlarm(extension_id(), |
- name, |
- base::Bind(&AlarmsClearFunction::Callback, this, name)); |
- |
- return true; |
-} |
- |
-void AlarmsClearFunction::Callback(const std::string& name, bool success) { |
- SetResult(new base::FundamentalValue(success)); |
- SendResponse(true); |
-} |
- |
-bool AlarmsClearAllFunction::RunAsync() { |
- AlarmManager::Get(browser_context())->RemoveAllAlarms( |
- extension_id(), base::Bind(&AlarmsClearAllFunction::Callback, this)); |
- return true; |
-} |
- |
-void AlarmsClearAllFunction::Callback() { |
- SetResult(new base::FundamentalValue(true)); |
- SendResponse(true); |
-} |
- |
-} // namespace extensions |