| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ | 5 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ |
| 6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ | 6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <utility> | |
| 10 #include <vector> | 9 #include <vector> |
| 11 | 10 |
| 12 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/shared_memory.h" | 12 #include "base/shared_memory.h" |
| 14 #include "base/time.h" | 13 #include "base/time.h" |
| 15 #include "content/renderer/render_view_observer.h" | 14 #include "content/renderer/render_view_observer.h" |
| 16 #include "content/renderer/render_view_observer_tracker.h" | 15 #include "content/renderer/render_view_observer_tracker.h" |
| 17 #include "printing/metafile.h" | 16 #include "printing/metafile.h" |
| 18 #include "printing/metafile_impl.h" | 17 #include "printing/metafile_impl.h" |
| 19 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" | 18 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, | 101 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, |
| 103 BlockScriptInitiatedPrinting); | 102 BlockScriptInitiatedPrinting); |
| 104 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, OnPrintPages); | 103 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, OnPrintPages); |
| 105 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreview); | 104 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreview); |
| 106 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreviewCancel); | 105 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreviewCancel); |
| 107 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreviewFail); | 106 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, OnPrintPreviewFail); |
| 108 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, | 107 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, |
| 109 OnPrintForPrintPreview); | 108 OnPrintForPrintPreview); |
| 110 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, | 109 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, |
| 111 OnPrintForPrintPreviewFail); | 110 OnPrintForPrintPreviewFail); |
| 111 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperPreviewTest, |
| 112 OnPrintPreviewForSelectedPages); |
| 112 | 113 |
| 113 #if defined(OS_WIN) || defined(OS_MACOSX) | 114 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 114 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, PrintLayoutTest); | 115 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, PrintLayoutTest); |
| 115 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, PrintWithIframe); | 116 FRIEND_TEST_ALL_PREFIXES(PrintWebViewHelperTest, PrintWithIframe); |
| 116 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 117 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
| 117 | 118 |
| 118 // RenderViewObserver implementation. | 119 // RenderViewObserver implementation. |
| 119 virtual bool OnMessageReceived(const IPC::Message& message); | 120 virtual bool OnMessageReceived(const IPC::Message& message); |
| 120 virtual void PrintPage(WebKit::WebFrame* frame); | 121 virtual void PrintPage(WebKit::WebFrame* frame); |
| 121 | 122 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 132 | 133 |
| 133 // Start the process of generating a print preview using |settings|. | 134 // Start the process of generating a print preview using |settings|. |
| 134 void OnPrintPreview(const base::DictionaryValue& settings); | 135 void OnPrintPreview(const base::DictionaryValue& settings); |
| 135 // Initialize the print preview document. | 136 // Initialize the print preview document. |
| 136 bool CreatePreviewDocument(); | 137 bool CreatePreviewDocument(); |
| 137 | 138 |
| 138 // Renders a print preview page. |page_number| is 0-based. | 139 // Renders a print preview page. |page_number| is 0-based. |
| 139 // Returns true if print preview should continue, false on failure. | 140 // Returns true if print preview should continue, false on failure. |
| 140 bool RenderPreviewPage(int page_number); | 141 bool RenderPreviewPage(int page_number); |
| 141 | 142 |
| 142 // Finalize the print preview document. | 143 // Finalize the print ready preview document. |
| 143 bool FinalizePreviewDocument(); | 144 bool FinalizePrintReadyDocument(); |
| 144 | 145 |
| 145 // Print / preview the node under the context menu. | 146 // Print / preview the node under the context menu. |
| 146 void OnPrintNodeUnderContextMenu(); | 147 void OnPrintNodeUnderContextMenu(); |
| 147 | 148 |
| 148 // Print the pages for print preview. Do not display the native print dialog | 149 // Print the pages for print preview. Do not display the native print dialog |
| 149 // for user settings. |job_settings| has new print job settings values. | 150 // for user settings. |job_settings| has new print job settings values. |
| 150 void OnPrintForPrintPreview(const base::DictionaryValue& job_settings); | 151 void OnPrintForPrintPreview(const base::DictionaryValue& job_settings); |
| 151 | 152 |
| 152 void OnPrintingDone(bool success); | 153 void OnPrintingDone(bool success); |
| 153 | 154 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 // |page_number| is 0-based. | 296 // |page_number| is 0-based. |
| 296 // For a valid |page_number| with modifiable content, | 297 // For a valid |page_number| with modifiable content, |
| 297 // |metafile| is the rendered page. Otherwise |metafile| is NULL. | 298 // |metafile| is the rendered page. Otherwise |metafile| is NULL. |
| 298 // Returns true if print preview should continue, false on failure. | 299 // Returns true if print preview should continue, false on failure. |
| 299 bool PreviewPageRendered(int page_number, printing::Metafile* metafile); | 300 bool PreviewPageRendered(int page_number, printing::Metafile* metafile); |
| 300 | 301 |
| 301 WebKit::WebView* print_web_view_; | 302 WebKit::WebView* print_web_view_; |
| 302 | 303 |
| 303 scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_; | 304 scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_; |
| 304 bool is_preview_; | 305 bool is_preview_; |
| 306 bool is_print_ready_metafile_sent_; |
| 305 | 307 |
| 306 // Used for scripted initiated printing blocking. | 308 // Used for scripted initiated printing blocking. |
| 307 base::Time last_cancelled_script_print_; | 309 base::Time last_cancelled_script_print_; |
| 308 int user_cancelled_scripted_print_count_; | 310 int user_cancelled_scripted_print_count_; |
| 309 | 311 |
| 310 // Let the browser process know of a printing failure. Only set to false when | 312 // Let the browser process know of a printing failure. Only set to false when |
| 311 // the failure came from the browser in the first place. | 313 // the failure came from the browser in the first place. |
| 312 bool notify_browser_of_print_failure_; | 314 bool notify_browser_of_print_failure_; |
| 313 | 315 |
| 314 scoped_ptr<PrintMsg_PrintPages_Params> old_print_pages_params_; | 316 scoped_ptr<PrintMsg_PrintPages_Params> old_print_pages_params_; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 332 void OnPrintPreview(); | 334 void OnPrintPreview(); |
| 333 | 335 |
| 334 // Create the print preview document. |pages| is empty to print all pages. | 336 // Create the print preview document. |pages| is empty to print all pages. |
| 335 bool CreatePreviewDocument(PrintMsg_Print_Params* params, | 337 bool CreatePreviewDocument(PrintMsg_Print_Params* params, |
| 336 const std::vector<int>& pages); | 338 const std::vector<int>& pages); |
| 337 | 339 |
| 338 // Called after a page gets rendered. |page_time| is how long the | 340 // Called after a page gets rendered. |page_time| is how long the |
| 339 // rendering took. | 341 // rendering took. |
| 340 void RenderedPreviewPage(const base::TimeDelta& page_time); | 342 void RenderedPreviewPage(const base::TimeDelta& page_time); |
| 341 | 343 |
| 342 // Finalizes the print preview document. | 344 // Updates the print preview context when the required pages are rendered. |
| 343 void FinalizePreviewDocument(); | 345 void AllPagesRendered(); |
| 346 |
| 347 // Finalizes the print ready preview document. |
| 348 void FinalizePrintReadyDocument(); |
| 344 | 349 |
| 345 // Cleanup after print preview finishes. | 350 // Cleanup after print preview finishes. |
| 346 void Finished(); | 351 void Finished(); |
| 347 | 352 |
| 348 // Cleanup after print preview fails. | 353 // Cleanup after print preview fails. |
| 349 void Failed(); | 354 void Failed(); |
| 350 | 355 |
| 351 // Helper functions | 356 // Helper functions |
| 352 int GetNextPageNumber(); | 357 int GetNextPageNumber(); |
| 353 bool IsReadyToRender() const; | 358 bool IsReadyToRender() const; |
| 354 bool IsModifiable() const; | 359 bool IsModifiable() const; |
| 360 bool IsLastPageOfPrintReadyMetafile() const; |
| 361 |
| 362 // Setters |
| 363 void set_generate_draft_pages(bool generate_draft_pages); |
| 355 | 364 |
| 356 // Getters | 365 // Getters |
| 357 WebKit::WebFrame* frame() const; | 366 WebKit::WebFrame* frame() const; |
| 358 WebKit::WebNode* node() const; | 367 WebKit::WebNode* node() const; |
| 359 int total_page_count() const; | 368 int total_page_count() const; |
| 369 bool generate_draft_pages(); |
| 360 printing::PreviewMetafile* metafile() const; | 370 printing::PreviewMetafile* metafile() const; |
| 361 const PrintMsg_Print_Params& print_params() const; | 371 const PrintMsg_Print_Params& print_params() const; |
| 362 const gfx::Size& GetPrintCanvasSize() const; | 372 const gfx::Size& GetPrintCanvasSize() const; |
| 363 | 373 |
| 364 private: | 374 private: |
| 365 enum State { | 375 enum State { |
| 366 UNINITIALIZED, // Not ready to render. | 376 UNINITIALIZED, // Not ready to render. |
| 367 INITIALIZED, // Ready to render. | 377 INITIALIZED, // Ready to render. |
| 368 RENDERING, // Rendering. | 378 RENDERING, // Rendering. |
| 369 DONE // Finished rendering. | 379 DONE // Finished rendering. |
| 370 }; | 380 }; |
| 371 | 381 |
| 372 // Reset some of the internal rendering context. | 382 // Reset some of the internal rendering context. |
| 373 void ClearContext(); | 383 void ClearContext(); |
| 374 | 384 |
| 375 // Specifies what to render for print preview. | 385 // Specifies what to render for print preview. |
| 376 WebKit::WebFrame* frame_; | 386 WebKit::WebFrame* frame_; |
| 377 scoped_ptr<WebKit::WebNode> node_; | 387 scoped_ptr<WebKit::WebNode> node_; |
| 378 | 388 |
| 379 scoped_ptr<PrepareFrameAndViewForPrint> prep_frame_view_; | 389 scoped_ptr<PrepareFrameAndViewForPrint> prep_frame_view_; |
| 380 scoped_ptr<printing::PreviewMetafile> metafile_; | 390 scoped_ptr<printing::PreviewMetafile> metafile_; |
| 381 scoped_ptr<PrintMsg_Print_Params> print_params_; | 391 scoped_ptr<PrintMsg_Print_Params> print_params_; |
| 382 | 392 |
| 383 // Total page count in the renderer. | 393 // Total page count in the renderer. |
| 384 int total_page_count_; | 394 int total_page_count_; |
| 385 | 395 |
| 386 // Number of pages to render. | |
| 387 int actual_page_count_; | |
| 388 | |
| 389 // The current page to render. | 396 // The current page to render. |
| 390 int current_page_index_; | 397 int current_page_index_; |
| 391 | 398 |
| 399 // List of page indices that need to be rendered. |
| 392 std::vector<int> pages_to_render_; | 400 std::vector<int> pages_to_render_; |
| 393 | 401 |
| 402 // True, when draft pages needs to be generated. |
| 403 bool generate_draft_pages_; |
| 404 |
| 405 // Specifies the total number of pages in the print ready metafile. |
| 406 int print_ready_metafile_page_count_; |
| 407 |
| 394 base::TimeDelta document_render_time_; | 408 base::TimeDelta document_render_time_; |
| 395 base::TimeTicks begin_time_; | 409 base::TimeTicks begin_time_; |
| 396 | 410 |
| 397 State state_; | 411 State state_; |
| 398 }; | 412 }; |
| 399 | 413 |
| 400 PrintPreviewContext print_preview_context_; | 414 PrintPreviewContext print_preview_context_; |
| 401 | 415 |
| 402 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper); | 416 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper); |
| 403 }; | 417 }; |
| 404 | 418 |
| 405 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ | 419 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ |
| OLD | NEW |