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

Side by Side Diff: chrome/browser/services/gcm/push_messaging_application_id.cc

Issue 930083002: Unregister with push service and SW database when permission is lost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ready 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
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/services/gcm/push_messaging_application_id.h" 5 #include "chrome/browser/services/gcm/push_messaging_application_id.h"
6 6
7 #include "base/guid.h" 7 #include "base/guid.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/prefs/scoped_user_pref_update.h" 10 #include "base/prefs/scoped_user_pref_update.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 const base::DictionaryValue* map = 84 const base::DictionaryValue* map =
85 profile->GetPrefs()->GetDictionary(prefs::kPushMessagingApplicationIdMap); 85 profile->GetPrefs()->GetDictionary(prefs::kPushMessagingApplicationIdMap);
86 for (auto it = base::DictionaryValue::Iterator(*map); !it.IsAtEnd(); 86 for (auto it = base::DictionaryValue::Iterator(*map); !it.IsAtEnd();
87 it.Advance()) { 87 it.Advance()) {
88 if (it.value().Equals(&origin_and_sw_id)) 88 if (it.value().Equals(&origin_and_sw_id))
89 return Get(profile, it.key()); 89 return Get(profile, it.key());
90 } 90 }
91 return PushMessagingApplicationId(); 91 return PushMessagingApplicationId();
92 } 92 }
93 93
94 // static
95 std::vector<PushMessagingApplicationId> PushMessagingApplicationId::GetAll(
96 Profile* profile) {
97 std::vector<PushMessagingApplicationId> result;
98
99 const base::DictionaryValue* map =
100 profile->GetPrefs()->GetDictionary(prefs::kPushMessagingApplicationIdMap);
101 for (auto it = base::DictionaryValue::Iterator(*map); !it.IsAtEnd();
102 it.Advance()) {
103 result.push_back(Get(profile, it.key()));
104 }
105
106 return result;
107 }
108
94 void PushMessagingApplicationId::PersistToDisk(Profile* profile) const { 109 void PushMessagingApplicationId::PersistToDisk(Profile* profile) const {
95 DCHECK(IsValid()); 110 DCHECK(IsValid());
96 111
97 DictionaryPrefUpdate update(profile->GetPrefs(), 112 DictionaryPrefUpdate update(profile->GetPrefs(),
98 prefs::kPushMessagingApplicationIdMap); 113 prefs::kPushMessagingApplicationIdMap);
99 base::DictionaryValue* map = update.Get(); 114 base::DictionaryValue* map = update.Get();
100 115
101 // Delete any stale entry with the same origin and Service Worker 116 // Delete any stale entry with the same origin and Service Worker
102 // registration id (hence we ensure there is a 1:1 not 1:many mapping). 117 // registration id (hence we ensure there is a 1:1 not 1:many mapping).
103 PushMessagingApplicationId old = Get(profile, origin, 118 PushMessagingApplicationId old = Get(profile, origin,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 153
139 bool PushMessagingApplicationId::IsValid() const { 154 bool PushMessagingApplicationId::IsValid() const {
140 const size_t prefix_len = strlen(kPushMessagingApplicationIdPrefix); 155 const size_t prefix_len = strlen(kPushMessagingApplicationIdPrefix);
141 return origin.is_valid() && origin.GetOrigin() == origin 156 return origin.is_valid() && origin.GetOrigin() == origin
142 && service_worker_registration_id >= 0 157 && service_worker_registration_id >= 0
143 && !app_id_guid.compare(0, prefix_len, kPushMessagingApplicationIdPrefix) 158 && !app_id_guid.compare(0, prefix_len, kPushMessagingApplicationIdPrefix)
144 && base::IsValidGUID(app_id_guid.substr(prefix_len, std::string::npos)); 159 && base::IsValidGUID(app_id_guid.substr(prefix_len, std::string::npos));
145 } 160 }
146 161
147 } // namespace gcm 162 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698