Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3308)

Unified Diff: chrome/browser/notifications/platform_notification_service_browsertest.cc

Issue 1919203002: Rename notification interactive_ui_tests to "*_interactive_uitest.cc" to avoid confusion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix rename Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/notifications/platform_notification_service_browsertest.cc
diff --git a/chrome/browser/notifications/platform_notification_service_browsertest.cc b/chrome/browser/notifications/platform_notification_service_browsertest.cc
deleted file mode 100644
index 0b0997956018b08a46f52887036866fab9a1adcb..0000000000000000000000000000000000000000
--- a/chrome/browser/notifications/platform_notification_service_browsertest.cc
+++ /dev/null
@@ -1,500 +0,0 @@
-// Copyright 2014 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 <memory>
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/path_service.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/time/time.h"
-#include "chrome/browser/notifications/desktop_notification_profile_util.h"
-#include "chrome/browser/notifications/message_center_display_service.h"
-#include "chrome/browser/notifications/notification.h"
-#include "chrome/browser/notifications/notification_test_util.h"
-#include "chrome/browser/notifications/platform_notification_service_impl.h"
-#include "chrome/browser/permissions/permission_manager.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
-#include "chrome/grit/generated_resources.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/permission_type.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/browser_test_utils.h"
-#include "net/base/filename_util.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "third_party/WebKit/public/platform/modules/permissions/permission_status.mojom.h"
-#include "ui/base/l10n/l10n_util.h"
-
-// -----------------------------------------------------------------------------
-
-// Dimensions of the icon.png resource in the notification test data directory.
-const int kIconWidth = 100;
-const int kIconHeight = 100;
-
-// The maximum width and height of badges. Oversized images are scaled down to
-// these values.
-const int kMaxBadgeSize = 96;
-
-const int kNotificationVibrationPattern[] = { 100, 200, 300 };
-const double kNotificationTimestamp = 621046800000.;
-
-class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
- public:
- PlatformNotificationServiceBrowserTest();
- ~PlatformNotificationServiceBrowserTest() override {}
-
- // InProcessBrowserTest overrides.
- void SetUpCommandLine(base::CommandLine* command_line) override;
- void SetUp() override;
- void SetUpOnMainThread() override;
- void TearDown() override;
-
- protected:
- // Returns the Platform Notification Service these unit tests are for.
- PlatformNotificationServiceImpl* service() const {
- return PlatformNotificationServiceImpl::GetInstance();
- }
-
- // Grants permission to display Web Notifications for origin of the test
- // page that's being used in this browser test.
- void GrantNotificationPermissionForTest() const;
-
- bool RequestAndAcceptPermission();
- bool RequestAndDenyPermission();
-
- // Returns the UI Manager on which notifications will be displayed.
- StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); }
-
- const base::FilePath& server_root() const { return server_root_; }
-
- // Navigates the browser to the test page indicated by |path|.
- void NavigateToTestPage(const std::string& path) const;
-
- // Executes |script| and stores the result as a string in |result|. A boolean
- // will be returned, indicating whether the script was executed successfully.
- bool RunScript(const std::string& script, std::string* result) const;
-
- net::HostPortPair ServerHostPort() const;
- GURL TestPageUrl() const;
-
- private:
- std::string RequestAndRespondToPermission(
- PermissionBubbleManager::AutoResponseType bubble_response);
-
- content::WebContents* GetActiveWebContents(Browser* browser) {
- return browser->tab_strip_model()->GetActiveWebContents();
- }
-
- const base::FilePath server_root_;
- const std::string test_page_url_;
- std::unique_ptr<StubNotificationUIManager> ui_manager_;
- std::unique_ptr<MessageCenterDisplayService> display_service_;
- std::unique_ptr<net::EmbeddedTestServer> https_server_;
-};
-
-// -----------------------------------------------------------------------------
-
-namespace {
-const char kTestFileName[] = "notifications/platform_notification_service.html";
-}
-
-PlatformNotificationServiceBrowserTest::PlatformNotificationServiceBrowserTest()
- : server_root_(FILE_PATH_LITERAL("chrome/test/data")),
- // The test server has a base directory that doesn't exist in the
- // filesystem.
- test_page_url_(std::string("/") + kTestFileName) {}
-
-void PlatformNotificationServiceBrowserTest::SetUpCommandLine(
- base::CommandLine* command_line) {
- command_line->AppendSwitch(switches::kEnableExperimentalWebPlatformFeatures);
-
- InProcessBrowserTest::SetUpCommandLine(command_line);
-}
-
-void PlatformNotificationServiceBrowserTest::SetUp() {
- ui_manager_.reset(new StubNotificationUIManager);
- https_server_.reset(
- new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS));
- https_server_->ServeFilesFromSourceDirectory(server_root_);
- ASSERT_TRUE(https_server_->Start());
- InProcessBrowserTest::SetUp();
-}
-
-void PlatformNotificationServiceBrowserTest::SetUpOnMainThread() {
- NavigateToTestPage(test_page_url_);
- display_service_.reset(
- new MessageCenterDisplayService(browser()->profile(), ui_manager_.get()));
- service()->SetNotificationDisplayServiceForTesting(display_service_.get());
- InProcessBrowserTest::SetUpOnMainThread();
-}
-
-void PlatformNotificationServiceBrowserTest::TearDown() {
- service()->SetNotificationDisplayServiceForTesting(nullptr);
-}
-
-void PlatformNotificationServiceBrowserTest::
- GrantNotificationPermissionForTest() const {
- GURL origin = TestPageUrl().GetOrigin();
-
- DesktopNotificationProfileUtil::GrantPermission(browser()->profile(), origin);
- ASSERT_EQ(CONTENT_SETTING_ALLOW,
- DesktopNotificationProfileUtil::GetContentSetting(
- browser()->profile(), origin));
-}
-
-void PlatformNotificationServiceBrowserTest::NavigateToTestPage(
- const std::string& path) const {
- ui_test_utils::NavigateToURL(browser(), https_server_->GetURL(path));
-}
-
-bool PlatformNotificationServiceBrowserTest::RunScript(
- const std::string& script, std::string* result) const {
- return content::ExecuteScriptAndExtractString(
- browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(),
- script,
- result);
-}
-
-net::HostPortPair PlatformNotificationServiceBrowserTest::ServerHostPort()
- const {
- return https_server_->host_port_pair();
-}
-
-GURL PlatformNotificationServiceBrowserTest::TestPageUrl() const {
- return https_server_->GetURL(test_page_url_);
-}
-
-std::string
-PlatformNotificationServiceBrowserTest::RequestAndRespondToPermission(
- PermissionBubbleManager::AutoResponseType bubble_response) {
- std::string result;
- content::WebContents* web_contents = GetActiveWebContents(browser());
- PermissionBubbleManager::FromWebContents(web_contents)
- ->set_auto_response_for_test(bubble_response);
- EXPECT_TRUE(RunScript("RequestPermission();", &result));
- return result;
-}
-
-bool PlatformNotificationServiceBrowserTest::RequestAndAcceptPermission() {
- std::string result =
- RequestAndRespondToPermission(PermissionBubbleManager::ACCEPT_ALL);
- return "granted" == result;
-}
-
-bool PlatformNotificationServiceBrowserTest::RequestAndDenyPermission() {
- std::string result =
- RequestAndRespondToPermission(PermissionBubbleManager::DENY_ALL);
- return "denied" == result;
-}
-
-// -----------------------------------------------------------------------------
-
-// TODO(peter): Move PlatformNotificationService-related tests over from
-// notification_browsertest.cc to this file.
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- DisplayPersistentNotificationWithoutPermission) {
- RequestAndDenyPermission();
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result));
- EXPECT_EQ(
- "TypeError: No notification permission has been granted for this origin.",
- script_result);
-
- ASSERT_EQ(0u, ui_manager()->GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- DisplayPersistentNotificationWithPermission) {
- RequestAndAcceptPermission();
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_none')",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- notification.delegate()->Click();
-
- ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
- EXPECT_EQ("action_none", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- WebNotificationOptionsReflection) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- // First, test the default values.
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification('Some title', {})",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- // We don't use or check the notification's direction and language.
- const Notification& default_notification = ui_manager()->GetNotificationAt(0);
- EXPECT_EQ("Some title", base::UTF16ToUTF8(default_notification.title()));
- EXPECT_EQ("", base::UTF16ToUTF8(default_notification.message()));
- EXPECT_EQ("", default_notification.tag());
- EXPECT_TRUE(default_notification.icon().IsEmpty());
- EXPECT_TRUE(default_notification.small_image().IsEmpty());
- EXPECT_FALSE(default_notification.renotify());
- EXPECT_FALSE(default_notification.silent());
- EXPECT_FALSE(default_notification.never_timeout());
- EXPECT_EQ(0u, default_notification.buttons().size());
-
- // Verifies that the notification's default timestamp is set in the last 30
- // seconds. This number has no significance, but it needs to be significantly
- // high to avoid flakiness in the test.
- EXPECT_NEAR(default_notification.timestamp().ToJsTime(),
- base::Time::Now().ToJsTime(), 30 * 1000);
-
- // Now, test the non-default values.
-
- ASSERT_TRUE(RunScript("DisplayPersistentAllOptionsNotification()",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(2u, ui_manager()->GetNotificationCount());
-
- // We don't use or check the notification's direction and language.
- const Notification& all_options_notification =
- ui_manager()->GetNotificationAt(1);
- EXPECT_EQ("Title", base::UTF16ToUTF8(all_options_notification.title()));
- EXPECT_EQ("Contents", base::UTF16ToUTF8(all_options_notification.message()));
- EXPECT_EQ("replace-id", all_options_notification.tag());
- EXPECT_FALSE(all_options_notification.icon().IsEmpty());
- EXPECT_EQ(kIconWidth, all_options_notification.icon().Width());
- EXPECT_EQ(kIconHeight, all_options_notification.icon().Height());
- EXPECT_FALSE(all_options_notification.small_image().IsEmpty());
- EXPECT_EQ(kMaxBadgeSize, all_options_notification.small_image().Width());
- EXPECT_EQ(kMaxBadgeSize, all_options_notification.small_image().Height());
- EXPECT_TRUE(all_options_notification.renotify());
- EXPECT_TRUE(all_options_notification.silent());
- EXPECT_TRUE(all_options_notification.never_timeout());
- EXPECT_DOUBLE_EQ(kNotificationTimestamp,
- all_options_notification.timestamp().ToJsTime());
- EXPECT_EQ(1u, all_options_notification.buttons().size());
- EXPECT_EQ("actionTitle",
- base::UTF16ToUTF8(all_options_notification.buttons()[0].title));
- EXPECT_FALSE(all_options_notification.buttons()[0].icon.IsEmpty());
- EXPECT_EQ(kIconWidth, all_options_notification.buttons()[0].icon.Width());
- EXPECT_EQ(kIconHeight, all_options_notification.buttons()[0].icon.Height());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- WebNotificationSiteSettingsButton) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification('Some title', {})",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- const std::vector<message_center::ButtonInfo>& buttons =
- notification.buttons();
- EXPECT_EQ(0u, buttons.size());
-
- notification.delegate()->SettingsClick();
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- ASSERT_TRUE(content::WaitForLoadStop(web_contents));
- ASSERT_EQ("chrome://settings/contentExceptions#notifications",
- web_contents->GetLastCommittedURL().spec());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- WebNotificationOptionsVibrationPattern) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotificationVibrate()",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- EXPECT_EQ("Title", base::UTF16ToUTF8(notification.title()));
- EXPECT_EQ("Contents", base::UTF16ToUTF8(notification.message()));
-
- EXPECT_THAT(notification.vibration_pattern(),
- testing::ElementsAreArray(kNotificationVibrationPattern));
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- CloseDisplayedPersistentNotification) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification('action_close')",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- notification.delegate()->Click();
-
- ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
- EXPECT_EQ("action_close", script_result);
-
- ASSERT_EQ(0u, ui_manager()->GetNotificationCount());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- UserClosesPersistentNotification) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(
- RunScript("DisplayPersistentNotification('close_test')", &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- notification.delegate()->Close(true /* by_user */);
-
- ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
- EXPECT_EQ("closing notification: close_test", script_result);
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- TestDisplayOriginContextMessage) {
- RequestAndAcceptPermission();
-
- // Creates a simple notification.
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result));
-
- net::HostPortPair host_port = ServerHostPort();
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
-
- EXPECT_TRUE(notification.context_message().empty());
- EXPECT_EQ("https://" + host_port.ToString() + "/",
- notification.origin_url().spec());
-}
-
-// TODO(felt): This DCHECKs when bubbles are enabled, when the file_url is
-// persisted. crbug.com/502057
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- DISABLED_CheckFilePermissionNotGranted) {
- // This case should succeed because a normal page URL is used.
- std::string script_result;
-
- PermissionManager* permission_manager =
- PermissionManager::Get(browser()->profile());
-
- EXPECT_EQ(blink::mojom::PermissionStatus::ASK,
- permission_manager->GetPermissionStatus(
- content::PermissionType::NOTIFICATIONS, TestPageUrl(),
- TestPageUrl()));
-
- RequestAndAcceptPermission();
- EXPECT_EQ(blink::mojom::PermissionStatus::GRANTED,
- permission_manager->GetPermissionStatus(
- content::PermissionType::NOTIFICATIONS, TestPageUrl(),
- TestPageUrl()));
-
- // This case should fail because a file URL is used.
- base::FilePath dir_source_root;
- EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &dir_source_root));
- base::FilePath full_file_path =
- dir_source_root.Append(server_root()).AppendASCII(kTestFileName);
- GURL file_url(net::FilePathToFileURL(full_file_path));
-
- ui_test_utils::NavigateToURL(browser(), file_url);
-
- EXPECT_EQ(blink::mojom::PermissionStatus::ASK,
- permission_manager->GetPermissionStatus(
- content::PermissionType::NOTIFICATIONS, file_url, file_url));
-
- RequestAndAcceptPermission();
- EXPECT_EQ(blink::mojom::PermissionStatus::ASK,
- permission_manager->GetPermissionStatus(
- content::PermissionType::NOTIFICATIONS, file_url, file_url))
- << "If this test fails, you may have fixed a bug preventing file origins "
- << "from sending their origin from Blink; if so you need to update the "
- << "display function for notification origins to show the file path.";
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- DataUrlAsNotificationImage) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotificationDataUrlImage()",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- EXPECT_FALSE(notification.icon().IsEmpty());
-
- EXPECT_EQ("Data URL Title", base::UTF16ToUTF8(notification.title()));
- EXPECT_EQ(kIconWidth, notification.icon().Width());
- EXPECT_EQ(kIconHeight, notification.icon().Height());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- BlobAsNotificationImage) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotificationBlobImage()",
- &script_result));
- EXPECT_EQ("ok", script_result);
-
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- EXPECT_FALSE(notification.icon().IsEmpty());
-
- EXPECT_EQ("Blob Title", base::UTF16ToUTF8(notification.title()));
- EXPECT_EQ(kIconWidth, notification.icon().Width());
- EXPECT_EQ(kIconHeight, notification.icon().Height());
-}
-
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
- DisplayPersistentNotificationWithActionButtons) {
- ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest());
-
- std::string script_result;
- ASSERT_TRUE(RunScript("DisplayPersistentNotificationWithActionButtons()",
- &script_result));
- EXPECT_EQ("ok", script_result);
- ASSERT_EQ(1u, ui_manager()->GetNotificationCount());
-
- const Notification& notification = ui_manager()->GetNotificationAt(0);
- ASSERT_EQ(2u, notification.buttons().size());
- EXPECT_EQ("actionTitle1", base::UTF16ToUTF8(notification.buttons()[0].title));
- EXPECT_EQ("actionTitle2", base::UTF16ToUTF8(notification.buttons()[1].title));
-
- notification.delegate()->ButtonClick(0);
- ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
- EXPECT_EQ("action_button_click actionId1", script_result);
-
- notification.delegate()->ButtonClick(1);
- ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result));
- EXPECT_EQ("action_button_click actionId2", script_result);
-}

Powered by Google App Engine
This is Rietveld 408576698