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.
5 #ifndef CHROME_BROWSER_THUMBNAILS_THUMBNAIL_TAB_HELPER_H_
6 #define CHROME_BROWSER_THUMBNAILS_THUMBNAIL_TAB_HELPER_H_
8 #include "base/basictypes.h"
9 #include "chrome/browser/thumbnails/thumbnailing_context.h"
10 #include "content/public/browser/notification_observer.h"
11 #include "content/public/browser/notification_registrar.h"
12 #include "content/public/browser/readback_types.h"
13 #include "content/public/browser/web_contents_observer.h"
14 #include "content/public/browser/web_contents_user_data.h"
18 class RenderWidgetHost
;
21 class ThumbnailTabHelper
22 : public content::NotificationObserver
,
23 public content::WebContentsObserver
,
24 public content::WebContentsUserData
<ThumbnailTabHelper
> {
26 ~ThumbnailTabHelper() override
;
28 // Enables or disables the function of taking thumbnails.
29 // A disabled ThumbnailTabHelper generates no thumbnails although it still
30 // continues to receive the notifications from the web contents.
31 void set_enabled(bool enabled
) { enabled_
= enabled
; }
34 explicit ThumbnailTabHelper(content::WebContents
* contents
);
35 friend class content::WebContentsUserData
<ThumbnailTabHelper
>;
37 // content::NotificationObserver overrides.
38 void Observe(int type
,
39 const content::NotificationSource
& source
,
40 const content::NotificationDetails
& details
) override
;
42 // content::WebContentsObserver overrides.
43 void RenderViewDeleted(content::RenderViewHost
* render_view_host
) override
;
44 void DidStartLoading() override
;
45 void NavigationStopped() override
;
47 // Update the thumbnail of the given tab contents if necessary.
48 void UpdateThumbnailIfNecessary(content::WebContents
* web_contents
);
50 // Called when a render view host was created for a WebContents.
51 void RenderViewHostCreated(content::RenderViewHost
* renderer
);
53 // Indicates that the given widget has changed is visibility.
54 void WidgetHidden(content::RenderWidgetHost
* widget
);
58 content::NotificationRegistrar registrar_
;
60 bool load_interrupted_
;
62 DISALLOW_COPY_AND_ASSIGN(ThumbnailTabHelper
);
65 #endif // CHROME_BROWSER_THUMBNAILS_THUMBNAIL_TAB_HELPER_H_