Home | History | Annotate | Download | only in webui
      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_PRINT_PREVIEW_UI_HTML_SOURCE_H_
      6 #define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_UI_HTML_SOURCE_H_
      7 #pragma once
      8 
      9 #include <string>
     10 #include <utility>
     11 
     12 #include "chrome/browser/ui/webui/chrome_url_data_manager.h"
     13 
     14 namespace base {
     15 class SharedMemory;
     16 }
     17 
     18 class PrintPreviewUIHTMLSource : public ChromeURLDataManager::DataSource {
     19  public:
     20   // A SharedMemory that contains the data for print preview,
     21   // and the size of the print preview data in bytes.
     22   typedef std::pair<base::SharedMemory*, uint32> PrintPreviewData;
     23 
     24   PrintPreviewUIHTMLSource();
     25   virtual ~PrintPreviewUIHTMLSource();
     26 
     27   // Gets the print preview |data|. The data is valid as long as the
     28   // PrintPreviewHandler is valid and SetPrintPreviewData() does not get called.
     29   void GetPrintPreviewData(PrintPreviewData* data);
     30 
     31   // Sets the print preview |data|. PrintPreviewHandler owns the data and is
     32   // responsible for freeing it when either:
     33   // a) there is new data.
     34   // b) when PrintPreviewHandler is destroyed.
     35   void SetPrintPreviewData(const PrintPreviewData& data);
     36 
     37   // ChromeURLDataManager::DataSource implementation.
     38   virtual void StartDataRequest(const std::string& path,
     39                                 bool is_incognito,
     40                                 int request_id);
     41   virtual std::string GetMimeType(const std::string&) const;
     42 
     43  private:
     44   // Current print preview data, the contents of which are owned by
     45   // PrintPreviewHandler.
     46   PrintPreviewData data_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(PrintPreviewUIHTMLSource);
     49 };
     50 
     51 #endif  // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_UI_HTML_SOURCE_H_
     52