summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-12 22:43:15 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-12 22:43:15 +0000
commit79b8bbd5a8fec5568c77429a4e49f6bbd5d21d78 (patch)
tree127a530b69f38337718bd39188eb46b7663c7561 /chrome
parent84c498129a9c2ae8e642c04a9183d7077c159d41 (diff)
downloadchromium_src-79b8bbd5a8fec5568c77429a4e49f6bbd5d21d78.zip
chromium_src-79b8bbd5a8fec5568c77429a4e49f6bbd5d21d78.tar.gz
chromium_src-79b8bbd5a8fec5568c77429a4e49f6bbd5d21d78.tar.bz2
Some fields were getting dropped during the conversion of
'crx-less' web apps to extensions. BUG=66127 TEST= Review URL: http://codereview.chromium.org/5709004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68976 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/extensions/convert_web_app.cc3
-rw-r--r--chrome/browser/extensions/convert_web_app_browsertest.cc18
-rw-r--r--chrome/common/common_param_traits.cc23
-rw-r--r--chrome/test/data/extensions/convert_web_app/application_definition.json5
4 files changed, 46 insertions, 3 deletions
diff --git a/chrome/browser/extensions/convert_web_app.cc b/chrome/browser/extensions/convert_web_app.cc
index 11303ff..e1c8c92 100644
--- a/chrome/browser/extensions/convert_web_app.cc
+++ b/chrome/browser/extensions/convert_web_app.cc
@@ -101,6 +101,9 @@ scoped_refptr<Extension> ConvertWebAppToExtension(
root->SetString(keys::kDescription, UTF16ToUTF8(web_app.description));
root->SetString(keys::kLaunchWebURL, web_app.app_url.spec());
+ if (!web_app.launch_container.empty())
+ root->SetString(keys::kLaunchContainer, web_app.launch_container);
+
// Add the icons.
DictionaryValue* icons = new DictionaryValue();
root->Set(keys::kIcons, icons);
diff --git a/chrome/browser/extensions/convert_web_app_browsertest.cc b/chrome/browser/extensions/convert_web_app_browsertest.cc
index 0023d86..079ad15 100644
--- a/chrome/browser/extensions/convert_web_app_browsertest.cc
+++ b/chrome/browser/extensions/convert_web_app_browsertest.cc
@@ -65,4 +65,22 @@ IN_PROC_BROWSER_TEST_F(ExtensionFromWebAppTest, Basic) {
EXPECT_TRUE(installed_extension_);
EXPECT_TRUE(installed_extension_->is_hosted_app());
+ EXPECT_EQ("Test application", installed_extension_->name());
+ EXPECT_EQ("the description is", installed_extension_->description());
+ EXPECT_EQ(extension_misc::LAUNCH_PANEL,
+ installed_extension_->launch_container());
+
+ ASSERT_EQ(2u, installed_extension_->api_permissions().size());
+ EXPECT_TRUE(installed_extension_->api_permissions().find("geolocation") !=
+ installed_extension_->api_permissions().end());
+ EXPECT_TRUE(installed_extension_->api_permissions().find("notifications") !=
+ installed_extension_->api_permissions().end());
+
+ ASSERT_EQ(3u, installed_extension_->icons().map().size());
+ EXPECT_EQ("icons/16.png", installed_extension_->icons().Get(
+ 16, ExtensionIconSet::MATCH_EXACTLY));
+ EXPECT_EQ("icons/48.png", installed_extension_->icons().Get(
+ 48, ExtensionIconSet::MATCH_EXACTLY));
+ EXPECT_EQ("icons/128.png", installed_extension_->icons().Get(
+ 128, ExtensionIconSet::MATCH_EXACTLY));
}
diff --git a/chrome/common/common_param_traits.cc b/chrome/common/common_param_traits.cc
index 165224c..3564780 100644
--- a/chrome/common/common_param_traits.cc
+++ b/chrome/common/common_param_traits.cc
@@ -232,25 +232,36 @@ void ParamTraits<WebApplicationInfo>::Write(Message* m,
WriteParam(m, p.title);
WriteParam(m, p.description);
WriteParam(m, p.app_url);
+ WriteParam(m, p.launch_container);
WriteParam(m, p.icons.size());
+ WriteParam(m, p.permissions.size());
+
for (size_t i = 0; i < p.icons.size(); ++i) {
WriteParam(m, p.icons[i].url);
WriteParam(m, p.icons[i].width);
WriteParam(m, p.icons[i].height);
WriteParam(m, p.icons[i].data);
}
+
+ for (size_t i = 0; i < p.permissions.size(); ++i)
+ WriteParam(m, p.permissions[i]);
}
bool ParamTraits<WebApplicationInfo>::Read(
const Message* m, void** iter, WebApplicationInfo* r) {
- size_t icon_count;
+ size_t icon_count = 0;
+ size_t permissions_count = 0;
+
bool result =
ReadParam(m, iter, &r->title) &&
ReadParam(m, iter, &r->description) &&
ReadParam(m, iter, &r->app_url) &&
- ReadParam(m, iter, &icon_count);
+ ReadParam(m, iter, &r->launch_container) &&
+ ReadParam(m, iter, &icon_count) &&
+ ReadParam(m, iter, &permissions_count);
if (!result)
return false;
+
for (size_t i = 0; i < icon_count; ++i) {
param_type::IconInfo icon_info;
result =
@@ -262,6 +273,14 @@ bool ParamTraits<WebApplicationInfo>::Read(
return false;
r->icons.push_back(icon_info);
}
+
+ for (size_t i = 0; i < permissions_count; ++i) {
+ std::string permission;
+ if (!ReadParam(m, iter, &permission))
+ return false;
+ r->permissions.push_back(permission);
+ }
+
return true;
}
diff --git a/chrome/test/data/extensions/convert_web_app/application_definition.json b/chrome/test/data/extensions/convert_web_app/application_definition.json
index 6d4864d..3bdc0c7 100644
--- a/chrome/test/data/extensions/convert_web_app/application_definition.json
+++ b/chrome/test/data/extensions/convert_web_app/application_definition.json
@@ -1,9 +1,12 @@
{
"name": "Test application",
+ "description": "the description is",
"launch_url": "launch.html",
+ "launch_container": "panel",
"icons": {
"16": "16.png",
"48": "48.png",
"128": "128.png"
- }
+ },
+ "permissions": ["geolocation", "notifications"]
}