Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / theme_source.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_UI_WEBUI_THEME_SOURCE_H_
6 #define CHROME_BROWSER_UI_WEBUI_THEME_SOURCE_H_
7
8 #include <string>
9
10 #include "base/compiler_specific.h"
11 #include "base/memory/ref_counted.h"
12 #include "content/public/browser/url_data_source.h"
13
14 class Profile;
15
16 namespace base {
17 class RefCountedMemory;
18 }
19
20 class ThemeSource : public content::URLDataSource {
21  public:
22   explicit ThemeSource(Profile* profile);
23   ~ThemeSource() override;
24
25   // content::URLDataSource implementation.
26   std::string GetSource() const override;
27   void StartDataRequest(
28       const std::string& path,
29       int render_process_id,
30       int render_frame_id,
31       const content::URLDataSource::GotDataCallback& callback) override;
32   std::string GetMimeType(const std::string& path) const override;
33   base::MessageLoop* MessageLoopForRequestPath(
34       const std::string& path) const override;
35   bool ShouldReplaceExistingSource() const override;
36   bool ShouldServiceRequest(const net::URLRequest* request) const override;
37
38  private:
39   // Fetch and send the theme bitmap.
40   void SendThemeBitmap(const content::URLDataSource::GotDataCallback& callback,
41                        int resource_id,
42                        float scale_factor);
43
44   // The original profile (never an OTR profile).
45   Profile* profile_;
46
47   // We grab the CSS early so we don't have to go back to the UI thread later.
48   scoped_refptr<base::RefCountedMemory> css_bytes_;
49
50   DISALLOW_COPY_AND_ASSIGN(ThemeSource);
51 };
52
53 #endif  // CHROME_BROWSER_UI_WEBUI_THEME_SOURCE_H_