OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/utf_string_conversions.h" |
10 #include "chrome/browser/infobars/infobar_service.h" | 11 #include "chrome/browser/infobars/infobar_service.h" |
11 #include "chrome/browser/notifications/notification_test_util.h" | 12 #include "chrome/browser/notifications/notification_test_util.h" |
12 #include "chrome/browser/notifications/platform_notification_service_impl.h" | 13 #include "chrome/browser/notifications/platform_notification_service_impl.h" |
13 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
14 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
15 #include "chrome/test/base/in_process_browser_test.h" | 16 #include "chrome/test/base/in_process_browser_test.h" |
16 #include "chrome/test/base/ui_test_utils.h" | 17 #include "chrome/test/base/ui_test_utils.h" |
17 #include "components/infobars/core/confirm_infobar_delegate.h" | 18 #include "components/infobars/core/confirm_infobar_delegate.h" |
18 #include "components/infobars/core/infobar.h" | 19 #include "components/infobars/core/infobar.h" |
19 #include "components/infobars/core/infobar_manager.h" | 20 #include "components/infobars/core/infobar_manager.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 // Returns the UI Manager on which notifications will be displayed. | 99 // Returns the UI Manager on which notifications will be displayed. |
99 StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); } | 100 StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); } |
100 | 101 |
101 // Navigates the browser to the test page indicated by |path|. | 102 // Navigates the browser to the test page indicated by |path|. |
102 void NavigateToTestPage(const std::string& path) const; | 103 void NavigateToTestPage(const std::string& path) const; |
103 | 104 |
104 // Executes |script| and stores the result as a string in |result|. A boolean | 105 // Executes |script| and stores the result as a string in |result|. A boolean |
105 // will be returned, indicating whether the script was executed successfully. | 106 // will be returned, indicating whether the script was executed successfully. |
106 bool RunScript(const std::string& script, std::string* result) const; | 107 bool RunScript(const std::string& script, std::string* result) const; |
107 | 108 |
| 109 net::HostPortPair ServerHostPort() const; |
| 110 |
108 private: | 111 private: |
109 scoped_ptr<StubNotificationUIManager> ui_manager_; | 112 scoped_ptr<StubNotificationUIManager> ui_manager_; |
110 scoped_ptr<net::SpawnedTestServer> https_server_; | 113 scoped_ptr<net::SpawnedTestServer> https_server_; |
111 }; | 114 }; |
112 | 115 |
113 // ----------------------------------------------------------------------------- | 116 // ----------------------------------------------------------------------------- |
114 | 117 |
115 namespace { | 118 namespace { |
116 | 119 |
117 const char kTestPageUrl[] = | 120 const char kTestPageUrl[] = |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 } | 160 } |
158 | 161 |
159 bool PlatformNotificationServiceBrowserTest::RunScript( | 162 bool PlatformNotificationServiceBrowserTest::RunScript( |
160 const std::string& script, std::string* result) const { | 163 const std::string& script, std::string* result) const { |
161 return content::ExecuteScriptAndExtractString( | 164 return content::ExecuteScriptAndExtractString( |
162 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(), | 165 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(), |
163 script, | 166 script, |
164 result); | 167 result); |
165 } | 168 } |
166 | 169 |
| 170 net::HostPortPair PlatformNotificationServiceBrowserTest::ServerHostPort() |
| 171 const { |
| 172 return https_server_->host_port_pair(); |
| 173 } |
| 174 |
167 // ----------------------------------------------------------------------------- | 175 // ----------------------------------------------------------------------------- |
168 | 176 |
169 // TODO(peter): Move PlatformNotificationService-related tests over from | 177 // TODO(peter): Move PlatformNotificationService-related tests over from |
170 // notification_browsertest.cc to this file. | 178 // notification_browsertest.cc to this file. |
171 | 179 |
172 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, | 180 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, |
173 DisplayPersistentNotificationWithoutPermission) { | 181 DisplayPersistentNotificationWithoutPermission) { |
174 std::string script_result; | 182 std::string script_result; |
175 | 183 |
176 InfoBarResponder accepting_responder(browser(), false); | 184 InfoBarResponder accepting_responder(browser(), false); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); | 231 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |
224 | 232 |
225 const Notification& notification = ui_manager()->GetNotificationAt(0); | 233 const Notification& notification = ui_manager()->GetNotificationAt(0); |
226 notification.delegate()->Click(); | 234 notification.delegate()->Click(); |
227 | 235 |
228 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); | 236 ASSERT_TRUE(RunScript("GetMessageFromWorker()", &script_result)); |
229 EXPECT_EQ("action_close", script_result); | 237 EXPECT_EQ("action_close", script_result); |
230 | 238 |
231 ASSERT_EQ(0u, ui_manager()->GetNotificationCount()); | 239 ASSERT_EQ(0u, ui_manager()->GetNotificationCount()); |
232 } | 240 } |
| 241 |
| 242 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, |
| 243 TestDisplayOriginContextMessage) { |
| 244 std::string script_result; |
| 245 |
| 246 // Creates a simple notification. |
| 247 InfoBarResponder accepting_responder(browser(), true); |
| 248 ASSERT_TRUE(RunScript("RequestPermission()", &script_result)); |
| 249 ASSERT_EQ("granted", script_result); |
| 250 ASSERT_TRUE(RunScript("DisplayPersistentNotification()", &script_result)); |
| 251 |
| 252 net::HostPortPair host_port = ServerHostPort(); |
| 253 |
| 254 const Notification& notification = ui_manager()->GetNotificationAt(0); |
| 255 |
| 256 EXPECT_EQ(base::UTF8ToUTF16(host_port.ToString()), |
| 257 notification.context_message()); |
| 258 } |
OLD | NEW |