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_BOOKMARKS_UI_H_
6#define CHROME_BROWSER_UI_WEBUI_BOOKMARKS_UI_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "content/public/browser/url_data_source.h"
12#include "content/public/browser/web_ui_controller.h"
13#include "ui/base/layout.h"
14
15namespace base {
16class RefCountedMemory;
17}
18
19// This class provides the source for chrome://bookmarks/
20class BookmarksUIHTMLSource : public content::URLDataSource {
21 public:
22  BookmarksUIHTMLSource();
23
24  // content::URLDataSource implementation.
25  virtual std::string GetSource() const OVERRIDE;
26  virtual void StartDataRequest(
27      const std::string& path,
28      int render_process_id,
29      int render_frame_id,
30      const content::URLDataSource::GotDataCallback& callback) OVERRIDE;
31  virtual std::string GetMimeType(const std::string& path) const OVERRIDE;
32
33 private:
34  virtual ~BookmarksUIHTMLSource();
35
36  DISALLOW_COPY_AND_ASSIGN(BookmarksUIHTMLSource);
37};
38
39// This class is used to hook up chrome://bookmarks/ which in turn gets
40// overridden by an extension.
41class BookmarksUI : public content::WebUIController {
42 public:
43  explicit BookmarksUI(content::WebUI* web_ui);
44
45  static base::RefCountedMemory* GetFaviconResourceBytes(
46      ui::ScaleFactor scale_factor);
47
48 private:
49  DISALLOW_COPY_AND_ASSIGN(BookmarksUI);
50};
51
52#endif  // CHROME_BROWSER_UI_WEBUI_BOOKMARKS_UI_H_
53