Chromium Code Reviews| Index: chrome/browser/extensions/api/discovery/discovery_api.cc |
| diff --git a/chrome/browser/extensions/api/discovery/discovery_api.cc b/chrome/browser/extensions/api/discovery/discovery_api.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..283880fbcb0d20c3bde278b3cd82bf348df7beb8 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/api/discovery/discovery_api.cc |
| @@ -0,0 +1,69 @@ |
| +// 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/discovery/discovery_api.h" |
| + |
| +#include "base/values.h" |
| +#include "chrome/browser/extensions/api/discovery/extension_suggested_link.h" |
| +#include "chrome/browser/extensions/api/discovery/extension_suggested_links_manager.h" |
| +#include "chrome/browser/extensions/api/discovery/extension_suggested_links_manager_factory.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/extensions/api/experimental_discovery.h" |
| +#include "chrome/common/extensions/extension_error_utils.h" |
| + |
| +namespace discovery = extensions::api::experimental_discovery; |
| + |
| +namespace { |
| +const char kInvalidScore[] = "Invalid score, must be between 0 and 1."; |
| +} // anonymous namespace |
|
Aaron Boodman
2012/05/15 00:07:43
Typically this comment just says 'namespace' not '
beaudoin
2012/05/16 16:56:16
Done.
|
| + |
| +namespace extensions { |
| + |
| +bool DiscoverySuggestFunction::RunImpl() { |
| + scoped_ptr<discovery::Suggest::Params> params( |
| + discovery::Suggest::Params::Create(*args_)); |
| + EXTENSION_FUNCTION_VALIDATE(params.get()); |
| + |
| + double score = 1.0; |
| + if (params->details.score != NULL) { |
| + score = *params->details.score; |
| + if (score < 0.0 || score > 1.0) { |
| + error_ = kInvalidScore; |
| + return false; |
| + } |
| + } |
| + |
| + ExtensionSuggestedLinksManager* manager = |
| + ExtensionSuggestedLinksManagerFactory::GetForProfile(profile()); |
| + |
| + manager->Add(extension_id(), new ExtensionSuggestedLink( |
| + params->details.link_url, params->details.link_text, score)); |
| + |
| + return true; |
| +} |
| + |
| +bool DiscoveryRemoveSuggestionFunction::RunImpl() { |
| + scoped_ptr<discovery::RemoveSuggestion::Params> params( |
| + discovery::RemoveSuggestion::Params::Create(*args_)); |
| + EXTENSION_FUNCTION_VALIDATE(params.get()); |
| + |
| + ExtensionSuggestedLinksManager* manager = |
| + ExtensionSuggestedLinksManagerFactory::GetForProfile(profile()); |
| + |
| + manager->Clear(extension_id(), params->link_url); |
| + |
| + return true; |
| +} |
| + |
| +bool DiscoveryClearAllSuggestionsFunction::RunImpl() { |
| + ExtensionSuggestedLinksManager* manager = |
| + ExtensionSuggestedLinksManagerFactory::GetForProfile(profile()); |
| + |
| + manager->ClearAll(extension_id()); |
| + |
| + return true; |
| +} |
| + |
| +} // namespace extensions |
| + |