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 #include "chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h"
7 #include "chrome/browser/chromeos/login/lock/screen_locker.h"
8 #include "chrome/browser/ui/webui/chromeos/login/screenlock_icon_provider.h"
9 #include "chrome/common/url_constants.h"
10 #include "net/base/escape.h"
14 gfx::Image
GetDefaultIcon() {
22 ////////////////////////////////////////////////////////////////////////////////
23 // ScreenlockIconSource
25 ScreenlockIconSource::ScreenlockIconSource(
26 base::WeakPtr
<ScreenlockIconProvider
> icon_provider
)
27 : icon_provider_(icon_provider
) {
30 ScreenlockIconSource::~ScreenlockIconSource() {}
32 std::string
ScreenlockIconSource::GetSource() const {
33 return std::string(chrome::kChromeUIScreenlockIconHost
);
36 void ScreenlockIconSource::StartDataRequest(
37 const std::string
& path
,
38 int render_process_id
,
40 const content::URLDataSource::GotDataCallback
& callback
) {
41 if (!icon_provider_
) {
42 callback
.Run(GetDefaultIcon().As1xPNGBytes().get());
46 GURL
url(chrome::kChromeUIScreenlockIconURL
+ path
);
47 std::string username
= net::UnescapeURLComponent(
49 net::UnescapeRule::URL_SPECIAL_CHARS
| net::UnescapeRule::SPACES
);
51 gfx::Image image
= icon_provider_
->GetIcon(username
);
52 if (image
.IsEmpty()) {
53 callback
.Run(GetDefaultIcon().As1xPNGBytes().get());
57 callback
.Run(image
.As1xPNGBytes().get());
60 std::string
ScreenlockIconSource::GetMimeType(const std::string
&) const {
65 std::string
ScreenlockIconSource::GetIconURLForUser(
66 const std::string
& username
) {
67 return std::string(chrome::kChromeUIScreenlockIconURL
) +
68 net::EscapePath(username
);
71 } // namespace chromeos