Chromium Code Reviews| Index: chrome/renderer/print_web_view_helper.h |
| =================================================================== |
| --- chrome/renderer/print_web_view_helper.h (revision 92494) |
| +++ chrome/renderer/print_web_view_helper.h (working copy) |
| @@ -6,6 +6,8 @@ |
| #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ |
| #pragma once |
| +#include <vector> |
| + |
| #include "base/memory/scoped_ptr.h" |
| #include "base/shared_memory.h" |
| #include "base/time.h" |
| @@ -108,9 +110,24 @@ |
| // Initiate print preview. |
| void OnInitiatePrintPreview(); |
| - // Generate a print preview using |settings|. |
| + // Start the process of generating a print preview using |settings|. |
| void OnPrintPreview(const base::DictionaryValue& settings); |
| + // Initialize the print preview document. |
|
kmadhusu
2011/07/15 01:22:46
nit: Please add blank line after lines 114, 119, 1
Lei Zhang
2011/07/15 01:48:02
This is a very subtle way of showing OnPrintPrevie
|
| + bool CreatePreviewDocument(); |
| + // Continue generating the print preview. |
| + void OnContinuePreview(); |
| + // Renders a print preview page. |
|
kmadhusu
2011/07/15 01:22:46
Document |page_number|.
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + void RenderPreviewPage(int page_number); |
| + // Finalize the print preview document. |
| + bool FinalizePreviewDocument(); |
| + |
| + // Cancel the preview to put it into the 'DONE' state. |
|
kmadhusu
2011/07/15 01:22:46
Define "it".
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + void OnCancelPreview(); |
| + |
| + // Abort the preview to put it into the 'UNINITIALIZED' state. |
|
kmadhusu
2011/07/15 01:22:46
Define "it".
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + void OnAbortPreview(); |
| + |
| // Print / preview the node under the context menu. |
| void OnPrintNodeUnderContextMenu(); |
| @@ -124,14 +141,12 @@ |
| void Print(WebKit::WebFrame* frame, WebKit::WebNode* node); |
| - void PrintPreview(WebKit::WebFrame* frame, |
| - WebKit::WebNode* node, |
| - const base::DictionaryValue& settings); |
| - |
| enum PrintingResult { |
| OK, |
| FAIL_PRINT, |
| FAIL_PREVIEW, |
| + CANCEL_PREVIEW, |
| + ABORT_PREVIEW, |
| }; |
| // Notification when printing is done - signal tear-down/free resources. |
| @@ -187,16 +202,6 @@ |
| // Render the frame for printing. |
| bool RenderPagesForPrint(WebKit::WebFrame* frame, WebKit::WebNode* node); |
| - // Render the frame for preview. |
| - bool RenderPagesForPreview(WebKit::WebFrame* frame, WebKit::WebNode* node); |
| - |
| - // Renders all the pages listed in |params| for preview. |
| - // On success, Send PrintHostMsg_PagesReadyForPreview message with a |
| - // valid metafile data handle. |
| - bool CreatePreviewDocument(const PrintMsg_PrintPages_Params& params, |
| - WebKit::WebFrame* frame, |
| - WebKit::WebNode* node); |
| - |
| // Platform specific helper function for rendering page(s) to |metafile|. |
| #if defined(OS_WIN) |
| void RenderPage(const PrintMsg_Print_Params& params, float* scale_factor, |
| @@ -208,11 +213,8 @@ |
| WebKit::WebFrame* frame, printing::Metafile* metafile); |
| #elif defined(OS_POSIX) |
| bool RenderPages(const PrintMsg_PrintPages_Params& params, |
| - WebKit::WebFrame* frame, |
| - WebKit::WebNode* node, |
| - int* page_count, |
| - printing::Metafile* metafile, |
| - bool is_preview); |
| + WebKit::WebFrame* frame, WebKit::WebNode* node, |
| + int* page_count, printing::Metafile* metafile); |
| #endif // defined(OS_WIN) |
| // Helper methods ----------------------------------------------------------- |
| @@ -233,21 +235,14 @@ |
| double* margin_bottom_in_points, |
| double* margin_left_in_points); |
| - bool IsModifiable(WebKit::WebFrame* frame, WebKit::WebNode* node); |
| - |
| void UpdatePrintableSizeInPrintParameters(WebKit::WebFrame* frame, |
| WebKit::WebNode* node, |
| PrintMsg_Print_Params* params); |
| bool GetPrintFrame(WebKit::WebFrame** frame); |
| - // This reports the current time - |start_time| as the time to render |
| - // a page and returns the current time. |
| - base::TimeTicks ReportPreviewPageRenderTime(base::TimeTicks start_time); |
| - void ReportTotalPreviewGenerationTime(int selected_pages_length, |
| - int total_pages, |
| - base::TimeDelta render_time, |
| - base::TimeDelta total_time); |
| + // This reports the current time - |start_time| as the time to render a page. |
| + void ReportPreviewPageRenderTime(base::TimeTicks start_time); |
| // Script Initiated Printing ------------------------------------------------ |
| @@ -267,20 +262,12 @@ |
| void RequestPrintPreview(); |
| - // Called every time print preview renders a page. Notify the browser of the |
| - // event and check if print preview should be cancelled. Returns false if |
| - // print preview has been cancelled. |page_number| is 0-based, or negative to |
| - // indicate its a cancel check only. |
| - bool PreviewPageRendered(int page_number); |
| + // Notify the browser a print preview page has been rendered. |
| + // |page_number| is 0-based. |
| + void PreviewPageRendered(int page_number); |
| WebKit::WebView* print_web_view_; |
| - // The frame to print for script initiated print preview. |
| - WebKit::WebFrame* script_initiated_preview_frame_; |
| - |
| - // The node under the context menu to print preview. |
| - scoped_ptr<WebKit::WebNode> context_menu_preview_node_; |
| - |
| scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_; |
| bool is_preview_; |
| @@ -292,9 +279,92 @@ |
| // the failure came from the browser in the first place. |
| bool notify_browser_of_print_failure_; |
| - int preview_page_count_; |
| scoped_ptr<PrintMsg_PrintPages_Params> old_print_pages_params_; |
| + class PrintPreviewContext { |
|
kmadhusu
2011/07/15 01:22:46
Document this class.
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + public: |
| + PrintPreviewContext(); |
|
kmadhusu
2011/07/15 01:22:46
destructor??
Lei Zhang
2011/07/15 01:48:02
Got nothing to destroy.
|
| + |
| + // Initializes the print preview context. Need to be called to set |
| + // the |web_frame| / |web_node| to generate the print preview for. |
| + void InitWithFrame(WebKit::WebFrame* web_frame); |
| + void InitWithNode(const WebKit::WebNode& web_node); |
| + |
| + // Does bookkeeping at the beginning of print preview. |
| + void OnPrintPreview(); |
| + |
| + // Create the print preview document. |
| + bool CreatePreviewDocument(const PrintMsg_Print_Params& params, |
| + const std::vector<int>& pages); |
|
kmadhusu
2011/07/15 01:22:46
document |pages|.
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + |
| + // Called after a page gets rendered. |page_time| is how long the |
| + // rendering took. |
| + void RenderedPreviewPage(const base::TimeDelta& page_time); |
| + |
| + // Finalizes the print preview document. |
| + void FinalizePreviewDocument(); |
| + |
| + // Cleanup after print preview finishes. |
| + void Finished(); |
| + |
| + // Abort the print preview. |
| + void Abort(); |
| + |
| + // Cancel the print preview. |
| + void Cancel(); |
| + |
| + // Helper functions |
| + bool GetNextPage(int* page_number); |
|
kmadhusu
2011/07/15 01:22:46
How about GetNextPageNumber? Rather than returning
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + bool IsInitialized() const; |
| + bool IsBusy() const; |
| + bool IsModifiable() const; |
| + |
| + // Getters |
| + WebKit::WebFrame* frame() const; |
| + WebKit::WebNode* node() const; |
| + int page_count() const; |
| + printing::Metafile* metafile() const; |
| + const PrintMsg_Print_Params& print_params() const; |
| + const gfx::Size& GetPrintCanvasSize() const; |
| + |
| + private: |
| + enum State { |
| + UNINITIALIZED, // Not ready to print. |
| + INITIALIZED, // Ready to print. |
| + PRINTING, // Printing. |
|
kmadhusu
2011/07/15 01:22:46
Since we are not actually printing, can you change
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + DONE // Finished printing. |
| + }; |
| + |
| + void Reset(); |
|
kmadhusu
2011/07/15 01:22:46
Document the purpose of this function.
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + |
| + // Specifies what to print. |
|
kmadhusu
2011/07/15 01:22:46
In PrintPreviewContext class:
s/print/print previe
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + WebKit::WebFrame* frame_; |
| + scoped_ptr<WebKit::WebNode> node_; |
| + |
| + scoped_ptr<PrepareFrameAndViewForPrint> prep_frame_view_; |
| + scoped_ptr<printing::Metafile> metafile_; |
| + scoped_ptr<PrintMsg_Print_Params> print_params_; |
| + |
| + // Total page count in the renderer. |
| + int page_count_; |
|
kmadhusu
2011/07/15 01:22:46
To make it clear:
page_count_ => total_page_count_
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + |
| + // Number of pages to print. |
| + int actual_page_count_; |
| + |
| + // The current page to print. |
| + int current_page_; |
|
kmadhusu
2011/07/15 01:22:46
current_page => current_page_number ?
Lei Zhang
2011/07/15 01:48:02
Done.
|
| + |
| + // Array to keep track of which pages have been printed. |
| + std::vector<bool> rendered_pages_; |
| + |
| + base::TimeDelta document_render_time_; |
| + base::TimeTicks begin_time_; |
| + |
| + State state_; |
| + }; |
| + |
| + PrintPreviewContext print_preview_context_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper); |
| }; |