Chromium Code Reviews| 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 #include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/wm/window_cycle_controller.h" | 10 #include "ash/wm/window_cycle_controller.h" |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 419 } | 419 } |
| 420 | 420 |
| 421 WallpaperRestoreMinimizedWindowsFunction:: | 421 WallpaperRestoreMinimizedWindowsFunction:: |
| 422 ~WallpaperRestoreMinimizedWindowsFunction() { | 422 ~WallpaperRestoreMinimizedWindowsFunction() { |
| 423 } | 423 } |
| 424 | 424 |
| 425 bool WallpaperRestoreMinimizedWindowsFunction::RunImpl() { | 425 bool WallpaperRestoreMinimizedWindowsFunction::RunImpl() { |
| 426 WindowStateManager::RestoreWindows(); | 426 WindowStateManager::RestoreWindows(); |
| 427 return true; | 427 return true; |
| 428 } | 428 } |
| 429 | |
| 430 WallpaperGetThumbnailFunction::WallpaperGetThumbnailFunction() { | |
| 431 } | |
| 432 | |
| 433 WallpaperGetThumbnailFunction::~WallpaperGetThumbnailFunction() { | |
| 434 } | |
| 435 | |
| 436 bool WallpaperGetThumbnailFunction::RunImpl() { | |
| 437 std::string url; | |
| 438 if (args_ == NULL || !args_->GetString(0, &url) || url.empty()) { | |
|
miket_OOO
2012/11/28 00:17:19
You ought to be able to use EXTENSION_FUNCTION_VAL
bshe
2012/11/28 18:54:26
Done.
| |
| 439 return false; | |
| 440 } | |
| 441 std::string file_name = GURL(url).ExtractFileName(); | |
| 442 sequence_token_ = BrowserThread::GetBlockingPool()-> | |
| 443 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | |
| 444 scoped_refptr<base::SequencedTaskRunner> task_runner = | |
| 445 BrowserThread::GetBlockingPool()-> | |
| 446 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | |
| 447 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | |
| 448 | |
| 449 task_runner->PostTask(FROM_HERE, | |
| 450 base::Bind(&WallpaperGetThumbnailFunction::Get, | |
| 451 this, file_name)); | |
| 452 return true; | |
| 453 } | |
| 454 | |
| 455 void WallpaperGetThumbnailFunction::Failure() { | |
| 456 SetError("Failed to create wallpaper thumbnails directory."); | |
|
flackr
2012/11/27 22:04:36
Not localized, is this displayed to the user?
bshe
2012/11/28 18:54:26
It is not displayed to user. The js console and ch
| |
| 457 SendResponse(false); | |
| 458 } | |
| 459 | |
| 460 void WallpaperGetThumbnailFunction::FileNotLoaded() { | |
| 461 DictionaryValue* results = new DictionaryValue(); | |
| 462 results->SetBoolean("success", false); | |
| 463 SetResult(results); | |
| 464 SendResponse(true); | |
| 465 } | |
| 466 | |
| 467 void WallpaperGetThumbnailFunction::FileLoaded(const std::string& data) { | |
| 468 DictionaryValue* results = new DictionaryValue(); | |
| 469 results->SetBoolean("success", true); | |
| 470 BinaryValue* thumbnail = BinaryValue::CreateWithCopiedBuffer(data.c_str(), | |
| 471 data.size()); | |
| 472 results->Set("data", thumbnail); | |
| 473 SetResult(results); | |
| 474 SendResponse(true); | |
| 475 } | |
| 476 | |
| 477 void WallpaperGetThumbnailFunction::Get(const std::string& file_name) { | |
| 478 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | |
| 479 sequence_token_)); | |
| 480 FilePath wallpaper_thumbnails_dir; | |
| 481 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, | |
| 482 &wallpaper_thumbnails_dir)); | |
| 483 if (!file_util::DirectoryExists(wallpaper_thumbnails_dir) && | |
| 484 !file_util::CreateDirectory(wallpaper_thumbnails_dir)) { | |
| 485 BrowserThread::PostTask( | |
| 486 BrowserThread::UI, FROM_HERE, | |
| 487 base::Bind(&WallpaperGetThumbnailFunction::Failure, | |
| 488 this)); | |
|
miket_OOO
2012/11/28 00:17:19
no need to wrap (same with below)
bshe
2012/11/28 18:54:26
Done.
| |
| 489 return; | |
| 490 } | |
| 491 | |
| 492 FilePath file_path = wallpaper_thumbnails_dir.Append(file_name); | |
| 493 std::string data; | |
| 494 if (!file_util::PathExists(file_path) || | |
| 495 file_util::ReadFileToString(file_path, &data) == -1) { | |
| 496 BrowserThread::PostTask( | |
| 497 BrowserThread::UI, FROM_HERE, | |
| 498 base::Bind(&WallpaperGetThumbnailFunction::FileNotLoaded, | |
| 499 this)); | |
| 500 return; | |
| 501 } | |
| 502 BrowserThread::PostTask( | |
| 503 BrowserThread::UI, FROM_HERE, | |
| 504 base::Bind(&WallpaperGetThumbnailFunction::FileLoaded, | |
| 505 this, data)); | |
| 506 } | |
| 507 | |
| 508 WallpaperSaveThumbnailFunction::WallpaperSaveThumbnailFunction() { | |
| 509 } | |
| 510 | |
| 511 WallpaperSaveThumbnailFunction::~WallpaperSaveThumbnailFunction() { | |
| 512 } | |
| 513 | |
| 514 bool WallpaperSaveThumbnailFunction::RunImpl() { | |
| 515 BinaryValue* input = NULL; | |
| 516 if (args_ == NULL || !args_->GetBinary(0, &input)) { | |
| 517 return false; | |
| 518 } | |
| 519 std::string url; | |
| 520 if (!args_->GetString(1, &url) || url.empty()) { | |
| 521 return false; | |
| 522 } | |
| 523 std::string file_name = GURL(url).ExtractFileName(); | |
| 524 std::string data(input->GetBuffer(), input->GetSize()); | |
| 525 | |
| 526 sequence_token_ = BrowserThread::GetBlockingPool()-> | |
| 527 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | |
| 528 scoped_refptr<base::SequencedTaskRunner> task_runner = | |
| 529 BrowserThread::GetBlockingPool()-> | |
| 530 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | |
| 531 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | |
| 532 | |
| 533 task_runner->PostTask(FROM_HERE, | |
| 534 base::Bind(&WallpaperSaveThumbnailFunction::Save, | |
| 535 this, data, file_name)); | |
| 536 return true; | |
| 537 } | |
| 538 | |
| 539 void WallpaperSaveThumbnailFunction::Failure() { | |
| 540 SetError("Failed to save thumbnail"); | |
|
flackr
2012/11/27 22:04:36
ditto.
bshe
2012/11/28 18:54:26
ditto.
On 2012/11/27 22:04:36, flackr wrote:
| |
| 541 SendResponse(false); | |
| 542 } | |
| 543 | |
| 544 void WallpaperSaveThumbnailFunction::Success() { | |
| 545 SendResponse(true); | |
| 546 } | |
| 547 | |
| 548 void WallpaperSaveThumbnailFunction::Save(const std::string& data, | |
| 549 const std::string& file_name) { | |
|
flackr
2012/11/27 22:04:36
Seems like you should be able to share this saving
bshe
2012/11/28 18:54:26
Done.
| |
| 550 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | |
| 551 sequence_token_)); | |
| 552 FilePath wallpaper_thumbnails_dir; | |
| 553 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, | |
| 554 &wallpaper_thumbnails_dir)); | |
| 555 if (!file_util::DirectoryExists(wallpaper_thumbnails_dir) && | |
| 556 !file_util::CreateDirectory(wallpaper_thumbnails_dir)) { | |
| 557 BrowserThread::PostTask( | |
| 558 BrowserThread::UI, FROM_HERE, | |
| 559 base::Bind(&WallpaperSaveThumbnailFunction::Failure, | |
| 560 this)); | |
| 561 return; | |
| 562 } | |
| 563 FilePath file_path = wallpaper_thumbnails_dir.Append(file_name); | |
| 564 if (!file_util::PathExists(file_path)) { | |
| 565 size_t written_bytes = file_util::WriteFile(file_path, data.c_str(), | |
| 566 data.size()); | |
| 567 if (written_bytes != data.size()) { | |
| 568 BrowserThread::PostTask( | |
| 569 BrowserThread::UI, FROM_HERE, | |
| 570 base::Bind(&WallpaperSaveThumbnailFunction::Failure, | |
| 571 this)); | |
|
flackr
2012/11/27 22:04:36
return; ?
Won't this proceed to post a success me
miket_OOO
2012/11/28 00:17:19
Good catch.
bshe
2012/11/28 18:54:26
right. I must accidentally replaced the return wit
bshe
2012/11/28 18:54:26
Done.
| |
| 572 } | |
| 573 } | |
| 574 BrowserThread::PostTask( | |
| 575 BrowserThread::UI, FROM_HERE, | |
| 576 base::Bind(&WallpaperSaveThumbnailFunction::Success, | |
| 577 this)); | |
| 578 } | |
| OLD | NEW |