| 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 <memory> |    5 #include <memory> | 
|    6 #include <string> |    6 #include <string> | 
|    7 #include <vector> |    7 #include <vector> | 
|    8  |    8  | 
|    9 #include "base/command_line.h" |    9 #include "base/command_line.h" | 
|   10 #include "base/feature_list.h" |   10 #include "base/feature_list.h" | 
|   11 #include "base/files/file_path.h" |   11 #include "base/files/file_path.h" | 
|   12 #include "base/path_service.h" |   12 #include "base/path_service.h" | 
|   13 #include "base/strings/string_piece.h" |   13 #include "base/strings/string_piece.h" | 
|   14 #include "base/strings/string_split.h" |   14 #include "base/strings/string_split.h" | 
|   15 #include "base/strings/utf_string_conversions.h" |   15 #include "base/strings/utf_string_conversions.h" | 
|   16 #include "base/test/scoped_feature_list.h" |   16 #include "base/test/scoped_feature_list.h" | 
|   17 #include "base/time/time.h" |   17 #include "base/time/time.h" | 
|   18 #include "chrome/browser/notifications/desktop_notification_profile_util.h" |   18 #include "chrome/browser/notifications/desktop_notification_profile_util.h" | 
|   19 #include "chrome/browser/notifications/message_center_display_service.h" |   19 #include "chrome/browser/notifications/message_center_display_service.h" | 
|   20 #include "chrome/browser/notifications/notification.h" |   20 #include "chrome/browser/notifications/notification.h" | 
|   21 #include "chrome/browser/notifications/notification_test_util.h" |   21 #include "chrome/browser/notifications/notification_test_util.h" | 
|   22 #include "chrome/browser/notifications/platform_notification_service_impl.h" |   22 #include "chrome/browser/notifications/platform_notification_service_impl.h" | 
|   23 #include "chrome/browser/notifications/web_notification_delegate.h" |   23 #include "chrome/browser/notifications/web_notification_delegate.h" | 
|   24 #include "chrome/browser/permissions/permission_manager.h" |   24 #include "chrome/browser/permissions/permission_manager.h" | 
|   25 #include "chrome/browser/permissions/permission_request_manager.h" |   25 #include "chrome/browser/permissions/permission_request_manager.h" | 
 |   26 #include "chrome/browser/permissions/permission_result.h" | 
|   26 #include "chrome/browser/ui/browser.h" |   27 #include "chrome/browser/ui/browser.h" | 
|   27 #include "chrome/browser/ui/browser_window.h" |   28 #include "chrome/browser/ui/browser_window.h" | 
|   28 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" |   29 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" | 
|   29 #include "chrome/browser/ui/tabs/tab_strip_model.h" |   30 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 
|   30 #include "chrome/common/chrome_features.h" |   31 #include "chrome/common/chrome_features.h" | 
|   31 #include "chrome/test/base/in_process_browser_test.h" |   32 #include "chrome/test/base/in_process_browser_test.h" | 
|   32 #include "chrome/test/base/interactive_test_utils.h" |   33 #include "chrome/test/base/interactive_test_utils.h" | 
|   33 #include "chrome/test/base/ui_test_utils.h" |   34 #include "chrome/test/base/ui_test_utils.h" | 
|   34 #include "components/content_settings/core/common/content_settings_types.h" |   35 #include "components/content_settings/core/common/content_settings_types.h" | 
|   35 #include "content/public/common/content_features.h" |   36 #include "content/public/common/content_features.h" | 
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  155  |  156  | 
|  156 void PlatformNotificationServiceBrowserTest::TearDown() { |  157 void PlatformNotificationServiceBrowserTest::TearDown() { | 
|  157   service()->SetNotificationDisplayServiceForTesting(nullptr); |  158   service()->SetNotificationDisplayServiceForTesting(nullptr); | 
|  158 } |  159 } | 
|  159  |  160  | 
|  160 void PlatformNotificationServiceBrowserTest:: |  161 void PlatformNotificationServiceBrowserTest:: | 
|  161     GrantNotificationPermissionForTest() const { |  162     GrantNotificationPermissionForTest() const { | 
|  162   GURL origin = TestPageUrl().GetOrigin(); |  163   GURL origin = TestPageUrl().GetOrigin(); | 
|  163  |  164  | 
|  164   DesktopNotificationProfileUtil::GrantPermission(browser()->profile(), origin); |  165   DesktopNotificationProfileUtil::GrantPermission(browser()->profile(), origin); | 
|  165   ASSERT_EQ(blink::mojom::PermissionStatus::GRANTED, |  166   ASSERT_EQ(CONTENT_SETTING_ALLOW, | 
|  166             PermissionManager::Get(browser()->profile()) |  167             PermissionManager::Get(browser()->profile()) | 
|  167                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |  168                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 
|  168                                       origin, origin)); |  169                                       origin, origin) | 
 |  170                 .content_setting); | 
