Commit 6b1eb330 authored by Eric Willigers's avatar Eric Willigers Committed by Chromium LUCI CQ

Web Share Target for Chrome OS: Skip blank title

If an Intent is received that has a blank title, we don't
include the title in the generated GET or POST request.

Current Intent instances are created with either non-empty
strings or with nullopt. This CL protects against any
future Intent sources that might create share_title
with empty string.

Bug: 1125880
Change-Id: I5b5a854eb8b849d1d07877f46e3855cf29c6109e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2592544
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarAlan Cutter <alancutter@chromium.org>
Auto-Submit: Eric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837904}
parent bb362ce7
......@@ -37,7 +37,8 @@ std::vector<SharedField> ExtractSharedFields(
const apps::mojom::Intent& intent) {
std::vector<SharedField> result;
if (!share_target.params.title.empty() && intent.share_title.has_value()) {
if (!share_target.params.title.empty() && intent.share_title.has_value() &&
!intent.share_title->empty()) {
result.push_back(
{.name = share_target.params.title, .value = *intent.share_title});
}
......@@ -125,6 +126,7 @@ NavigateParams NavigateParamsForShareTarget(
std::vector<SharedField> shared_fields =
ExtractSharedFields(share_target, intent);
for (const auto& shared_field : shared_fields) {
DCHECK(!shared_field.value.empty());
names.push_back(shared_field.name);
values.push_back(shared_field.value);
filenames.push_back(std::string());
......
......@@ -113,4 +113,19 @@ TEST(ShareTargetUtils, ExtractTitleTextUrl) {
}
}
TEST(ShareTargetUtils, SkipEmpty) {
apps::mojom::Intent intent;
intent.share_title = "";
intent.share_text = "";
{
apps::ShareTarget share_target;
share_target.params.title = "subject";
share_target.params.text = "body";
share_target.params.url = "link";
EXPECT_EQ(ExtractSharedFields(share_target, intent),
std::vector<SharedField>());
}
}
} // namespace web_app
......@@ -186,6 +186,8 @@ IN_PROC_BROWSER_TEST_F(WebShareTargetBrowserTest, ShareAudio) {
std::vector<std::string> content_types(3, "audio/webm");
intent = apps_util::CreateShareIntentFromFiles(
profile(), std::move(file_paths), std::move(content_types));
intent->share_text = "";
intent->share_title = "";
}
content::WebContents* const web_contents =
......@@ -195,6 +197,25 @@ IN_PROC_BROWSER_TEST_F(WebShareTargetBrowserTest, ShareAudio) {
RemoveWebShareDirectory(directory);
}
IN_PROC_BROWSER_TEST_F(WebShareTargetBrowserTest, PostBlank) {
ASSERT_TRUE(embedded_test_server()->Start());
const GURL app_url =
embedded_test_server()->GetURL("/web_share_target/poster.html");
const AppId app_id = web_app::InstallWebAppFromManifest(browser(), app_url);
apps::mojom::IntentPtr intent = apps_util::CreateShareIntentFromFiles(
profile(), /*file_paths=*/std::vector<base::FilePath>(),
/*mime_types=*/std::vector<std::string>());
content::WebContents* const web_contents =
LaunchAppWithIntent(app_id, std::move(intent), share_target_url());
// Poster web app's service worker detects omitted values.
EXPECT_EQ("N/A", ReadTextContent(web_contents, "headline"));
EXPECT_EQ("N/A", ReadTextContent(web_contents, "author"));
EXPECT_EQ("N/A", ReadTextContent(web_contents, "link"));
}
IN_PROC_BROWSER_TEST_F(WebShareTargetBrowserTest, PostLink) {
ASSERT_TRUE(embedded_test_server()->Start());
const GURL app_url =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment