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_PRINTING_PRINT_PREVIEW_MESSAGE_HANDLER_H_
6#define CHROME_BROWSER_PRINTING_PRINT_PREVIEW_MESSAGE_HANDLER_H_
7#pragma once
8
9#include "content/browser/tab_contents/tab_contents_observer.h"
10
11struct PrintHostMsg_DidPreviewDocument_Params;
12
13namespace printing {
14
15// TabContents offloads print preview message handling to
16// PrintPreviewMessageHandler. This object has the same life time as the
17// TabContents that owns it.
18class PrintPreviewMessageHandler : public TabContentsObserver {
19 public:
20  explicit PrintPreviewMessageHandler(TabContents* tab_contents);
21  virtual ~PrintPreviewMessageHandler();
22
23  // TabContentsObserver implementation.
24  virtual bool OnMessageReceived(const IPC::Message& message);
25  virtual void DidStartLoading();
26
27 private:
28  // Gets the print preview tab associated with |owner_|.
29  TabContents* GetPrintPreviewTab();
30
31  void OnPagesReadyForPreview(
32      const PrintHostMsg_DidPreviewDocument_Params& params);
33  void OnPrintPreviewNodeUnderContextMenu();
34  void OnScriptInitiatedPrintPreview();
35
36  DISALLOW_COPY_AND_ASSIGN(PrintPreviewMessageHandler);
37};
38
39}  // namespace printing
40
41#endif  // CHROME_BROWSER_PRINTING_PRINT_PREVIEW_MESSAGE_HANDLER_H_
42