OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 // Implementation of the geolocation content settings map. Styled on | 5 // Implementation of the geolocation content settings map. Styled on |
6 // HostContentSettingsMap however unlike that class, this one does not hold | 6 // HostContentSettingsMap however unlike that class, this one does not hold |
7 // an additional in-memory copy of the settings as it does not need to support | 7 // an additional in-memory copy of the settings as it does not need to support |
8 // thread safe synchronous access to the settings; all geolocation permissions | 8 // thread safe synchronous access to the settings; all geolocation permissions |
9 // are read and written in the UI thread. (If in future this is no longer the | 9 // are read and written in the UI thread. (If in future this is no longer the |
10 // case, refer to http://codereview.chromium.org/1525018 for a previous version | 10 // case, refer to http://codereview.chromium.org/1525018 for a previous version |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 GURL requesting_origin(requesting_url.GetOrigin()); | 60 GURL requesting_origin(requesting_url.GetOrigin()); |
61 GURL embedding_origin(embedding_url.GetOrigin()); | 61 GURL embedding_origin(embedding_url.GetOrigin()); |
62 DCHECK(requesting_origin.is_valid() && embedding_origin.is_valid()); | 62 DCHECK(requesting_origin.is_valid() && embedding_origin.is_valid()); |
63 | 63 |
64 const DictionaryValue* all_settings_dictionary = | 64 const DictionaryValue* all_settings_dictionary = |
65 profile_->GetPrefs()->GetDictionary(prefs::kGeolocationContentSettings); | 65 profile_->GetPrefs()->GetDictionary(prefs::kGeolocationContentSettings); |
66 // Careful: The returned value could be NULL if the pref has never been set. | 66 // Careful: The returned value could be NULL if the pref has never been set. |
67 if (all_settings_dictionary != NULL) { | 67 if (all_settings_dictionary != NULL) { |
68 DictionaryValue* requesting_origin_settings; | 68 DictionaryValue* requesting_origin_settings; |
69 if (all_settings_dictionary->GetDictionaryWithoutPathExpansion( | 69 if (all_settings_dictionary->GetDictionaryWithoutPathExpansion( |
70 UTF8ToWide(requesting_origin.spec()), &requesting_origin_settings)) { | 70 requesting_origin.spec(), &requesting_origin_settings)) { |
71 int setting; | 71 int setting; |
72 if (requesting_origin_settings->GetIntegerWithoutPathExpansion( | 72 if (requesting_origin_settings->GetIntegerWithoutPathExpansion( |
73 UTF8ToWide(embedding_origin.spec()), &setting)) | 73 UTF8ToWide(embedding_origin.spec()), &setting)) |
74 return IntToContentSetting(setting); | 74 return IntToContentSetting(setting); |
75 // Check for any-embedder setting | 75 // Check for any-embedder setting |
76 if (requesting_origin != embedding_origin && | 76 if (requesting_origin != embedding_origin && |
77 requesting_origin_settings->GetIntegerWithoutPathExpansion( | 77 requesting_origin_settings->GetIntegerWithoutPathExpansion( |
78 L"", &setting)) | 78 "", &setting)) |
79 return IntToContentSetting(setting); | 79 return IntToContentSetting(setting); |
80 } | 80 } |
81 } | 81 } |
82 return GetDefaultContentSetting(); | 82 return GetDefaultContentSetting(); |
83 } | 83 } |
84 | 84 |
85 GeolocationContentSettingsMap::AllOriginsSettings | 85 GeolocationContentSettingsMap::AllOriginsSettings |
86 GeolocationContentSettingsMap::GetAllOriginsSettings() const { | 86 GeolocationContentSettingsMap::GetAllOriginsSettings() const { |
87 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); | 87 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
88 AllOriginsSettings content_settings; | 88 AllOriginsSettings content_settings; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 bool found = dictionary->GetIntegerWithoutPathExpansion(target, &setting); | 180 bool found = dictionary->GetIntegerWithoutPathExpansion(target, &setting); |
181 DCHECK(found); | 181 DCHECK(found); |
182 GURL target_url(target); | 182 GURL target_url(target); |
183 // An empty URL has a special meaning (wildcard), so only accept invalid | 183 // An empty URL has a special meaning (wildcard), so only accept invalid |
184 // URLs if the original version was empty (avoids treating corrupted prefs | 184 // URLs if the original version was empty (avoids treating corrupted prefs |
185 // as the wildcard entry; see http://crbug.com/39685) | 185 // as the wildcard entry; see http://crbug.com/39685) |
186 if (target_url.is_valid() || target.empty()) | 186 if (target_url.is_valid() || target.empty()) |
187 (*one_origin_settings)[target_url] = IntToContentSetting(setting); | 187 (*one_origin_settings)[target_url] = IntToContentSetting(setting); |
188 } | 188 } |
189 } | 189 } |
OLD | NEW |