1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "xwalk/application/common/manifest_handlers/warp_handler.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "xwalk/application/common/application_manifest_constants.h"
12 namespace keys = application_widget_keys;
14 namespace application {
16 WARPInfo::WARPInfo() {
19 WARPInfo::~WARPInfo() {
22 WARPHandler::WARPHandler() {
25 WARPHandler::~WARPHandler() {
28 bool WARPHandler::Parse(scoped_refptr<ApplicationData> application,
29 base::string16* error) {
31 if (!application->GetManifest()->HasPath(keys::kAccessKey))
33 if (!application->GetManifest()->Get(keys::kAccessKey, &value)) {
34 *error = base::ASCIIToUTF16(
35 "Invalid value of Widget Access Request Policy(WARP).");
39 scoped_ptr<base::ListValue> warp_list;
40 if (value->IsType(base::Value::TYPE_DICTIONARY)) {
41 warp_list.reset(new base::ListValue);
42 warp_list->Append(value->DeepCopy());
44 base::ListValue* list;
45 value->GetAsList(&list);
47 warp_list.reset(list->DeepCopy());
51 *error = base::ASCIIToUTF16(
52 "Invalid Widget Access Request Policy(WARP) list.");
56 scoped_ptr<WARPInfo> warp_info(new WARPInfo);
57 warp_info->SetWARP(warp_list.release());
58 application->SetManifestData(keys::kAccessKey, warp_info.release());
63 std::vector<std::string> WARPHandler::Keys() const {
64 return std::vector<std::string>(1, keys::kAccessKey);
67 } // namespace application