1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/notifications/desktop_notification_service.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/synchronization/waitable_event.h"
11 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "third_party/WebKit/public/web/WebNotificationPresenter.h"
18 class DesktopNotificationServiceTest : public ChromeRenderViewHostTestHarness {
20 virtual void SetUp() {
21 ChromeRenderViewHostTestHarness::SetUp();
23 // Creates the destop notification service.
24 service_ = DesktopNotificationServiceFactory::GetForProfile(profile());
27 DesktopNotificationService* service_;
30 TEST_F(DesktopNotificationServiceTest, SettingsForSchemes) {
31 GURL url("file:///html/test.html");
33 EXPECT_EQ(CONTENT_SETTING_ASK,
34 service_->GetDefaultContentSetting(NULL));
35 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
36 service_->HasPermission(url));
38 service_->GrantPermission(url);
39 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
40 service_->HasPermission(url));
42 service_->DenyPermission(url);
43 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionDenied,
44 service_->HasPermission(url));
46 GURL https_url("https://testurl");
47 GURL http_url("http://testurl");
48 EXPECT_EQ(CONTENT_SETTING_ASK,
49 service_->GetDefaultContentSetting(NULL));
50 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
51 service_->HasPermission(http_url));
52 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
53 service_->HasPermission(https_url));
55 service_->GrantPermission(https_url);
56 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
57 service_->HasPermission(http_url));
58 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
59 service_->HasPermission(https_url));
61 service_->DenyPermission(http_url);
62 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionDenied,
63 service_->HasPermission(http_url));
64 EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
65 service_->HasPermission(https_url));
68 TEST_F(DesktopNotificationServiceTest, GetNotificationsSettings) {
69 service_->GrantPermission(GURL("http://allowed2.com"));
70 service_->GrantPermission(GURL("http://allowed.com"));
71 service_->DenyPermission(GURL("http://denied2.com"));
72 service_->DenyPermission(GURL("http://denied.com"));
74 ContentSettingsForOneType settings;
75 service_->GetNotificationsSettings(&settings);
76 // |settings| contains the default setting and 4 exceptions.
77 ASSERT_EQ(5u, settings.size());
79 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
80 GURL("http://allowed.com")),
81 settings[0].primary_pattern);
82 EXPECT_EQ(CONTENT_SETTING_ALLOW,
84 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
85 GURL("http://allowed2.com")),
86 settings[1].primary_pattern);
87 EXPECT_EQ(CONTENT_SETTING_ALLOW,
89 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
90 GURL("http://denied.com")),
91 settings[2].primary_pattern);
92 EXPECT_EQ(CONTENT_SETTING_BLOCK,
94 EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
95 GURL("http://denied2.com")),
96 settings[3].primary_pattern);
97 EXPECT_EQ(CONTENT_SETTING_BLOCK,
99 EXPECT_EQ(ContentSettingsPattern::Wildcard(),
100 settings[4].primary_pattern);
101 EXPECT_EQ(CONTENT_SETTING_ASK,
102 settings[4].setting);