OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/notifications/notification_channels_provider_android.h" | 5 #include "chrome/browser/notifications/notification_channels_provider_android.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 // This provider only handles settings for specific origins. | 215 // This provider only handles settings for specific origins. |
216 if (primary_pattern == ContentSettingsPattern::Wildcard() && | 216 if (primary_pattern == ContentSettingsPattern::Wildcard() && |
217 secondary_pattern == ContentSettingsPattern::Wildcard() && | 217 secondary_pattern == ContentSettingsPattern::Wildcard() && |
218 resource_identifier.empty()) { | 218 resource_identifier.empty()) { |
219 return false; | 219 return false; |
220 } | 220 } |
221 | 221 |
222 InitCachedChannels(); | 222 InitCachedChannels(); |
223 | 223 |
224 url::Origin origin = url::Origin(GURL(primary_pattern.ToString())); | 224 url::Origin origin = url::Origin(GURL(primary_pattern.ToString())); |
225 DCHECK(!origin.unique()); | 225 DCHECK(!origin.opaque()); |
226 const std::string origin_string = origin.Serialize(); | 226 const std::string origin_string = origin.Serialize(); |
227 | 227 |
228 ContentSetting setting = content_settings::ValueToContentSetting(value); | 228 ContentSetting setting = content_settings::ValueToContentSetting(value); |
229 switch (setting) { | 229 switch (setting) { |
230 case CONTENT_SETTING_ALLOW: | 230 case CONTENT_SETTING_ALLOW: |
231 CreateChannelIfRequired(origin_string, | 231 CreateChannelIfRequired(origin_string, |
232 NotificationChannelStatus::ENABLED); | 232 NotificationChannelStatus::ENABLED); |
233 break; | 233 break; |
234 case CONTENT_SETTING_BLOCK: | 234 case CONTENT_SETTING_BLOCK: |
235 CreateChannelIfRequired(origin_string, | 235 CreateChannelIfRequired(origin_string, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 base::Time NotificationChannelsProviderAndroid::GetWebsiteSettingLastModified( | 270 base::Time NotificationChannelsProviderAndroid::GetWebsiteSettingLastModified( |
271 const ContentSettingsPattern& primary_pattern, | 271 const ContentSettingsPattern& primary_pattern, |
272 const ContentSettingsPattern& secondary_pattern, | 272 const ContentSettingsPattern& secondary_pattern, |
273 ContentSettingsType content_type, | 273 ContentSettingsType content_type, |
274 const content_settings::ResourceIdentifier& resource_identifier) { | 274 const content_settings::ResourceIdentifier& resource_identifier) { |
275 if (content_type != CONTENT_SETTINGS_TYPE_NOTIFICATIONS || | 275 if (content_type != CONTENT_SETTINGS_TYPE_NOTIFICATIONS || |
276 !should_use_channels_) { | 276 !should_use_channels_) { |
277 return base::Time(); | 277 return base::Time(); |
278 } | 278 } |
279 url::Origin origin = url::Origin(GURL(primary_pattern.ToString())); | 279 url::Origin origin = url::Origin(GURL(primary_pattern.ToString())); |
280 if (origin.unique()) | 280 if (origin.opaque()) |
281 return base::Time(); | 281 return base::Time(); |
282 const std::string origin_string = origin.Serialize(); | 282 const std::string origin_string = origin.Serialize(); |
283 | 283 |
284 InitCachedChannels(); | 284 InitCachedChannels(); |
285 auto channel_entry = cached_channels_.find(origin_string); | 285 auto channel_entry = cached_channels_.find(origin_string); |
286 if (channel_entry == cached_channels_.end()) | 286 if (channel_entry == cached_channels_.end()) |
287 return base::Time(); | 287 return base::Time(); |
288 | 288 |
289 return channel_entry->second.timestamp; | 289 return channel_entry->second.timestamp; |
290 } | 290 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 // This method must be called prior to accessing |cached_channels_|. | 322 // This method must be called prior to accessing |cached_channels_|. |
323 void NotificationChannelsProviderAndroid::InitCachedChannels() { | 323 void NotificationChannelsProviderAndroid::InitCachedChannels() { |
324 if (initialized_cached_channels_) | 324 if (initialized_cached_channels_) |
325 return; | 325 return; |
326 DCHECK_EQ(cached_channels_.size(), 0u); | 326 DCHECK_EQ(cached_channels_.size(), 0u); |
327 std::vector<NotificationChannel> channels = bridge_->GetChannels(); | 327 std::vector<NotificationChannel> channels = bridge_->GetChannels(); |
328 for (auto channel : channels) | 328 for (auto channel : channels) |
329 cached_channels_.emplace(channel.origin, std::move(channel)); | 329 cached_channels_.emplace(channel.origin, std::move(channel)); |
330 initialized_cached_channels_ = true; | 330 initialized_cached_channels_ = true; |
331 } | 331 } |
OLD | NEW |