Index: chrome/browser/tab_contents/thumbnail_generator.h |
=================================================================== |
--- chrome/browser/tab_contents/thumbnail_generator.h (revision 0) |
+++ chrome/browser/tab_contents/thumbnail_generator.h (revision 0) |
@@ -0,0 +1,75 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_TAB_CONTENTS_THUMBNAIL_GENERATOR_H_ |
+#define CHROME_BROWSER_TAB_CONTENTS_THUMBNAIL_GENERATOR_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/timer.h" |
+#include "chrome/browser/renderer_host/render_widget_host_painting_observer.h" |
+#include "chrome/common/notification_observer.h" |
+#include "chrome/common/notification_registrar.h" |
+ |
+class RenderWidgetHost; |
+class SkBitmap; |
+ |
+// This class MUST be destroyed after the RenderWidgetHosts, since it installs |
+// a painting observer that is not removed. |
+class ThumbnailGenerator : public RenderWidgetHostPaintingObserver, |
+ public NotificationObserver { |
+ public: |
+ ThumbnailGenerator(); |
+ ~ThumbnailGenerator(); |
+ |
+ SkBitmap GetThumbnailForRenderer(RenderWidgetHost* renderer) const; |
+ |
+#ifdef UNIT_TEST |
+ // When true, the class will not use a timeout to do the expiration. This |
+ // will cause expiration to happen on the next run of the message loop. |
+ // Unit tests case use this to test expiration by choosing when the message |
+ // loop runs. |
+ void set_no_timeout(bool no_timeout) { no_timeout_ = no_timeout; } |
+#endif |
+ |
+ private: |
+ // RenderWidgetHostPaintingObserver implementation. |
+ virtual void WidgetWillDestroyBackingStore(RenderWidgetHost* widget, |
+ BackingStore* backing_store); |
+ virtual void WidgetDidUpdateBackingStore(RenderWidgetHost* widget); |
+ |
+ // NotificationObserver interface. |
+ virtual void Observe(NotificationType type, |
+ const NotificationSource& source, |
+ const NotificationDetails& details); |
+ |
+ // Indicates that the given widget has changed is visibility. |
+ void WidgetShown(RenderWidgetHost* widget); |
+ void WidgetHidden(RenderWidgetHost* widget); |
+ |
+ // Called when the given widget is destroyed. |
+ void WidgetDestroyed(RenderWidgetHost* widget); |
+ |
+ // Timer function called on a delay after a tab has been shown. It will |
+ // invalidate the thumbnail for hosts with expired thumbnails in shown_hosts_. |
+ void ShownDelayHandler(); |
+ |
+ // Removes the given host from the shown_hosts_ list, if it is there. |
+ void EraseHostFromShownList(RenderWidgetHost* host); |
+ |
+ NotificationRegistrar registrar_; |
+ |
+ base::OneShotTimer<ThumbnailGenerator> timer_; |
+ |
+ // A list of all RWHs that have been shown and need to have their thumbnail |
+ // expired at some time in the future with the "slop" time has elapsed. This |
+ // list will normally have 0 or 1 items in it. |
+ std::vector<RenderWidgetHost*> shown_hosts_; |
+ |
+ // See the setter above. |
+ bool no_timeout_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ThumbnailGenerator); |
+}; |
+ |
+#endif // CHROME_BROWSER_TAB_CONTENTS_THUMBNAIL_GENERATOR_H_ |
Property changes on: chrome\browser\tab_contents\thumbnail_generator.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |