| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 DCHECK(i != windows_.end()); | 167 DCHECK(i != windows_.end()); |
| 168 windows_.erase(i); | 168 windows_.erase(i); |
| 169 } | 169 } |
| 170 | 170 |
| 171 // List of minimized windows. | 171 // List of minimized windows. |
| 172 std::vector<aura::Window*> windows_; | 172 std::vector<aura::Window*> windows_; |
| 173 }; | 173 }; |
| 174 | 174 |
| 175 } // namespace | 175 } // namespace |
| 176 | 176 |
| 177 bool WallpaperStringsFunction::RunImpl() { | 177 bool WallpaperPrivateGetStringsFunction::RunImpl() { |
| 178 DictionaryValue* dict = new DictionaryValue(); | 178 DictionaryValue* dict = new DictionaryValue(); |
| 179 SetResult(dict); | 179 SetResult(dict); |
| 180 | 180 |
| 181 #define SET_STRING(id, idr) \ | 181 #define SET_STRING(id, idr) \ |
| 182 dict->SetString(id, l10n_util::GetStringUTF16(idr)) | 182 dict->SetString(id, l10n_util::GetStringUTF16(idr)) |
| 183 SET_STRING("webFontFamily", IDS_WEB_FONT_FAMILY); | 183 SET_STRING("webFontFamily", IDS_WEB_FONT_FAMILY); |
| 184 SET_STRING("webFontSize", IDS_WEB_FONT_SIZE); | 184 SET_STRING("webFontSize", IDS_WEB_FONT_SIZE); |
| 185 SET_STRING("searchTextLabel", IDS_WALLPAPER_MANAGER_SEARCH_TEXT_LABEL); | 185 SET_STRING("searchTextLabel", IDS_WALLPAPER_MANAGER_SEARCH_TEXT_LABEL); |
| 186 SET_STRING("authorLabel", IDS_WALLPAPER_MANAGER_AUTHOR_LABEL); | 186 SET_STRING("authorLabel", IDS_WALLPAPER_MANAGER_AUTHOR_LABEL); |
| 187 SET_STRING("customCategoryLabel", | 187 SET_STRING("customCategoryLabel", |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 wallpaper_decoder_->Start(data); | 288 wallpaper_decoder_->Start(data); |
| 289 } | 289 } |
| 290 | 290 |
| 291 void WallpaperFunctionBase::OnFailureOrCancel(const std::string& error) { | 291 void WallpaperFunctionBase::OnFailureOrCancel(const std::string& error) { |
| 292 wallpaper_decoder_ = NULL; | 292 wallpaper_decoder_ = NULL; |
| 293 if (!error.empty()) | 293 if (!error.empty()) |
| 294 SetError(error); | 294 SetError(error); |
| 295 SendResponse(false); | 295 SendResponse(false); |
| 296 } | 296 } |
| 297 | 297 |
| 298 WallpaperSetWallpaperIfExistFunction::WallpaperSetWallpaperIfExistFunction() { | 298 WallpaperPrivateSetWallpaperIfExistFunction:: |
| 299 } | 299 WallpaperPrivateSetWallpaperIfExistFunction() {} |
| 300 | 300 |
| 301 WallpaperSetWallpaperIfExistFunction::~WallpaperSetWallpaperIfExistFunction() { | 301 WallpaperPrivateSetWallpaperIfExistFunction:: |
| 302 } | 302 ~WallpaperPrivateSetWallpaperIfExistFunction() {} |
| 303 | 303 |
| 304 bool WallpaperSetWallpaperIfExistFunction::RunImpl() { | 304 bool WallpaperPrivateSetWallpaperIfExistFunction::RunImpl() { |
| 305 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url_)); | 305 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url_)); |
| 306 EXTENSION_FUNCTION_VALIDATE(!url_.empty()); | 306 EXTENSION_FUNCTION_VALIDATE(!url_.empty()); |
| 307 std::string file_name = GURL(url_).ExtractFileName(); | 307 std::string file_name = GURL(url_).ExtractFileName(); |
| 308 | 308 |
| 309 std::string layout_string; | 309 std::string layout_string; |
| 310 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); | 310 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); |
| 311 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); | 311 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); |
| 312 layout_ = GetLayoutEnum(layout_string); | 312 layout_ = GetLayoutEnum(layout_string); |
| 313 | 313 |
| 314 sequence_token_ = BrowserThread::GetBlockingPool()-> | 314 sequence_token_ = BrowserThread::GetBlockingPool()-> |
| 315 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | 315 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); |
| 316 scoped_refptr<base::SequencedTaskRunner> task_runner = | 316 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 317 BrowserThread::GetBlockingPool()-> | 317 BrowserThread::GetBlockingPool()-> |
| 318 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 318 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, |
| 319 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 319 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 320 | 320 |
| 321 task_runner->PostTask(FROM_HERE, | 321 task_runner->PostTask(FROM_HERE, |
| 322 base::Bind( | 322 base::Bind( |
| 323 &WallpaperSetWallpaperIfExistFunction::ReadFileAndInitiateStartDecode, | 323 &WallpaperPrivateSetWallpaperIfExistFunction:: |
| 324 ReadFileAndInitiateStartDecode, |
| 324 this, | 325 this, |
| 325 file_name)); | 326 file_name)); |
| 326 return true; | 327 return true; |
| 327 } | 328 } |
| 328 | 329 |
| 329 void WallpaperSetWallpaperIfExistFunction::ReadFileAndInitiateStartDecode( | 330 void WallpaperPrivateSetWallpaperIfExistFunction:: |
| 330 const std::string& file_name) { | 331 ReadFileAndInitiateStartDecode(const std::string& file_name) { |
| 331 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 332 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( |
| 332 sequence_token_)); | 333 sequence_token_)); |
| 333 std::string data; | 334 std::string data; |
| 334 FilePath data_dir; | 335 FilePath data_dir; |
| 335 | 336 |
| 336 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &data_dir)); | 337 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &data_dir)); |
| 337 FilePath file_path = data_dir.Append(file_name); | 338 FilePath file_path = data_dir.Append(file_name); |
| 338 | 339 |
| 339 if (file_util::PathExists(file_path) && | 340 if (file_util::PathExists(file_path) && |
| 340 file_util::ReadFileToString(file_path, &data)) { | 341 file_util::ReadFileToString(file_path, &data)) { |
| 341 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 342 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 342 base::Bind(&WallpaperSetWallpaperIfExistFunction::StartDecode, this, | 343 base::Bind(&WallpaperPrivateSetWallpaperIfExistFunction::StartDecode, |
| 343 data)); | 344 this, data)); |
| 344 return; | 345 return; |
| 345 } | 346 } |
| 346 std::string error = base::StringPrintf( | 347 std::string error = base::StringPrintf( |
| 347 "Failed to set wallpaper %s from file system.", file_name.c_str()); | 348 "Failed to set wallpaper %s from file system.", file_name.c_str()); |
| 348 BrowserThread::PostTask( | 349 BrowserThread::PostTask( |
| 349 BrowserThread::UI, FROM_HERE, | 350 BrowserThread::UI, FROM_HERE, |
| 350 base::Bind(&WallpaperSetWallpaperIfExistFunction::OnFailureOrCancel, | 351 base::Bind(&WallpaperPrivateSetWallpaperIfExistFunction:: |
| 352 OnFailureOrCancel, |
| 351 this, error)); | 353 this, error)); |
| 352 } | 354 } |
| 353 | 355 |
| 354 void WallpaperSetWallpaperIfExistFunction::OnWallpaperDecoded( | 356 void WallpaperPrivateSetWallpaperIfExistFunction::OnWallpaperDecoded( |
| 355 const gfx::ImageSkia& wallpaper) { | 357 const gfx::ImageSkia& wallpaper) { |
| 356 // Set wallpaper_decoder_ to null since the decoding already finished. | 358 // Set wallpaper_decoder_ to null since the decoding already finished. |
| 357 wallpaper_decoder_ = NULL; | 359 wallpaper_decoder_ = NULL; |
| 358 | 360 |
| 359 chromeos::WallpaperManager* wallpaper_manager = | 361 chromeos::WallpaperManager* wallpaper_manager = |
| 360 chromeos::WallpaperManager::Get(); | 362 chromeos::WallpaperManager::Get(); |
| 361 wallpaper_manager->SetWallpaperFromImageSkia(wallpaper, layout_); | 363 wallpaper_manager->SetWallpaperFromImageSkia(wallpaper, layout_); |
| 362 bool is_persistent = | 364 bool is_persistent = |
| 363 !chromeos::UserManager::Get()->IsCurrentUserNonCryptohomeDataEphemeral(); | 365 !chromeos::UserManager::Get()->IsCurrentUserNonCryptohomeDataEphemeral(); |
| 364 chromeos::WallpaperInfo info = { | 366 chromeos::WallpaperInfo info = { |
| 365 url_, | 367 url_, |
| 366 layout_, | 368 layout_, |
| 367 chromeos::User::ONLINE, | 369 chromeos::User::ONLINE, |
| 368 base::Time::Now().LocalMidnight() | 370 base::Time::Now().LocalMidnight() |
| 369 }; | 371 }; |
| 370 std::string email = chromeos::UserManager::Get()->GetLoggedInUser()->email(); | 372 std::string email = chromeos::UserManager::Get()->GetLoggedInUser()->email(); |
| 371 wallpaper_manager->SetUserWallpaperInfo(email, info, is_persistent); | 373 wallpaper_manager->SetUserWallpaperInfo(email, info, is_persistent); |
| 372 SendResponse(true); | 374 SendResponse(true); |
| 373 } | 375 } |
| 374 | 376 |
| 375 WallpaperSetWallpaperFunction::WallpaperSetWallpaperFunction() { | 377 WallpaperPrivateSetWallpaperFunction::WallpaperPrivateSetWallpaperFunction() { |
| 376 } | 378 } |
| 377 | 379 |
| 378 WallpaperSetWallpaperFunction::~WallpaperSetWallpaperFunction() { | 380 WallpaperPrivateSetWallpaperFunction::~WallpaperPrivateSetWallpaperFunction() { |
| 379 } | 381 } |
| 380 | 382 |
| 381 bool WallpaperSetWallpaperFunction::RunImpl() { | 383 bool WallpaperPrivateSetWallpaperFunction::RunImpl() { |
| 382 BinaryValue* input = NULL; | 384 BinaryValue* input = NULL; |
| 383 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(0, &input)); | 385 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(0, &input)); |
| 384 | 386 |
| 385 std::string layout_string; | 387 std::string layout_string; |
| 386 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); | 388 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); |
| 387 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); | 389 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); |
| 388 layout_ = GetLayoutEnum(layout_string); | 390 layout_ = GetLayoutEnum(layout_string); |
| 389 | 391 |
| 390 EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &url_)); | 392 EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &url_)); |
| 391 EXTENSION_FUNCTION_VALIDATE(!url_.empty()); | 393 EXTENSION_FUNCTION_VALIDATE(!url_.empty()); |
| 392 | 394 |
| 393 // Gets email address while at UI thread. | 395 // Gets email address while at UI thread. |
| 394 email_ = chromeos::UserManager::Get()->GetLoggedInUser()->email(); | 396 email_ = chromeos::UserManager::Get()->GetLoggedInUser()->email(); |
| 395 | 397 |
| 396 image_data_.assign(input->GetBuffer(), input->GetSize()); | 398 image_data_.assign(input->GetBuffer(), input->GetSize()); |
| 397 StartDecode(image_data_); | 399 StartDecode(image_data_); |
| 398 | 400 |
| 399 return true; | 401 return true; |
| 400 } | 402 } |
| 401 | 403 |
| 402 void WallpaperSetWallpaperFunction::OnWallpaperDecoded( | 404 void WallpaperPrivateSetWallpaperFunction::OnWallpaperDecoded( |
| 403 const gfx::ImageSkia& wallpaper) { | 405 const gfx::ImageSkia& wallpaper) { |
| 404 wallpaper_ = wallpaper; | 406 wallpaper_ = wallpaper; |
| 405 // Set wallpaper_decoder_ to null since the decoding already finished. | 407 // Set wallpaper_decoder_ to null since the decoding already finished. |
| 406 wallpaper_decoder_ = NULL; | 408 wallpaper_decoder_ = NULL; |
| 407 | 409 |
| 408 sequence_token_ = BrowserThread::GetBlockingPool()-> | 410 sequence_token_ = BrowserThread::GetBlockingPool()-> |
| 409 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | 411 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); |
| 410 scoped_refptr<base::SequencedTaskRunner> task_runner = | 412 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 411 BrowserThread::GetBlockingPool()-> | 413 BrowserThread::GetBlockingPool()-> |
| 412 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 414 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, |
| 413 base::SequencedWorkerPool::BLOCK_SHUTDOWN); | 415 base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
| 414 | 416 |
| 415 task_runner->PostTask(FROM_HERE, | 417 task_runner->PostTask(FROM_HERE, |
| 416 base::Bind(&WallpaperSetWallpaperFunction::SaveToFile, this)); | 418 base::Bind(&WallpaperPrivateSetWallpaperFunction::SaveToFile, this)); |
| 417 } | 419 } |
| 418 | 420 |
| 419 void WallpaperSetWallpaperFunction::SaveToFile() { | 421 void WallpaperPrivateSetWallpaperFunction::SaveToFile() { |
| 420 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 422 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( |
| 421 sequence_token_)); | 423 sequence_token_)); |
| 422 std::string file_name = GURL(url_).ExtractFileName(); | 424 std::string file_name = GURL(url_).ExtractFileName(); |
| 423 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPERS, file_name, image_data_)) { | 425 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPERS, file_name, image_data_)) { |
| 424 wallpaper_.EnsureRepsForSupportedScaleFactors(); | 426 wallpaper_.EnsureRepsForSupportedScaleFactors(); |
| 425 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper_.DeepCopy()); | 427 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper_.DeepCopy()); |
| 426 // ImageSkia is not RefCountedThreadSafe. Use a deep copied ImageSkia if | 428 // ImageSkia is not RefCountedThreadSafe. Use a deep copied ImageSkia if |
| 427 // post to another thread. | 429 // post to another thread. |
| 428 BrowserThread::PostTask( | 430 BrowserThread::PostTask( |
| 429 BrowserThread::UI, FROM_HERE, | 431 BrowserThread::UI, FROM_HERE, |
| 430 base::Bind(&WallpaperSetWallpaperFunction::SetDecodedWallpaper, | 432 base::Bind(&WallpaperPrivateSetWallpaperFunction::SetDecodedWallpaper, |
| 431 this, base::Passed(&deep_copy))); | 433 this, base::Passed(&deep_copy))); |
| 432 chromeos::UserImage wallpaper(wallpaper_); | 434 chromeos::UserImage wallpaper(wallpaper_); |
| 433 | 435 |
| 434 FilePath wallpaper_dir; | 436 FilePath wallpaper_dir; |
| 435 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); | 437 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); |
| 436 FilePath file_path = wallpaper_dir.Append(file_name).InsertBeforeExtension( | 438 FilePath file_path = wallpaper_dir.Append(file_name).InsertBeforeExtension( |
| 437 chromeos::kSmallWallpaperSuffix); | 439 chromeos::kSmallWallpaperSuffix); |
| 438 if (file_util::PathExists(file_path)) | 440 if (file_util::PathExists(file_path)) |
| 439 return; | 441 return; |
| 440 // Generates and saves small resolution wallpaper. Uses CENTER_CROPPED to | 442 // Generates and saves small resolution wallpaper. Uses CENTER_CROPPED to |
| 441 // maintain the aspect ratio after resize. | 443 // maintain the aspect ratio after resize. |
| 442 chromeos::WallpaperManager::Get()->ResizeAndSaveWallpaper( | 444 chromeos::WallpaperManager::Get()->ResizeAndSaveWallpaper( |
| 443 wallpaper, | 445 wallpaper, |
| 444 file_path, | 446 file_path, |
| 445 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, | 447 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, |
| 446 ash::kSmallWallpaperMaxWidth, | 448 ash::kSmallWallpaperMaxWidth, |
| 447 ash::kSmallWallpaperMaxHeight); | 449 ash::kSmallWallpaperMaxHeight); |
| 448 } else { | 450 } else { |
| 449 std::string error = base::StringPrintf( | 451 std::string error = base::StringPrintf( |
| 450 "Failed to create/write wallpaper to %s.", file_name.c_str()); | 452 "Failed to create/write wallpaper to %s.", file_name.c_str()); |
| 451 BrowserThread::PostTask( | 453 BrowserThread::PostTask( |
| 452 BrowserThread::UI, FROM_HERE, | 454 BrowserThread::UI, FROM_HERE, |
| 453 base::Bind(&WallpaperSetWallpaperFunction::OnFailureOrCancel, | 455 base::Bind(&WallpaperPrivateSetWallpaperFunction::OnFailureOrCancel, |
| 454 this, error)); | 456 this, error)); |
| 455 } | 457 } |
| 456 } | 458 } |
| 457 | 459 |
| 458 void WallpaperSetWallpaperFunction::SetDecodedWallpaper( | 460 void WallpaperPrivateSetWallpaperFunction::SetDecodedWallpaper( |
| 459 scoped_ptr<gfx::ImageSkia> wallpaper) { | 461 scoped_ptr<gfx::ImageSkia> wallpaper) { |
| 460 chromeos::WallpaperManager* wallpaper_manager = | 462 chromeos::WallpaperManager* wallpaper_manager = |
| 461 chromeos::WallpaperManager::Get(); | 463 chromeos::WallpaperManager::Get(); |
| 462 wallpaper_manager->SetWallpaperFromImageSkia(*wallpaper.get(), layout_); | 464 wallpaper_manager->SetWallpaperFromImageSkia(*wallpaper.get(), layout_); |
| 463 bool is_persistent = | 465 bool is_persistent = |
| 464 !chromeos::UserManager::Get()->IsCurrentUserNonCryptohomeDataEphemeral(); | 466 !chromeos::UserManager::Get()->IsCurrentUserNonCryptohomeDataEphemeral(); |
| 465 chromeos::WallpaperInfo info = { | 467 chromeos::WallpaperInfo info = { |
| 466 url_, | 468 url_, |
| 467 layout_, | 469 layout_, |
| 468 chromeos::User::ONLINE, | 470 chromeos::User::ONLINE, |
| 469 base::Time::Now().LocalMidnight() | 471 base::Time::Now().LocalMidnight() |
| 470 }; | 472 }; |
| 471 wallpaper_manager->SetUserWallpaperInfo(email_, info, is_persistent); | 473 wallpaper_manager->SetUserWallpaperInfo(email_, info, is_persistent); |
| 472 SendResponse(true); | 474 SendResponse(true); |
| 473 } | 475 } |
| 474 | 476 |
| 475 WallpaperSetCustomWallpaperFunction::WallpaperSetCustomWallpaperFunction() { | 477 WallpaperPrivateSetCustomWallpaperFunction:: |
| 476 } | 478 WallpaperPrivateSetCustomWallpaperFunction() {} |
| 477 | 479 |
| 478 WallpaperSetCustomWallpaperFunction::~WallpaperSetCustomWallpaperFunction() { | 480 WallpaperPrivateSetCustomWallpaperFunction:: |
| 479 } | 481 ~WallpaperPrivateSetCustomWallpaperFunction() {} |
| 480 | 482 |
| 481 bool WallpaperSetCustomWallpaperFunction::RunImpl() { | 483 bool WallpaperPrivateSetCustomWallpaperFunction::RunImpl() { |
| 482 BinaryValue* input = NULL; | 484 BinaryValue* input = NULL; |
| 483 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(0, &input)); | 485 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(0, &input)); |
| 484 | 486 |
| 485 std::string layout_string; | 487 std::string layout_string; |
| 486 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); | 488 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &layout_string)); |
| 487 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); | 489 EXTENSION_FUNCTION_VALIDATE(!layout_string.empty()); |
| 488 layout_ = GetLayoutEnum(layout_string); | 490 layout_ = GetLayoutEnum(layout_string); |
| 489 | 491 |
| 490 // Gets email address while at UI thread. | 492 // Gets email address while at UI thread. |
| 491 email_ = chromeos::UserManager::Get()->GetLoggedInUser()->email(); | 493 email_ = chromeos::UserManager::Get()->GetLoggedInUser()->email(); |
| 492 | 494 |
| 493 image_data_.assign(input->GetBuffer(), input->GetSize()); | 495 image_data_.assign(input->GetBuffer(), input->GetSize()); |
| 494 StartDecode(image_data_); | 496 StartDecode(image_data_); |
| 495 | 497 |
| 496 return true; | 498 return true; |
| 497 } | 499 } |
| 498 | 500 |
| 499 void WallpaperSetCustomWallpaperFunction::OnWallpaperDecoded( | 501 void WallpaperPrivateSetCustomWallpaperFunction::OnWallpaperDecoded( |
| 500 const gfx::ImageSkia& wallpaper) { | 502 const gfx::ImageSkia& wallpaper) { |
| 501 chromeos::UserImage::RawImage raw_image(image_data_.begin(), | 503 chromeos::UserImage::RawImage raw_image(image_data_.begin(), |
| 502 image_data_.end()); | 504 image_data_.end()); |
| 503 chromeos::UserImage image(wallpaper, raw_image); | 505 chromeos::UserImage image(wallpaper, raw_image); |
| 504 // In the new wallpaper picker UI, we do not depend on WallpaperDelegate | 506 // In the new wallpaper picker UI, we do not depend on WallpaperDelegate |
| 505 // to refresh thumbnail. Uses a null delegate here. | 507 // to refresh thumbnail. Uses a null delegate here. |
| 506 chromeos::WallpaperManager::Get()->SetCustomWallpaper( | 508 chromeos::WallpaperManager::Get()->SetCustomWallpaper( |
| 507 email_, layout_, chromeos::User::CUSTOMIZED, image); | 509 email_, layout_, chromeos::User::CUSTOMIZED, image); |
| 508 wallpaper_decoder_ = NULL; | 510 wallpaper_decoder_ = NULL; |
| 509 SendResponse(true); | 511 SendResponse(true); |
| 510 } | 512 } |
| 511 | 513 |
| 512 WallpaperMinimizeInactiveWindowsFunction:: | 514 WallpaperPrivateMinimizeInactiveWindowsFunction:: |
| 513 WallpaperMinimizeInactiveWindowsFunction() { | 515 WallpaperPrivateMinimizeInactiveWindowsFunction() { |
| 514 } | 516 } |
| 515 | 517 |
| 516 WallpaperMinimizeInactiveWindowsFunction:: | 518 WallpaperPrivateMinimizeInactiveWindowsFunction:: |
| 517 ~WallpaperMinimizeInactiveWindowsFunction() { | 519 ~WallpaperPrivateMinimizeInactiveWindowsFunction() { |
| 518 } | 520 } |
| 519 | 521 |
| 520 bool WallpaperMinimizeInactiveWindowsFunction::RunImpl() { | 522 bool WallpaperPrivateMinimizeInactiveWindowsFunction::RunImpl() { |
| 521 WindowStateManager::MinimizeInactiveWindows(); | 523 WindowStateManager::MinimizeInactiveWindows(); |
| 522 return true; | 524 return true; |
| 523 } | 525 } |
| 524 | 526 |
| 525 WallpaperRestoreMinimizedWindowsFunction:: | 527 WallpaperPrivateRestoreMinimizedWindowsFunction:: |
| 526 WallpaperRestoreMinimizedWindowsFunction() { | 528 WallpaperPrivateRestoreMinimizedWindowsFunction() { |
| 527 } | 529 } |
| 528 | 530 |
| 529 WallpaperRestoreMinimizedWindowsFunction:: | 531 WallpaperPrivateRestoreMinimizedWindowsFunction:: |
| 530 ~WallpaperRestoreMinimizedWindowsFunction() { | 532 ~WallpaperPrivateRestoreMinimizedWindowsFunction() { |
| 531 } | 533 } |
| 532 | 534 |
| 533 bool WallpaperRestoreMinimizedWindowsFunction::RunImpl() { | 535 bool WallpaperPrivateRestoreMinimizedWindowsFunction::RunImpl() { |
| 534 WindowStateManager::RestoreWindows(); | 536 WindowStateManager::RestoreWindows(); |
| 535 return true; | 537 return true; |
| 536 } | 538 } |
| 537 | 539 |
| 538 WallpaperGetThumbnailFunction::WallpaperGetThumbnailFunction() { | 540 WallpaperPrivateGetThumbnailFunction::WallpaperPrivateGetThumbnailFunction() { |
| 539 } | 541 } |
| 540 | 542 |
| 541 WallpaperGetThumbnailFunction::~WallpaperGetThumbnailFunction() { | 543 WallpaperPrivateGetThumbnailFunction::~WallpaperPrivateGetThumbnailFunction() { |
| 542 } | 544 } |
| 543 | 545 |
| 544 bool WallpaperGetThumbnailFunction::RunImpl() { | 546 bool WallpaperPrivateGetThumbnailFunction::RunImpl() { |
| 545 std::string url; | 547 std::string url; |
| 546 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); | 548 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); |
| 547 EXTENSION_FUNCTION_VALIDATE(!url.empty()); | 549 EXTENSION_FUNCTION_VALIDATE(!url.empty()); |
| 548 std::string file_name = GURL(url).ExtractFileName(); | 550 std::string file_name = GURL(url).ExtractFileName(); |
| 549 sequence_token_ = BrowserThread::GetBlockingPool()-> | 551 sequence_token_ = BrowserThread::GetBlockingPool()-> |
| 550 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | 552 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); |
| 551 scoped_refptr<base::SequencedTaskRunner> task_runner = | 553 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 552 BrowserThread::GetBlockingPool()-> | 554 BrowserThread::GetBlockingPool()-> |
| 553 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 555 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, |
| 554 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 556 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 555 | 557 |
| 556 task_runner->PostTask(FROM_HERE, | 558 task_runner->PostTask(FROM_HERE, |
| 557 base::Bind(&WallpaperGetThumbnailFunction::Get, this, file_name)); | 559 base::Bind(&WallpaperPrivateGetThumbnailFunction::Get, this, file_name)); |
| 558 return true; | 560 return true; |
| 559 } | 561 } |
| 560 | 562 |
| 561 void WallpaperGetThumbnailFunction::Failure(const std::string& file_name) { | 563 void WallpaperPrivateGetThumbnailFunction::Failure( |
| 564 const std::string& file_name) { |
| 562 SetError(base::StringPrintf("Failed to access wallpaper thumbnails for %s.", | 565 SetError(base::StringPrintf("Failed to access wallpaper thumbnails for %s.", |
| 563 file_name.c_str())); | 566 file_name.c_str())); |
| 564 SendResponse(false); | 567 SendResponse(false); |
| 565 } | 568 } |
| 566 | 569 |
| 567 void WallpaperGetThumbnailFunction::FileNotLoaded() { | 570 void WallpaperPrivateGetThumbnailFunction::FileNotLoaded() { |
| 568 SendResponse(true); | 571 SendResponse(true); |
| 569 } | 572 } |
| 570 | 573 |
| 571 void WallpaperGetThumbnailFunction::FileLoaded(const std::string& data) { | 574 void WallpaperPrivateGetThumbnailFunction::FileLoaded( |
| 575 const std::string& data) { |
| 572 BinaryValue* thumbnail = BinaryValue::CreateWithCopiedBuffer(data.c_str(), | 576 BinaryValue* thumbnail = BinaryValue::CreateWithCopiedBuffer(data.c_str(), |
| 573 data.size()); | 577 data.size()); |
| 574 SetResult(thumbnail); | 578 SetResult(thumbnail); |
| 575 SendResponse(true); | 579 SendResponse(true); |
| 576 } | 580 } |
| 577 | 581 |
| 578 void WallpaperGetThumbnailFunction::Get(const std::string& file_name) { | 582 void WallpaperPrivateGetThumbnailFunction::Get(const std::string& file_name) { |
| 579 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 583 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( |
| 580 sequence_token_)); | 584 sequence_token_)); |
| 581 std::string data; | 585 std::string data; |
| 582 if (GetData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, &data)) { | 586 if (GetData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, &data)) { |
| 583 if (data.empty()) { | 587 if (data.empty()) { |
| 584 BrowserThread::PostTask( | 588 BrowserThread::PostTask( |
| 585 BrowserThread::UI, FROM_HERE, | 589 BrowserThread::UI, FROM_HERE, |
| 586 base::Bind(&WallpaperGetThumbnailFunction::FileNotLoaded, this)); | 590 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileNotLoaded, this)); |
| 587 } else { | 591 } else { |
| 588 BrowserThread::PostTask( | 592 BrowserThread::PostTask( |
| 589 BrowserThread::UI, FROM_HERE, | 593 BrowserThread::UI, FROM_HERE, |
| 590 base::Bind(&WallpaperGetThumbnailFunction::FileLoaded, this, data)); | 594 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileLoaded, this, |
| 595 data)); |
| 591 } | 596 } |
| 592 } else { | 597 } else { |
| 593 BrowserThread::PostTask( | 598 BrowserThread::PostTask( |
| 594 BrowserThread::UI, FROM_HERE, | 599 BrowserThread::UI, FROM_HERE, |
| 595 base::Bind(&WallpaperGetThumbnailFunction::Failure, this, file_name)); | 600 base::Bind(&WallpaperPrivateGetThumbnailFunction::Failure, this, |
| 601 file_name)); |
| 596 } | 602 } |
| 597 } | 603 } |
| 598 | 604 |
| 599 WallpaperSaveThumbnailFunction::WallpaperSaveThumbnailFunction() { | 605 WallpaperPrivateSaveThumbnailFunction::WallpaperPrivateSaveThumbnailFunction() { |
| 600 } | 606 } |
| 601 | 607 |
| 602 WallpaperSaveThumbnailFunction::~WallpaperSaveThumbnailFunction() { | 608 WallpaperPrivateSaveThumbnailFunction:: |
| 603 } | 609 ~WallpaperPrivateSaveThumbnailFunction() {} |
| 604 | 610 |
| 605 bool WallpaperSaveThumbnailFunction::RunImpl() { | 611 bool WallpaperPrivateSaveThumbnailFunction::RunImpl() { |
| 606 std::string url; | 612 std::string url; |
| 607 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); | 613 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); |
| 608 EXTENSION_FUNCTION_VALIDATE(!url.empty()); | 614 EXTENSION_FUNCTION_VALIDATE(!url.empty()); |
| 609 | 615 |
| 610 BinaryValue* input = NULL; | 616 BinaryValue* input = NULL; |
| 611 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(1, &input)); | 617 EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(1, &input)); |
| 612 | 618 |
| 613 std::string file_name = GURL(url).ExtractFileName(); | 619 std::string file_name = GURL(url).ExtractFileName(); |
| 614 std::string data(input->GetBuffer(), input->GetSize()); | 620 std::string data(input->GetBuffer(), input->GetSize()); |
| 615 | 621 |
| 616 sequence_token_ = BrowserThread::GetBlockingPool()-> | 622 sequence_token_ = BrowserThread::GetBlockingPool()-> |
| 617 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | 623 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); |
| 618 scoped_refptr<base::SequencedTaskRunner> task_runner = | 624 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 619 BrowserThread::GetBlockingPool()-> | 625 BrowserThread::GetBlockingPool()-> |
| 620 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 626 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, |
| 621 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 627 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 622 | 628 |
| 623 task_runner->PostTask(FROM_HERE, | 629 task_runner->PostTask(FROM_HERE, |
| 624 base::Bind(&WallpaperSaveThumbnailFunction::Save, | 630 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Save, |
| 625 this, data, file_name)); | 631 this, data, file_name)); |
| 626 return true; | 632 return true; |
| 627 } | 633 } |
| 628 | 634 |
| 629 void WallpaperSaveThumbnailFunction::Failure(const std::string& file_name) { | 635 void WallpaperPrivateSaveThumbnailFunction::Failure( |
| 636 const std::string& file_name) { |
| 630 SetError(base::StringPrintf("Failed to create/write thumbnail of %s.", | 637 SetError(base::StringPrintf("Failed to create/write thumbnail of %s.", |
| 631 file_name.c_str())); | 638 file_name.c_str())); |
| 632 SendResponse(false); | 639 SendResponse(false); |
| 633 } | 640 } |
| 634 | 641 |
| 635 void WallpaperSaveThumbnailFunction::Success() { | 642 void WallpaperPrivateSaveThumbnailFunction::Success() { |
| 636 SendResponse(true); | 643 SendResponse(true); |
| 637 } | 644 } |
| 638 | 645 |
| 639 void WallpaperSaveThumbnailFunction::Save(const std::string& data, | 646 void WallpaperPrivateSaveThumbnailFunction::Save(const std::string& data, |
| 640 const std::string& file_name) { | 647 const std::string& file_name) { |
| 641 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 648 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( |
| 642 sequence_token_)); | 649 sequence_token_)); |
| 643 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, data)) { | 650 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, data)) { |
| 644 BrowserThread::PostTask( | 651 BrowserThread::PostTask( |
| 645 BrowserThread::UI, FROM_HERE, | 652 BrowserThread::UI, FROM_HERE, |
| 646 base::Bind(&WallpaperSaveThumbnailFunction::Success, this)); | 653 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Success, this)); |
| 647 } else { | 654 } else { |
| 648 BrowserThread::PostTask( | 655 BrowserThread::PostTask( |
| 649 BrowserThread::UI, FROM_HERE, | 656 BrowserThread::UI, FROM_HERE, |
| 650 base::Bind(&WallpaperSaveThumbnailFunction::Failure, | 657 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Failure, |
| 651 this, file_name)); | 658 this, file_name)); |
| 652 } | 659 } |
| 653 } | 660 } |
| 654 | 661 |
| 655 WallpaperGetOfflineWallpaperListFunction:: | 662 WallpaperPrivateGetOfflineWallpaperListFunction:: |
| 656 WallpaperGetOfflineWallpaperListFunction() { | 663 WallpaperPrivateGetOfflineWallpaperListFunction() { |
| 657 } | 664 } |
| 658 | 665 |
| 659 WallpaperGetOfflineWallpaperListFunction:: | 666 WallpaperPrivateGetOfflineWallpaperListFunction:: |
| 660 ~WallpaperGetOfflineWallpaperListFunction() { | 667 ~WallpaperPrivateGetOfflineWallpaperListFunction() { |
| 661 } | 668 } |
| 662 | 669 |
| 663 bool WallpaperGetOfflineWallpaperListFunction::RunImpl() { | 670 bool WallpaperPrivateGetOfflineWallpaperListFunction::RunImpl() { |
| 664 sequence_token_ = BrowserThread::GetBlockingPool()-> | 671 sequence_token_ = BrowserThread::GetBlockingPool()-> |
| 665 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); | 672 GetNamedSequenceToken(chromeos::kWallpaperSequenceTokenName); |
| 666 scoped_refptr<base::SequencedTaskRunner> task_runner = | 673 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 667 BrowserThread::GetBlockingPool()-> | 674 BrowserThread::GetBlockingPool()-> |
| 668 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 675 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, |
| 669 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 676 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 670 | 677 |
| 671 task_runner->PostTask(FROM_HERE, | 678 task_runner->PostTask(FROM_HERE, |
| 672 base::Bind(&WallpaperGetOfflineWallpaperListFunction::GetList, this)); | 679 base::Bind(&WallpaperPrivateGetOfflineWallpaperListFunction::GetList, |
| 680 this)); |
| 673 return true; | 681 return true; |
| 674 } | 682 } |
| 675 | 683 |
| 676 void WallpaperGetOfflineWallpaperListFunction::GetList() { | 684 void WallpaperPrivateGetOfflineWallpaperListFunction::GetList() { |
| 677 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 685 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( |
| 678 sequence_token_)); | 686 sequence_token_)); |
| 679 FilePath wallpaper_dir; | 687 FilePath wallpaper_dir; |
| 680 std::vector<std::string> file_list; | 688 std::vector<std::string> file_list; |
| 681 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); | 689 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); |
| 682 if (file_util::DirectoryExists(wallpaper_dir)) { | 690 if (file_util::DirectoryExists(wallpaper_dir)) { |
| 683 file_util::FileEnumerator files(wallpaper_dir, false, | 691 file_util::FileEnumerator files(wallpaper_dir, false, |
| 684 file_util::FileEnumerator::FILES); | 692 file_util::FileEnumerator::FILES); |
| 685 for (FilePath current = files.Next(); !current.empty(); | 693 for (FilePath current = files.Next(); !current.empty(); |
| 686 current = files.Next()) { | 694 current = files.Next()) { |
| 687 std::string file_name = current.BaseName().RemoveExtension().value(); | 695 std::string file_name = current.BaseName().RemoveExtension().value(); |
| 688 // Do not add file name of small resolution wallpaper to the list. | 696 // Do not add file name of small resolution wallpaper to the list. |
| 689 if (!EndsWith(file_name, chromeos::kSmallWallpaperSuffix, true)) | 697 if (!EndsWith(file_name, chromeos::kSmallWallpaperSuffix, true)) |
| 690 file_list.push_back(current.BaseName().value()); | 698 file_list.push_back(current.BaseName().value()); |
| 691 } | 699 } |
| 692 } | 700 } |
| 693 BrowserThread::PostTask( | 701 BrowserThread::PostTask( |
| 694 BrowserThread::UI, FROM_HERE, | 702 BrowserThread::UI, FROM_HERE, |
| 695 base::Bind(&WallpaperGetOfflineWallpaperListFunction::OnComplete, | 703 base::Bind(&WallpaperPrivateGetOfflineWallpaperListFunction::OnComplete, |
| 696 this, file_list)); | 704 this, file_list)); |
| 697 } | 705 } |
| 698 | 706 |
| 699 void WallpaperGetOfflineWallpaperListFunction::OnComplete( | 707 void WallpaperPrivateGetOfflineWallpaperListFunction::OnComplete( |
| 700 const std::vector<std::string>& file_list) { | 708 const std::vector<std::string>& file_list) { |
| 701 ListValue* results = new ListValue(); | 709 ListValue* results = new ListValue(); |
| 702 results->AppendStrings(file_list); | 710 results->AppendStrings(file_list); |
| 703 SetResult(results); | 711 SetResult(results); |
| 704 SendResponse(true); | 712 SendResponse(true); |
| 705 } | 713 } |
| OLD | NEW |