| 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 |