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