Chromium Code Reviews| Index: chrome/common/extensions/api/system_indicator/system_indicator_handler.cc |
| diff --git a/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc b/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9db458136df9ccf63125cc1965f92345b3e42054 |
| --- /dev/null |
| +++ b/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc |
| @@ -0,0 +1,49 @@ |
| +// Copyright (c) 2013 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/common/extensions/api/system_indicator/system_indicator_handler.h" |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "base/values.h" |
| +#include "chrome/common/extensions/api/extension_action/action_info.h" |
| +#include "chrome/common/extensions/extension.h" |
| +#include "chrome/common/extensions/extension_manifest_constants.h" |
| +#include "chrome/common/extensions/permissions/api_permission_set.h" |
| + |
| +namespace extensions { |
| + |
| +SystemIndicatorHandler::SystemIndicatorHandler() { |
| +} |
| + |
| +SystemIndicatorHandler::~SystemIndicatorHandler() { |
| +} |
| + |
| +const std::vector<std::string> SystemIndicatorHandler::Keys() const { |
|
Yoyo Zhou
2013/03/21 00:07:50
Define in same order declared in .h file.
Devlin
2013/03/23 22:23:08
Done.
|
| + return SingleKey(extension_manifest_keys::kSystemIndicator); |
| +} |
| + |
| +bool SystemIndicatorHandler::Parse(Extension* extension, string16* error) { |
| + const DictionaryValue* system_indicator_value = NULL; |
| + if (!extension->manifest()->GetDictionary( |
| + extension_manifest_keys::kSystemIndicator, &system_indicator_value)) { |
| + *error = ASCIIToUTF16(extension_manifest_errors::kInvalidSystemIndicator); |
| + return false; |
| + } |
| + |
| + scoped_ptr<ActionInfo> action_info = ActionInfo::Load( |
| + extension, system_indicator_value, error); |
| + |
| + if (!action_info.get()) |
| + return false; |
| + |
| + // Because the manifest was successfully parsed, auto-grant the permission. |
| + // TODO(dewittj) Add this for all extension action APIs. |
| + extension->initial_api_permissions()->insert(APIPermission::kSystemIndicator); |
| + |
| + ActionInfo::SetSystemIndicatorInfo(extension, action_info.release()); |
| + return true; |
| +} |
| + |
| +} // namespace extensions |