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

Side by Side Diff: chrome/browser/services/gcm/push_messaging_service_impl.h

Issue 905713002: Push API: Fix registration failing because app handler is missing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@countgrace
Patch Set: Avoid decreasing too often Created 5 years, 10 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 | « no previous file | chrome/browser/services/gcm/push_messaging_service_impl.cc » ('j') | 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 #ifndef CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_ 5 #ifndef CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_
6 #define CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_ 6 #define CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "components/gcm_driver/gcm_app_handler.h" 10 #include "components/gcm_driver/gcm_app_handler.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 const GURL& requesting_origin, 68 const GURL& requesting_origin,
69 int64 service_worker_registration_id, 69 int64 service_worker_registration_id,
70 const content::PushMessagingService::UnregisterCallback&) override; 70 const content::PushMessagingService::UnregisterCallback&) override;
71 blink::WebPushPermissionStatus GetPermissionStatus( 71 blink::WebPushPermissionStatus GetPermissionStatus(
72 const GURL& requesting_origin, 72 const GURL& requesting_origin,
73 const GURL& embedding_origin) override; 73 const GURL& embedding_origin) override;
74 74
75 void SetProfileForTesting(Profile* profile); 75 void SetProfileForTesting(Profile* profile);
76 76
77 private: 77 private:
78 void IncreasePushRegistrationCount(int add); 78 // A registration is pending until it has succeeded or failed.
79 void DecreasePushRegistrationCount(int subtract); 79 void IncreasePushRegistrationCount(int add, bool is_pending);
80 void DecreasePushRegistrationCount(int subtract, bool was_pending);
80 81
81 void DeliverMessageCallback(const PushMessagingApplicationId& application_id, 82 void DeliverMessageCallback(const PushMessagingApplicationId& application_id,
82 const GCMClient::IncomingMessage& message, 83 const GCMClient::IncomingMessage& message,
83 content::PushDeliveryStatus status); 84 content::PushDeliveryStatus status);
84 85
85 // Developers are required to display a Web Notification in response to an 86 // Developers are required to display a Web Notification in response to an
86 // incoming push message in order to clarify to the user that something has 87 // incoming push message in order to clarify to the user that something has
87 // happened in the background. When they forget to do so, display a default 88 // happened in the background. When they forget to do so, display a default
88 // notification on their behalf. 89 // notification on their behalf.
89 void RequireUserVisibleUX(const PushMessagingApplicationId& application_id); 90 void RequireUserVisibleUX(const PushMessagingApplicationId& application_id);
(...skipping 23 matching lines...) Expand all
113 114
114 void Unregister(const PushMessagingApplicationId& application_id, 115 void Unregister(const PushMessagingApplicationId& application_id,
115 const content::PushMessagingService::UnregisterCallback&); 116 const content::PushMessagingService::UnregisterCallback&);
116 117
117 void DidUnregister(const content::PushMessagingService::UnregisterCallback&, 118 void DidUnregister(const content::PushMessagingService::UnregisterCallback&,
118 GCMClient::Result result); 119 GCMClient::Result result);
119 120
120 // Helper method that checks if a given origin is allowed to use Push. 121 // Helper method that checks if a given origin is allowed to use Push.
121 bool HasPermission(const GURL& origin); 122 bool HasPermission(const GURL& origin);
122 123
123 // Adds this service as an app handler to the GCMDriver if it has not been
124 // added yet.
125 void AddAppHandlerIfNecessary();
126
127 GCMProfileService* gcm_profile_service_; // It owns us. 124 GCMProfileService* gcm_profile_service_; // It owns us.
128 125
129 Profile* profile_; // It owns our owner. 126 Profile* profile_; // It owns our owner.
130 127
131 int push_registration_count_; 128 int push_registration_count_;
129 int pending_push_registration_count_;
132 130
133 base::WeakPtrFactory<PushMessagingServiceImpl> weak_factory_; 131 base::WeakPtrFactory<PushMessagingServiceImpl> weak_factory_;
134 132
135 DISALLOW_COPY_AND_ASSIGN(PushMessagingServiceImpl); 133 DISALLOW_COPY_AND_ASSIGN(PushMessagingServiceImpl);
136 }; 134 };
137 135
138 } // namespace gcm 136 } // namespace gcm
139 137
140 #endif // CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_ 138 #endif // CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_SERVICE_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/services/gcm/push_messaging_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698