diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-12 22:43:15 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-12 22:43:15 +0000 |
commit | 79b8bbd5a8fec5568c77429a4e49f6bbd5d21d78 (patch) | |
tree | 127a530b69f38337718bd39188eb46b7663c7561 /chrome | |
parent | 84c498129a9c2ae8e642c04a9183d7077c159d41 (diff) | |
download | chromium_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')
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"] } |