| Index: chrome/browser/push_messaging/push_messaging_permission_context_unittest.cc
|
| diff --git a/chrome/browser/push_messaging/push_messaging_permission_context_unittest.cc b/chrome/browser/push_messaging/push_messaging_permission_context_unittest.cc
|
| index 14acbfa02455e4b96620e60e8e14a87ebfb2d0a6..40c9edae655dfff0df430b59a7b70d45fa86ae01 100644
|
| --- a/chrome/browser/push_messaging/push_messaging_permission_context_unittest.cc
|
| +++ b/chrome/browser/push_messaging/push_messaging_permission_context_unittest.cc
|
| @@ -13,6 +13,8 @@
|
| #include "components/content_settings/core/common/content_settings_types.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "url/gurl.h"
|
| +#include "url/origin.h"
|
|
|
| namespace {
|
|
|
| @@ -36,8 +38,8 @@ class TestPushMessagingPermissionContext
|
| private:
|
| // PushMessagingPermissionContext:
|
| void NotifyPermissionSet(const PermissionRequestID& id,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedder_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedder_origin,
|
| const BrowserPermissionCallback& callback,
|
| bool persist,
|
| ContentSetting content_setting) override {
|
| @@ -82,15 +84,17 @@ class PushMessagingPermissionContextTest
|
| TEST_F(PushMessagingPermissionContextTest, HasPermissionPrompt) {
|
| TestingProfile profile;
|
| PushMessagingPermissionContext context(&profile);
|
| + const GURL url_a(kOriginA);
|
| + const url::Origin origin_a(url_a);
|
| EXPECT_EQ(CONTENT_SETTING_ASK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| // Just granting notifications should still prompt
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ALLOW);
|
|
|
| EXPECT_EQ(CONTENT_SETTING_ASK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| // Just granting push should still prompt
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| @@ -99,7 +103,7 @@ TEST_F(PushMessagingPermissionContextTest, HasPermissionPrompt) {
|
| CONTENT_SETTING_ALLOW);
|
|
|
| EXPECT_EQ(CONTENT_SETTING_ASK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, HasPermissionDenySettingsMismatch) {
|
| @@ -107,32 +111,36 @@ TEST_F(PushMessagingPermissionContextTest, HasPermissionDenySettingsMismatch) {
|
| PushMessagingPermissionContext context(&profile);
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_BLOCK);
|
| + const GURL url_a(kOriginA);
|
| + const url::Origin origin_a(url_a);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ASK);
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_BLOCK);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ALLOW);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ASK);
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_BLOCK);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, HasPermissionDenyDifferentOrigins) {
|
| TestingProfile profile;
|
| PushMessagingPermissionContext context(&profile);
|
| - EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginB), GURL(kOriginA)));
|
| + const GURL url_a(kOriginA);
|
| + const GURL url_b(kOriginB);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, context.GetPermissionStatus(
|
| + url::Origin(url_a), url::Origin(url_b)));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, HasPermissionAccept) {
|
| @@ -143,8 +151,10 @@ TEST_F(PushMessagingPermissionContextTest, HasPermissionAccept) {
|
| CONTENT_SETTING_ALLOW);
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_ALLOW);
|
| - EXPECT_EQ(CONTENT_SETTING_ALLOW,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + const GURL url_a(kOriginA);
|
| + const GURL url_b(kOriginB);
|
| + EXPECT_EQ(CONTENT_SETTING_ALLOW, context.GetPermissionStatus(
|
| + url::Origin(url_a), url::Origin(url_b)));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, DecidePushPermission) {
|
| @@ -153,29 +163,31 @@ TEST_F(PushMessagingPermissionContextTest, DecidePushPermission) {
|
| PermissionRequestID request_id(-1, -1, -1);
|
| BrowserPermissionCallback callback = base::Bind(DoNothing);
|
|
|
| - context.DecidePushPermission(request_id, GURL(kOriginA), GURL(kOriginA),
|
| - callback, CONTENT_SETTING_DEFAULT);
|
| + const GURL url_a(kOriginA);
|
| + const url::Origin origin_a(url_a);
|
| + context.DecidePushPermission(request_id, origin_a, origin_a, callback,
|
| + CONTENT_SETTING_DEFAULT);
|
| EXPECT_FALSE(context.was_persisted());
|
| EXPECT_FALSE(context.was_granted());
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_ALLOW);
|
| - context.DecidePushPermission(request_id, GURL(kOriginA), GURL(kOriginA),
|
| - callback, CONTENT_SETTING_ALLOW);
|
| + context.DecidePushPermission(request_id, origin_a, origin_a, callback,
|
| + CONTENT_SETTING_ALLOW);
|
| EXPECT_TRUE(context.was_persisted());
|
| EXPECT_TRUE(context.was_granted());
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_BLOCK);
|
| - context.DecidePushPermission(request_id, GURL(kOriginA), GURL(kOriginA),
|
| - callback, CONTENT_SETTING_ALLOW);
|
| + context.DecidePushPermission(request_id, origin_a, origin_a, callback,
|
| + CONTENT_SETTING_ALLOW);
|
| EXPECT_TRUE(context.was_persisted());
|
| EXPECT_FALSE(context.was_granted());
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_ASK);
|
| - context.DecidePushPermission(request_id, GURL(kOriginA), GURL(kOriginA),
|
| - callback, CONTENT_SETTING_ALLOW);
|
| + context.DecidePushPermission(request_id, origin_a, origin_a, callback,
|
| + CONTENT_SETTING_ALLOW);
|
| EXPECT_TRUE(context.was_persisted());
|
| EXPECT_TRUE(context.was_granted());
|
| }
|
| @@ -186,15 +198,21 @@ TEST_F(PushMessagingPermissionContextTest, DecidePermission) {
|
| PermissionRequestID request_id(-1, -1, -1);
|
| BrowserPermissionCallback callback = base::Bind(DoNothing);
|
|
|
| + const GURL url_a(kOriginA);
|
| + const GURL url_b(kOriginB);
|
| + const url::Origin origin_a(url_a);
|
| + const url::Origin origin_b(url_b);
|
| +
|
| // Requesting and embedding origin are different.
|
| - context.DecidePermission(NULL, request_id, GURL(kOriginA), GURL(kOriginB),
|
| - callback);
|
| + context.DecidePermission(NULL, request_id, origin_a, origin_b, callback);
|
| EXPECT_FALSE(context.was_persisted());
|
| EXPECT_FALSE(context.was_granted());
|
|
|
| // Insecure origin
|
| - NavigateAndCommit(GURL(kInsecureOrigin));
|
| - context.RequestPermission(web_contents(), request_id, GURL(kInsecureOrigin),
|
| + const GURL insecure_url(kInsecureOrigin);
|
| + const url::Origin insecure_origin(insecure_url);
|
| + NavigateAndCommit(insecure_url);
|
| + context.RequestPermission(web_contents(), request_id, insecure_origin,
|
| callback);
|
| EXPECT_FALSE(context.was_persisted());
|
| EXPECT_FALSE(context.was_granted());
|
| @@ -209,29 +227,29 @@ TEST_F(PushMessagingPermissionContextTest, RequestPermission) {
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ALLOW);
|
|
|
| + const GURL url_a(kOriginA);
|
| + const url::Origin origin_a(url_a);
|
| +
|
| EXPECT_EQ(
|
| CONTENT_SETTING_ASK,
|
| HostContentSettingsMapFactory::GetForProfile(&profile)->GetContentSetting(
|
| - GURL(kOriginA), GURL(kOriginA), CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| - std::string()));
|
| + url_a, url_a, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, std::string()));
|
| EXPECT_EQ(CONTENT_SETTING_ASK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| // If a website already has notifications permission, push permission is
|
| // silently granted once the website requests it.
|
| - NavigateAndCommit(GURL(kOriginA));
|
| - context.RequestPermission(web_contents(), request_id, GURL(kOriginA),
|
| - callback);
|
| + NavigateAndCommit(url_a);
|
| + context.RequestPermission(web_contents(), request_id, origin_a, callback);
|
|
|
| EXPECT_TRUE(context.was_persisted());
|
| EXPECT_TRUE(context.was_granted());
|
| EXPECT_EQ(
|
| CONTENT_SETTING_ALLOW,
|
| HostContentSettingsMapFactory::GetForProfile(&profile)->GetContentSetting(
|
| - GURL(kOriginA), GURL(kOriginA), CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| - std::string()));
|
| + url_a, url_a, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, std::string()));
|
| EXPECT_EQ(CONTENT_SETTING_ALLOW,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, RequestAfterRevokingNotifications) {
|
| @@ -243,14 +261,15 @@ TEST_F(PushMessagingPermissionContextTest, RequestAfterRevokingNotifications) {
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ALLOW);
|
|
|
| - NavigateAndCommit(GURL(kOriginA));
|
| - context.RequestPermission(web_contents(), request_id, GURL(kOriginA),
|
| - callback);
|
| + const GURL url_a(kOriginA);
|
| + NavigateAndCommit(url_a);
|
| + const url::Origin origin_a(url_a);
|
| + context.RequestPermission(web_contents(), request_id, origin_a, callback);
|
| EXPECT_TRUE(context.was_persisted());
|
| EXPECT_TRUE(context.was_granted());
|
|
|
| EXPECT_EQ(CONTENT_SETTING_ALLOW,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| // Revoke notifications permission. This should revoke push, and prevent
|
| // future requests for push from succeeding.
|
| @@ -258,43 +277,41 @@ TEST_F(PushMessagingPermissionContextTest, RequestAfterRevokingNotifications) {
|
| CONTENT_SETTING_BLOCK);
|
|
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
|
|
| - context.RequestPermission(web_contents(), request_id, GURL(kOriginA),
|
| - callback);
|
| + context.RequestPermission(web_contents(), request_id, origin_a, callback);
|
| EXPECT_FALSE(context.was_persisted());
|
| EXPECT_FALSE(context.was_granted());
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kOriginA), GURL(kOriginA)));
|
| + context.GetPermissionStatus(origin_a, origin_a));
|
| }
|
|
|
| TEST_F(PushMessagingPermissionContextTest, GetPermissionStatusInsecureOrigin) {
|
| TestingProfile profile;
|
| TestPushMessagingPermissionContext context(&profile);
|
|
|
| + const GURL insecure_url(kInsecureOrigin);
|
| + const url::Origin insecure_origin(insecure_url);
|
| +
|
| // The status should be blocked for an insecure origin, regardless of the
|
| // content setting value.
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kInsecureOrigin),
|
| - GURL(kInsecureOrigin)));
|
| + context.GetPermissionStatus(insecure_origin, insecure_origin));
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_ALLOW);
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
|
| CONTENT_SETTING_ALLOW);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kInsecureOrigin),
|
| - GURL(kInsecureOrigin)));
|
| + context.GetPermissionStatus(insecure_origin, insecure_origin));
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_BLOCK);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kInsecureOrigin),
|
| - GURL(kInsecureOrigin)));
|
| + context.GetPermissionStatus(insecure_origin, insecure_origin));
|
|
|
| SetContentSetting(&profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
|
| CONTENT_SETTING_ASK);
|
| EXPECT_EQ(CONTENT_SETTING_BLOCK,
|
| - context.GetPermissionStatus(GURL(kInsecureOrigin),
|
| - GURL(kInsecureOrigin)));
|
| + context.GetPermissionStatus(insecure_origin, insecure_origin));
|
| }
|
|
|