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