| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Defines the Chrome Extensions BrowsingData API functions, which entail | 5 // Defines the Chrome Extensions BrowsingData API functions, which entail |
| 6 // clearing browsing data, and clearing the browser's cache (which, let's be | 6 // clearing browsing data, and clearing the browser's cache (which, let's be |
| 7 // honest, are the same thing), as specified in the extension API JSON. | 7 // honest, are the same thing), as specified in the extension API JSON. |
| 8 | 8 |
| 9 #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h" | 9 #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h" |
| 10 | 10 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 | 265 |
| 266 // base::Time takes a double that represents seconds since epoch. JavaScript | 266 // base::Time takes a double that represents seconds since epoch. JavaScript |
| 267 // gives developers milliseconds, so do a quick conversion before populating | 267 // gives developers milliseconds, so do a quick conversion before populating |
| 268 // the object. Also, Time::FromDoubleT converts double time 0 to empty Time | 268 // the object. Also, Time::FromDoubleT converts double time 0 to empty Time |
| 269 // object. So we need to do special handling here. | 269 // object. So we need to do special handling here. |
| 270 remove_since_ = (ms_since_epoch == 0) ? | 270 remove_since_ = (ms_since_epoch == 0) ? |
| 271 base::Time::UnixEpoch() : | 271 base::Time::UnixEpoch() : |
| 272 base::Time::FromDoubleT(ms_since_epoch / 1000.0); | 272 base::Time::FromDoubleT(ms_since_epoch / 1000.0); |
| 273 | 273 |
| 274 removal_mask_ = GetRemovalMask(); | 274 removal_mask_ = GetRemovalMask(); |
| 275 if (bad_message_) | 275 if (bad_message()) |
| 276 return false; | 276 return false; |
| 277 | 277 |
| 278 // Check for prohibited data types. | 278 // Check for prohibited data types. |
| 279 if (!IsRemovalPermitted(removal_mask_, GetProfile()->GetPrefs())) { | 279 if (!IsRemovalPermitted(removal_mask_, GetProfile()->GetPrefs())) { |
| 280 error_ = extension_browsing_data_api_constants::kDeleteProhibitedError; | 280 error_ = extension_browsing_data_api_constants::kDeleteProhibitedError; |
| 281 return false; | 281 return false; |
| 282 } | 282 } |
| 283 | 283 |
| 284 if (removal_mask_ & BrowsingDataRemover::REMOVE_PLUGIN_DATA) { | 284 if (removal_mask_ & BrowsingDataRemover::REMOVE_PLUGIN_DATA) { |
| 285 // If we're being asked to remove plugin data, check whether it's actually | 285 // If we're being asked to remove plugin data, check whether it's actually |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 return mask; | 374 return mask; |
| 375 } | 375 } |
| 376 | 376 |
| 377 // Parses the |dataToRemove| argument to generate the removal mask. Sets | 377 // Parses the |dataToRemove| argument to generate the removal mask. Sets |
| 378 // |bad_message_| (like EXTENSION_FUNCTION_VALIDATE would if this were a bool | 378 // |bad_message_| (like EXTENSION_FUNCTION_VALIDATE would if this were a bool |
| 379 // method) if 'dataToRemove' is not present or any data-type keys don't have | 379 // method) if 'dataToRemove' is not present or any data-type keys don't have |
| 380 // supported (boolean) values. | 380 // supported (boolean) values. |
| 381 int BrowsingDataRemoveFunction::GetRemovalMask() { | 381 int BrowsingDataRemoveFunction::GetRemovalMask() { |
| 382 base::DictionaryValue* data_to_remove; | 382 base::DictionaryValue* data_to_remove; |
| 383 if (!args_->GetDictionary(1, &data_to_remove)) { | 383 if (!args_->GetDictionary(1, &data_to_remove)) { |
| 384 bad_message_ = true; | 384 set_bad_message(true); |
| 385 return 0; | 385 return 0; |
| 386 } | 386 } |
| 387 | 387 |
| 388 int removal_mask = 0; | 388 int removal_mask = 0; |
| 389 | 389 |
| 390 for (base::DictionaryValue::Iterator i(*data_to_remove); | 390 for (base::DictionaryValue::Iterator i(*data_to_remove); |
| 391 !i.IsAtEnd(); | 391 !i.IsAtEnd(); |
| 392 i.Advance()) { | 392 i.Advance()) { |
| 393 bool selected = false; | 393 bool selected = false; |
| 394 if (!i.value().GetAsBoolean(&selected)) { | 394 if (!i.value().GetAsBoolean(&selected)) { |
| 395 bad_message_ = true; | 395 set_bad_message(true); |
| 396 return 0; | 396 return 0; |
| 397 } | 397 } |
| 398 if (selected) | 398 if (selected) |
| 399 removal_mask |= MaskForKey(i.key().c_str()); | 399 removal_mask |= MaskForKey(i.key().c_str()); |
| 400 } | 400 } |
| 401 | 401 |
| 402 return removal_mask; | 402 return removal_mask; |
| 403 } | 403 } |
| 404 | 404 |
| 405 int BrowsingDataRemoveAppcacheFunction::GetRemovalMask() { | 405 int BrowsingDataRemoveAppcacheFunction::GetRemovalMask() { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 return BrowsingDataRemover::REMOVE_SERVICE_WORKERS; | 451 return BrowsingDataRemover::REMOVE_SERVICE_WORKERS; |
| 452 } | 452 } |
| 453 | 453 |
| 454 int BrowsingDataRemoveCacheStorageFunction::GetRemovalMask() { | 454 int BrowsingDataRemoveCacheStorageFunction::GetRemovalMask() { |
| 455 return BrowsingDataRemover::REMOVE_CACHE_STORAGE; | 455 return BrowsingDataRemover::REMOVE_CACHE_STORAGE; |
| 456 } | 456 } |
| 457 | 457 |
| 458 int BrowsingDataRemoveWebSQLFunction::GetRemovalMask() { | 458 int BrowsingDataRemoveWebSQLFunction::GetRemovalMask() { |
| 459 return BrowsingDataRemover::REMOVE_WEBSQL; | 459 return BrowsingDataRemover::REMOVE_WEBSQL; |
| 460 } | 460 } |
| OLD | NEW |