Cleanup: new common GetProfileSwitcherTextForItem for use on both Win and Mac
[chromium-blink-merge.git] / chrome / browser / profiles / profile_avatar_downloader.cc
blob52d467880878cc3b3789ddde53f9d5a84334a7e4
1 // Copyright 2014 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/profiles/profile_avatar_downloader.h"
7 #include "base/files/file_path.h"
8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
11 #include "chrome/browser/profiles/profile_info_cache.h"
12 #include "net/base/load_flags.h"
14 namespace {
15 const char kHighResAvatarDownloadUrlPrefix[] =
16 "http://www.gstatic.com/chrome/profile_avatars/";
19 ProfileAvatarDownloader::ProfileAvatarDownloader(
20 size_t icon_index,
21 const base::FilePath& profile_path,
22 ProfileInfoCache* cache)
23 : icon_index_(icon_index),
24 profile_path_(profile_path),
25 cache_(cache) {
26 GURL url(std::string(kHighResAvatarDownloadUrlPrefix) +
27 profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index));
28 fetcher_.reset(new chrome::BitmapFetcher(url, this));
31 ProfileAvatarDownloader::~ProfileAvatarDownloader() {
34 void ProfileAvatarDownloader::Start() {
35 // In unit tests, the browser process can return a NULL request context.
36 net::URLRequestContextGetter* request_context =
37 g_browser_process->system_request_context();
38 if (request_context)
39 fetcher_->Start(
40 request_context,
41 std::string(),
42 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
43 net::LOAD_NORMAL);
46 // BitmapFetcherDelegate overrides.
47 void ProfileAvatarDownloader::OnFetchComplete(const GURL& url,
48 const SkBitmap* bitmap) {
49 if (!bitmap || !cache_)
50 return;
52 // Decode the downloaded bitmap. Ownership of the image is taken by |cache_|.
53 gfx::Image image = gfx::Image::CreateFrom1xBitmap(*bitmap);
54 cache_->SaveAvatarImageAtPath(&image,
55 profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index_),
56 profiles::GetPathOfHighResAvatarAtIndex(icon_index_),
57 profile_path_);