1// Copyright (c) 2011 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_NTP_RESOURCE_CACHE_H_
6#define CHROME_BROWSER_UI_WEBUI_NTP_RESOURCE_CACHE_H_
7#pragma once
8
9#include "base/basictypes.h"
10#include "base/memory/ref_counted.h"
11#include "chrome/browser/prefs/pref_change_registrar.h"
12#include "content/common/notification_observer.h"
13#include "content/common/notification_registrar.h"
14
15class Profile;
16class RefCountedBytes;
17
18// This class keeps a cache of NTP resources (HTML and CSS) so we don't have to
19// regenerate them all the time.
20class NTPResourceCache : public NotificationObserver {
21 public:
22  explicit NTPResourceCache(Profile* profile);
23  virtual ~NTPResourceCache();
24
25  RefCountedBytes* GetNewTabHTML(bool is_incognito);
26  RefCountedBytes* GetNewTabCSS(bool is_incognito);
27
28  // NotificationObserver interface.
29  virtual void Observe(NotificationType type,
30                       const NotificationSource& source,
31                       const NotificationDetails& details);
32
33 private:
34  Profile* profile_;
35
36  void CreateNewTabIncognitoHTML();
37  scoped_refptr<RefCountedBytes> new_tab_incognito_html_;
38  void CreateNewTabHTML();
39  scoped_refptr<RefCountedBytes> new_tab_html_;
40
41  void CreateNewTabIncognitoCSS();
42  scoped_refptr<RefCountedBytes> new_tab_incognito_css_;
43  void CreateNewTabCSS();
44  scoped_refptr<RefCountedBytes> new_tab_css_;
45
46  NotificationRegistrar registrar_;
47  PrefChangeRegistrar pref_change_registrar_;
48
49  DISALLOW_COPY_AND_ASSIGN(NTPResourceCache);
50};
51
52#endif  // CHROME_BROWSER_UI_WEBUI_NTP_RESOURCE_CACHE_H_
53