1 // Copyright 2013 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.
5 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_WALLPAPER_API_H_
6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_WALLPAPER_API_H_
8 #include "base/threading/sequenced_worker_pool.h"
9 #include "chrome/browser/chromeos/extensions/wallpaper_function_base.h"
10 #include "chrome/common/extensions/api/wallpaper.h"
11 #include "net/url_request/url_request_status.h"
13 // Implementation of chrome.wallpaper.setWallpaper API.
14 // After this API being called, a jpeg encoded wallpaper will be saved to
15 // /home/chronos/custom_wallpaper/{resolution}/{user_id_hash}/file_name. The
16 // wallpaper can then persistent after Chrome restart. New call to this API
17 // will replace the previous saved wallpaper with new one.
18 // Note: For security reason, the original encoded wallpaper image is not saved
19 // directly. It is decoded and re-encoded to jpeg format before saved to file
21 class WallpaperSetWallpaperFunction
: public WallpaperFunctionBase
{
23 DECLARE_EXTENSION_FUNCTION("wallpaper.setWallpaper",
24 WALLPAPER_SETWALLPAPER
)
26 WallpaperSetWallpaperFunction();
29 ~WallpaperSetWallpaperFunction() override
;
31 // AsyncExtensionFunction overrides.
32 bool RunAsync() override
;
35 void OnWallpaperDecoded(const gfx::ImageSkia
& image
) override
;
37 // Generates thumbnail of custom wallpaper. A simple STRETCH is used for
38 // generating thumbnail.
39 void GenerateThumbnail(const base::FilePath
& thumbnail_path
,
40 scoped_ptr
<gfx::ImageSkia
> image
);
42 // Thumbnail is ready. Calls api function javascript callback.
43 void ThumbnailGenerated(base::RefCountedBytes
* data
);
45 // Called by OnURLFetchComplete().
46 void OnWallpaperFetched(bool success
, const std::string
& response
);
48 scoped_ptr
<extensions::api::wallpaper::SetWallpaper::Params
> params_
;
50 // Unique file name of the custom wallpaper.
51 std::string file_name_
;
53 // User id of the user who initiate this API call.
56 // User id hash of the logged in user.
57 std::string user_id_hash_
;
59 // Sequence token associated with wallpaper operations. Shared with
61 base::SequencedWorkerPool::SequenceToken sequence_token_
;
64 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_WALLPAPER_API_H_