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

Side by Side Diff: chrome/browser/push_messaging/push_messaging_service_impl.cc

Issue 2713083003: Use ContentSetting in chrome/ instead of PermissionStatus (Closed)
Patch Set: maybe fix android compile + address comments + basic tests Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/push_messaging/push_messaging_service_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "chrome/browser/push_messaging/push_messaging_service_impl.h" 5 #include "chrome/browser/push_messaging/push_messaging_service_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/barrier_closure.h" 9 #include "base/barrier_closure.h"
10 #include "base/base64url.h" 10 #include "base/base64url.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/bind_helpers.h" 12 #include "base/bind_helpers.h"
13 #include "base/callback_helpers.h" 13 #include "base/callback_helpers.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/feature_list.h" 15 #include "base/feature_list.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/metrics/histogram_macros.h" 17 #include "base/metrics/histogram_macros.h"
18 #include "base/strings/string_util.h" 18 #include "base/strings/string_util.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "build/build_config.h" 20 #include "build/build_config.h"
21 #include "chrome/browser/browser_process.h" 21 #include "chrome/browser/browser_process.h"
22 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 22 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
23 #include "chrome/browser/gcm/gcm_profile_service_factory.h" 23 #include "chrome/browser/gcm/gcm_profile_service_factory.h"
24 #include "chrome/browser/gcm/instance_id/instance_id_profile_service.h" 24 #include "chrome/browser/gcm/instance_id/instance_id_profile_service.h"
25 #include "chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h" 25 #include "chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h"
26 #include "chrome/browser/permissions/permission_manager.h" 26 #include "chrome/browser/permissions/permission_manager.h"
27 #include "chrome/browser/permissions/permission_result.h"
27 #include "chrome/browser/profiles/profile.h" 28 #include "chrome/browser/profiles/profile.h"
28 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" 29 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h"
29 #include "chrome/browser/push_messaging/push_messaging_constants.h" 30 #include "chrome/browser/push_messaging/push_messaging_constants.h"
30 #include "chrome/browser/push_messaging/push_messaging_service_factory.h" 31 #include "chrome/browser/push_messaging/push_messaging_service_factory.h"
31 #include "chrome/browser/push_messaging/push_messaging_service_observer.h" 32 #include "chrome/browser/push_messaging/push_messaging_service_observer.h"
32 #include "chrome/browser/ui/chrome_pages.h" 33 #include "chrome/browser/ui/chrome_pages.h"
33 #include "chrome/common/chrome_features.h" 34 #include "chrome/common/chrome_features.h"
34 #include "chrome/common/chrome_switches.h" 35 #include "chrome/common/chrome_switches.h"
35 #include "chrome/common/features.h" 36 #include "chrome/common/features.h"
36 #include "chrome/common/pref_names.h" 37 #include "chrome/common/pref_names.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 UMA_HISTOGRAM_ENUMERATION("PushMessaging.UnregistrationGCMResult", result, 94 UMA_HISTOGRAM_ENUMERATION("PushMessaging.UnregistrationGCMResult", result,
94 gcm::GCMClient::LAST_RESULT + 1); 95 gcm::GCMClient::LAST_RESULT + 1);
95 } 96 }
96 97
97 void RecordUnsubscribeIIDResult(InstanceID::Result result) { 98 void RecordUnsubscribeIIDResult(InstanceID::Result result) {
98 UMA_HISTOGRAM_ENUMERATION("PushMessaging.UnregistrationIIDResult", result, 99 UMA_HISTOGRAM_ENUMERATION("PushMessaging.UnregistrationIIDResult", result,
99 InstanceID::LAST_RESULT + 1); 100 InstanceID::LAST_RESULT + 1);
100 } 101 }
101 102
102 blink::WebPushPermissionStatus ToPushPermission( 103 blink::WebPushPermissionStatus ToPushPermission(
103 blink::mojom::PermissionStatus permission_status) { 104 ContentSetting content_setting) {
104 switch (permission_status) { 105 switch (content_setting) {
105 case blink::mojom::PermissionStatus::GRANTED: 106 case CONTENT_SETTING_ALLOW:
106 return blink::WebPushPermissionStatusGranted; 107 return blink::WebPushPermissionStatusGranted;
107 case blink::mojom::PermissionStatus::DENIED: 108 case CONTENT_SETTING_BLOCK:
108 return blink::WebPushPermissionStatusDenied; 109 return blink::WebPushPermissionStatusDenied;
109 case blink::mojom::PermissionStatus::ASK: 110 case CONTENT_SETTING_ASK:
110 return blink::WebPushPermissionStatusPrompt; 111 return blink::WebPushPermissionStatusPrompt;
112 default:
113 break;
111 } 114 }
112 NOTREACHED(); 115 NOTREACHED();
113 return blink::WebPushPermissionStatusDenied; 116 return blink::WebPushPermissionStatusDenied;
114 } 117 }
115 118
116 void UnregisterCallbackToClosure(const base::Closure& closure, 119 void UnregisterCallbackToClosure(const base::Closure& closure,
117 content::PushUnregistrationStatus status) { 120 content::PushUnregistrationStatus status) {
118 DCHECK(!closure.is_null()); 121 DCHECK(!closure.is_null());
119 closure.Run(); 122 closure.Run();
120 } 123 }
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 blink::WebPushPermissionStatus permission_status = 503 blink::WebPushPermissionStatus permission_status =
501 GetPermissionStatus(requesting_origin, options.user_visible_only); 504 GetPermissionStatus(requesting_origin, options.user_visible_only);
502 505
503 if (permission_status != blink::WebPushPermissionStatusGranted) { 506 if (permission_status != blink::WebPushPermissionStatusGranted) {
504 SubscribeEndWithError(register_callback, 507 SubscribeEndWithError(register_callback,
505 content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED); 508 content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
506 return; 509 return;
507 } 510 }
508 511
509 DoSubscribe(app_identifier, options, register_callback, 512 DoSubscribe(app_identifier, options, register_callback,
510 blink::mojom::PermissionStatus::GRANTED); 513 CONTENT_SETTING_ALLOW);
511 } 514 }
512 515
513 blink::WebPushPermissionStatus PushMessagingServiceImpl::GetPermissionStatus( 516 blink::WebPushPermissionStatus PushMessagingServiceImpl::GetPermissionStatus(
514 const GURL& origin, 517 const GURL& origin,
515 bool user_visible) { 518 bool user_visible) {
516 if (!user_visible) 519 if (!user_visible)
517 return blink::WebPushPermissionStatusDenied; 520 return blink::WebPushPermissionStatusDenied;
518 521
519 // Because the Push API is tied to Service Workers, many usages of the API 522 // Because the Push API is tied to Service Workers, many usages of the API
520 // won't have an embedding origin at all. Only consider the requesting 523 // won't have an embedding origin at all. Only consider the requesting
521 // |origin| when checking whether permission to use the API has been granted. 524 // |origin| when checking whether permission to use the API has been granted.
522 return ToPushPermission(PermissionManager::Get(profile_)->GetPermissionStatus( 525 return ToPushPermission(
523 CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, origin, origin)); 526 PermissionManager::Get(profile_)
527 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, origin,
528 origin)
529 .content_setting);
524 } 530 }
525 531
526 bool PushMessagingServiceImpl::SupportNonVisibleMessages() { 532 bool PushMessagingServiceImpl::SupportNonVisibleMessages() {
527 return false; 533 return false;
528 } 534 }
529 535
530 void PushMessagingServiceImpl::DoSubscribe( 536 void PushMessagingServiceImpl::DoSubscribe(
531 const PushMessagingAppIdentifier& app_identifier, 537 const PushMessagingAppIdentifier& app_identifier,
532 const content::PushSubscriptionOptions& options, 538 const content::PushSubscriptionOptions& options,
533 const RegisterCallback& register_callback, 539 const RegisterCallback& register_callback,
534 blink::mojom::PermissionStatus permission_status) { 540 ContentSetting content_setting) {
535 if (permission_status != blink::mojom::PermissionStatus::GRANTED) { 541 if (content_setting != CONTENT_SETTING_ALLOW) {
536 SubscribeEndWithError(register_callback, 542 SubscribeEndWithError(register_callback,
537 content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED); 543 content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
538 return; 544 return;
539 } 545 }
540 546
541 IncreasePushSubscriptionCount(1, true /* is_pending */); 547 IncreasePushSubscriptionCount(1, true /* is_pending */);
542 548
543 GetInstanceIDDriver() 549 GetInstanceIDDriver()
544 ->GetInstanceID(app_identifier.app_id()) 550 ->GetInstanceID(app_identifier.app_id())
545 ->GetToken(NormalizeSenderInfo(options.sender_info), kGCMScope, 551 ->GetToken(NormalizeSenderInfo(options.sender_info), kGCMScope,
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 } 989 }
984 990
985 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver() 991 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver()
986 const { 992 const {
987 instance_id::InstanceIDProfileService* instance_id_profile_service = 993 instance_id::InstanceIDProfileService* instance_id_profile_service =
988 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_); 994 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_);
989 CHECK(instance_id_profile_service); 995 CHECK(instance_id_profile_service);
990 CHECK(instance_id_profile_service->driver()); 996 CHECK(instance_id_profile_service->driver());
991 return instance_id_profile_service->driver(); 997 return instance_id_profile_service->driver();
992 } 998 }
OLDNEW
« no previous file with comments | « chrome/browser/push_messaging/push_messaging_service_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698