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

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

Issue 661643002: Adds a context message of the security origin for web notifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adds a bug reference. Created 5 years, 11 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
index 3ea3b1cb5863958d558c0afa1e33310ca4ebf38e..d79ea5b0fa2f3a9dd60bf1e25546fc3478a63824 100644
--- a/chrome/browser/notifications/platform_notification_service_browsertest.cc
+++ b/chrome/browser/notifications/platform_notification_service_browsertest.cc
@@ -7,6 +7,7 @@
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/memory/scoped_ptr.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/notifications/notification_test_util.h"
#include "chrome/browser/notifications/platform_notification_service_impl.h"
@@ -19,6 +20,7 @@
#include "components/infobars/core/infobar_manager.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/spawned_test_server/spawned_test_server.h"
// -----------------------------------------------------------------------------
@@ -81,6 +83,7 @@ void InfoBarResponder::Respond(ConfirmInfoBarDelegate* delegate) {
class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
public:
+ PlatformNotificationServiceBrowserTest();
~PlatformNotificationServiceBrowserTest() override {}
// InProcessBrowserTest overrides.
@@ -98,6 +101,8 @@ class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
// 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;
@@ -105,7 +110,10 @@ class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
// will be returned, indicating whether the script was executed successfully.
bool RunScript(const std::string& script, std::string* result) const;
+ net::HostPortPair ServerHostPort() const;
+
private:
+ const base::FilePath server_root_;
scoped_ptr<StubNotificationUIManager> ui_manager_;
scoped_ptr<net::SpawnedTestServer> https_server_;
};
@@ -114,11 +122,13 @@ class PlatformNotificationServiceBrowserTest : public InProcessBrowserTest {
namespace {
-const char kTestPageUrl[] =
- "files/notifications/platform_notification_service.html";
-
+const char kTestFileName[] = "notifications/platform_notification_service.html";
} // namespace
Peter Beverloo 2015/01/27 13:37:04 micro nit: namespace { const char kTestFileName[]
dewittj 2015/01/27 23:10:12 Done.
+PlatformNotificationServiceBrowserTest::PlatformNotificationServiceBrowserTest()
+ : server_root_(FILE_PATH_LITERAL("chrome/test/data")) {
+}
+
void PlatformNotificationServiceBrowserTest::SetUpCommandLine(
base::CommandLine* command_line) {
command_line->AppendSwitch(
@@ -131,9 +141,8 @@ void PlatformNotificationServiceBrowserTest::SetUp() {
ui_manager_.reset(new StubNotificationUIManager);
https_server_.reset(new net::SpawnedTestServer(
net::SpawnedTestServer::TYPE_HTTPS,
- net::BaseTestServer::SSLOptions(
- net::BaseTestServer::SSLOptions::CERT_OK),
- base::FilePath(FILE_PATH_LITERAL("chrome/test/data/"))));
+ net::BaseTestServer::SSLOptions(net::BaseTestServer::SSLOptions::CERT_OK),
+ server_root_));
ASSERT_TRUE(https_server_->Start());
service()->SetNotificationUIManagerForTesting(ui_manager_.get());
@@ -142,7 +151,11 @@ void PlatformNotificationServiceBrowserTest::SetUp() {
}
void PlatformNotificationServiceBrowserTest::SetUpOnMainThread() {
- NavigateToTestPage(kTestPageUrl);
+ // The test server has a base directory that doesn't exist in the
+ // filesystem.
+ std::string test_page_url = std::string("files/") + kTestFileName;
+
+ NavigateToTestPage(test_page_url);
InProcessBrowserTest::SetUpOnMainThread();
}
@@ -164,6 +177,11 @@ bool PlatformNotificationServiceBrowserTest::RunScript(
result);
}
+net::HostPortPair PlatformNotificationServiceBrowserTest::ServerHostPort()
+ const {
+ return https_server_->host_port_pair();
+}
+
// -----------------------------------------------------------------------------
// TODO(peter): Move PlatformNotificationService-related tests over from
@@ -230,3 +248,42 @@ IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
ASSERT_EQ(0u, ui_manager()->GetNotificationCount());
}
+
+IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
+ TestDisplayOriginContextMessage) {
+ std::string script_result;
+
+ // Creates a simple notification.
+ InfoBarResponder accepting_responder(browser(), true);
+ ASSERT_TRUE(RunScript("RequestPermission()", &script_result));
+ ASSERT_EQ("granted", script_result);
+ ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result));
+
+ net::HostPortPair host_port = ServerHostPort();
+
+ const Notification& notification = ui_manager()->GetNotificationAt(0);
+
+ EXPECT_EQ(base::UTF8ToUTF16(host_port.ToString()),
+ notification.context_message());
+}
+
+IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
+ CheckFilePermissionNotGranted) {
+ base::FilePath full_file_path =
+ server_root().Append(base::FilePath::FromUTF8Unsafe(kTestFileName));
+ GURL file_url(net::FilePathToFileURL(full_file_path));
Peter Beverloo 2015/01/27 13:37:04 QQ: If server_root_ is "chrome/test/data" (which i
dewittj 2015/01/27 23:10:12 Right, looks like the try bots failed on that. It
+ ui_test_utils::NavigateToURL(browser(), file_url);
+
+ std::string script_result;
+
+ InfoBarResponder accepting_responder(browser(), true);
+
+ // TODO(dewittj): Update the
+ // |PlatformNotificationServiceImpl::WebOriginDisplayName| function to
+ // properly display file:// URL origins. See crbug.com/402191.
+ ASSERT_TRUE(RunScript("RequestPermission()", &script_result));
+ EXPECT_EQ("default", script_result)
+ << "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.";
+}

Powered by Google App Engine
This is Rietveld 408576698