OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/notifications/notifications_prefs_cache.h" |
| 6 |
| 7 #include "base/string_util.h" |
| 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/chrome_thread.h" |
| 10 #include "chrome/common/pref_service.h" |
| 11 #include "webkit/api/public/WebNotificationPresenter.h" |
| 12 |
| 13 NotificationsPrefsCache::NotificationsPrefsCache( |
| 14 ListValue* allowed, ListValue* denied) { |
| 15 ListValue::const_iterator i; |
| 16 std::wstring origin; |
| 17 if (allowed) { |
| 18 for (i = allowed->begin(); i != allowed->end(); ++i) { |
| 19 (*i)->GetAsString(&origin); |
| 20 allowed_origins_.insert(GURL(WideToUTF8(origin))); |
| 21 } |
| 22 } |
| 23 if (denied) { |
| 24 for (i = denied->begin(); i != denied->end(); ++i) { |
| 25 (*i)->GetAsString(&origin); |
| 26 denied_origins_.insert(GURL(WideToUTF8(origin))); |
| 27 } |
| 28 } |
| 29 } |
| 30 |
| 31 void NotificationsPrefsCache::CacheAllowedOrigin( |
| 32 const GURL& origin) { |
| 33 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
| 34 std::set<GURL>::iterator iter; |
| 35 allowed_origins_.insert(origin); |
| 36 if ((iter = denied_origins_.find(origin)) != denied_origins_.end()) |
| 37 denied_origins_.erase(iter); |
| 38 } |
| 39 |
| 40 void NotificationsPrefsCache::CacheDeniedOrigin( |
| 41 const GURL& origin) { |
| 42 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
| 43 std::set<GURL>::iterator iter; |
| 44 denied_origins_.insert(origin); |
| 45 if ((iter = allowed_origins_.find(origin)) != allowed_origins_.end()) |
| 46 allowed_origins_.erase(iter); |
| 47 } |
| 48 |
| 49 int NotificationsPrefsCache::HasPermission(const GURL& origin) { |
| 50 if (IsOriginAllowed(origin)) |
| 51 return WebKit::WebNotificationPresenter::PermissionAllowed; |
| 52 if (IsOriginDenied(origin)) |
| 53 return WebKit::WebNotificationPresenter::PermissionDenied; |
| 54 return WebKit::WebNotificationPresenter::PermissionNotAllowed; |
| 55 } |
| 56 |
| 57 bool NotificationsPrefsCache::IsOriginAllowed( |
| 58 const GURL& origin) { |
| 59 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
| 60 return (allowed_origins_.find(origin) != allowed_origins_.end()); |
| 61 } |
| 62 |
| 63 bool NotificationsPrefsCache::IsOriginDenied( |
| 64 const GURL& origin) { |
| 65 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
| 66 return (denied_origins_.find(origin) != denied_origins_.end()); |
| 67 } |
OLD | NEW |