|  169 } |  171 } | 
|  170  |  172  | 
|  171 void PlatformNotificationServiceBrowserTest::NavigateToTestPage( |  173 void PlatformNotificationServiceBrowserTest::NavigateToTestPage( | 
|  172     const std::string& path) const { |  174     const std::string& path) const { | 
|  173   ui_test_utils::NavigateToURL(browser(), https_server_->GetURL(path)); |  175   ui_test_utils::NavigateToURL(browser(), https_server_->GetURL(path)); | 
|  174 } |  176 } | 
|  175  |  177  | 
|  176 bool PlatformNotificationServiceBrowserTest::RunScript( |  178 bool PlatformNotificationServiceBrowserTest::RunScript( | 
|  177     const std::string& script, std::string* result) const { |  179     const std::string& script, std::string* result) const { | 
|  178   return content::ExecuteScriptAndExtractString( |  180   return content::ExecuteScriptAndExtractString( | 
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  462 // TODO(felt): This DCHECKs when bubbles are enabled, when the file_url is |  464 // TODO(felt): This DCHECKs when bubbles are enabled, when the file_url is | 
|  463 // persisted. crbug.com/502057 |  465 // persisted. crbug.com/502057 | 
|  464 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, |  466 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, | 
|  465                        DISABLED_CheckFilePermissionNotGranted) { |  467                        DISABLED_CheckFilePermissionNotGranted) { | 
|  466   // This case should succeed because a normal page URL is used. |  468   // This case should succeed because a normal page URL is used. | 
|  467   std::string script_result; |  469   std::string script_result; | 
|  468  |  470  | 
|  469   PermissionManager* permission_manager = |  471   PermissionManager* permission_manager = | 
|  470       PermissionManager::Get(browser()->profile()); |  472       PermissionManager::Get(browser()->profile()); | 
|  471  |  473  | 
|  472   EXPECT_EQ(blink::mojom::PermissionStatus::ASK, |  474   EXPECT_EQ(CONTENT_SETTING_ASK, | 
|  473             permission_manager->GetPermissionStatus( |  475             permission_manager | 
|  474                 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, TestPageUrl(), |  476                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 
|  475                 TestPageUrl())); |  477                                       TestPageUrl(), TestPageUrl()) | 
 |  478                 .content_setting); | 
|  476  |  479  | 
|  477   RequestAndAcceptPermission(); |  480   RequestAndAcceptPermission(); | 
|  478   EXPECT_EQ(blink::mojom::PermissionStatus::GRANTED, |  481   EXPECT_EQ(CONTENT_SETTING_ALLOW, | 
|  479             permission_manager->GetPermissionStatus( |  482             permission_manager | 
|  480                 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, TestPageUrl(), |  483                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 
|  481                 TestPageUrl())); |  484                                       TestPageUrl(), TestPageUrl()) | 
 |  485                 .content_setting); | 
|  482  |  486  | 
|  483   // This case should fail because a file URL is used. |  487   // This case should fail because a file URL is used. | 
|  484   base::FilePath dir_source_root; |  488   base::FilePath dir_source_root; | 
|  485   EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &dir_source_root)); |  489   EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &dir_source_root)); | 
|  486   base::FilePath full_file_path = |  490   base::FilePath full_file_path = | 
|  487       dir_source_root.Append(server_root()).AppendASCII(kTestFileName); |  491       dir_source_root.Append(server_root()).AppendASCII(kTestFileName); | 
|  488   GURL file_url(net::FilePathToFileURL(full_file_path)); |  492   GURL file_url(net::FilePathToFileURL(full_file_path)); | 
|  489  |  493  | 
|  490   ui_test_utils::NavigateToURL(browser(), file_url); |  494   ui_test_utils::NavigateToURL(browser(), file_url); | 
|  491  |  495  | 
|  492   EXPECT_EQ(blink::mojom::PermissionStatus::ASK, |  496   EXPECT_EQ(CONTENT_SETTING_ASK, | 
|  493             permission_manager->GetPermissionStatus( |  497             permission_manager | 
|  494                 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, file_url, file_url)); |  498                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 
 |  499                                       file_url, file_url) | 
 |  500                 .content_setting); | 
|  495  |  501  | 
|  496   RequestAndAcceptPermission(); |  502   RequestAndAcceptPermission(); | 
|  497   EXPECT_EQ(blink::mojom::PermissionStatus::ASK, |  503   EXPECT_EQ(CONTENT_SETTING_ASK, | 
|  498             permission_manager->GetPermissionStatus( |  504             permission_manager | 
|  499                 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, file_url, file_url)) |  505                 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 
 |  506                                       file_url, file_url) | 
 |  507                 .content_setting) | 
|  500       << "If this test fails, you may have fixed a bug preventing file origins " |  508       << "If this test fails, you may have fixed a bug preventing file origins " | 
|  501       << "from sending their origin from Blink; if so you need to update the " |  509       << "from sending their origin from Blink; if so you need to update the " | 
|  502       << "display function for notification origins to show the file path."; |  510       << "display function for notification origins to show the file path."; | 
|  503 } |  511 } | 
|  504  |  512  | 
|  505 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, |  513 IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest, | 
|  506                        DataUrlAsNotificationImage) { |  514                        DataUrlAsNotificationImage) { | 
|  507   ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); |  515   ASSERT_NO_FATAL_FAILURE(GrantNotificationPermissionForTest()); | 
|  508  |  516  | 
|  509   std::string script_result; |  517   std::string script_result; | 
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  781       RunScript("DisplayPersistentAllOptionsNotification()", &script_result)); |  789       RunScript("DisplayPersistentAllOptionsNotification()", &script_result)); | 
|  782   EXPECT_EQ("ok", script_result); |  790   EXPECT_EQ("ok", script_result); | 
|  783  |  791  | 
|  784   ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |  792   ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); | 
|  785   const Notification& notification = ui_manager()->GetNotificationAt(0); |  793   const Notification& notification = ui_manager()->GetNotificationAt(0); | 
|  786  |  794  | 
|  787   // Since the kNotificationContentImage kill switch has disabled images, the |  795   // Since the kNotificationContentImage kill switch has disabled images, the | 
|  788   // notification should be shown without an image. |  796   // notification should be shown without an image. | 
|  789   EXPECT_TRUE(notification.image().IsEmpty()); |  797   EXPECT_TRUE(notification.image().IsEmpty()); | 
|  790 } |  798 } | 
| OLD | NEW |