summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 21:04:34 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 21:04:34 +0000
commit09285ec7503530eef8332cd92ee1ceea6486dddb (patch)
treefa18978aa25db27678a7f21da9454e4d17c14726 /chrome/renderer
parent9c7675c2eaede3572e28e5f1ae964836fcaf18ae (diff)
downloadchromium_src-09285ec7503530eef8332cd92ee1ceea6486dddb.zip
chromium_src-09285ec7503530eef8332cd92ee1ceea6486dddb.tar.gz
chromium_src-09285ec7503530eef8332cd92ee1ceea6486dddb.tar.bz2
Printing: Further cleanup of PrintWebViewHelper. PrintWebViewHelper inherently knows whether it should be in preview mode or not.
BUG=none TEST=none Review URL: http://codereview.chromium.org/6677001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77858 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/print_web_view_helper.cc44
-rw-r--r--chrome/renderer/print_web_view_helper.h37
-rw-r--r--chrome/renderer/render_view.cc8
3 files changed, 43 insertions, 46 deletions
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index d348b6b..e4b1fc4 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -6,9 +6,11 @@
#include <string>
+#include "base/command_line.h"
#include "base/logging.h"
#include "base/process_util.h"
#include "base/utf_string_conversions.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/render_messages_params.h"
#include "chrome/renderer/render_view.h"
@@ -108,14 +110,14 @@ PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view)
: RenderViewObserver(render_view),
print_web_view_(NULL),
user_cancelled_scripted_print_count_(0) {
+ is_preview_ = CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnablePrintPreview);
}
PrintWebViewHelper::~PrintWebViewHelper() {}
-void PrintWebViewHelper::PrintFrame(WebFrame* frame,
- bool script_initiated,
- bool is_preview) {
- Print(frame, NULL, script_initiated, is_preview);
+void PrintWebViewHelper::ScriptInitiatedPrint(WebFrame* frame) {
+ Print(frame, NULL, true);
}
bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) {
@@ -135,6 +137,7 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) {
void PrintWebViewHelper::OnPrintForPrintPreview(
const DictionaryValue& job_settings) {
+ DCHECK(is_preview_);
#if defined(OS_MACOSX)
// If still not finished with earlier print request simply ignore.
if (print_web_view_)
@@ -172,21 +175,27 @@ void PrintWebViewHelper::OnPrintForPrintPreview(
#endif
}
-void PrintWebViewHelper::OnPrint(bool is_preview) {
+void PrintWebViewHelper::OnPrint() {
DCHECK(render_view()->webview());
if (!render_view()->webview())
return;
// If the user has selected text in the currently focused frame we print
// only that frame (this makes print selection work for multiple frames).
- if (render_view()->webview()->focusedFrame()->hasSelection())
- PrintFrame(render_view()->webview()->focusedFrame(), false, is_preview);
- else
- PrintFrame(render_view()->webview()->mainFrame(), false, is_preview);
+ WebFrame* frame = render_view()->webview()->focusedFrame()->hasSelection() ?
+ render_view()->webview()->focusedFrame() :
+ render_view()->webview()->mainFrame();
+ Print(frame, NULL, false);
}
void PrintWebViewHelper::OnPrintPages() {
- OnPrint(false);
+ DCHECK(!is_preview_);
+ OnPrint();
+}
+
+void PrintWebViewHelper::OnPrintPreview() {
+ DCHECK(is_preview_);
+ OnPrint();
}
void PrintWebViewHelper::OnPrintingDone(int document_cookie, bool success) {
@@ -195,26 +204,23 @@ void PrintWebViewHelper::OnPrintingDone(int document_cookie, bool success) {
DidFinishPrinting(success);
}
-void PrintWebViewHelper::OnPrintPreview() {
- OnPrint(true);
-}
-
void PrintWebViewHelper::OnPrintNodeUnderContextMenu() {
if (render_view()->context_menu_node().isNull()) {
NOTREACHED();
return;
}
+ // TODO(thestig) Handle print preview case. http://crbug.com/75505.
+
// Make a copy of the node, since we will do a sync call to the browser and
// during that time OnContextMenuClosed might reset context_menu_node_.
WebNode context_menu_node(render_view()->context_menu_node());
- Print(context_menu_node.document().frame(), &context_menu_node, false, false);
+ Print(context_menu_node.document().frame(), &context_menu_node, false);
}
void PrintWebViewHelper::Print(WebKit::WebFrame* frame,
WebNode* node,
- bool script_initiated,
- bool is_preview) {
+ bool script_initiated) {
// If still not finished with earlier print request simply ignore.
if (print_web_view_)
return;
@@ -243,7 +249,7 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame,
// Some full screen plugins can say they don't want to print.
if (expected_pages_count) {
- if (!is_preview) {
+ if (!is_preview_) {
// Ask the browser to show UI to retrieve the final print settings.
if (!GetPrintSettingsFromUser(frame, expected_pages_count,
use_browser_overlays)) {
@@ -253,7 +259,7 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame,
// Render Pages for printing.
if (!print_cancelled) {
- if (is_preview)
+ if (is_preview_)
RenderPagesForPreview(frame);
else
RenderPagesForPrint(frame, node);
diff --git a/chrome/renderer/print_web_view_helper.h b/chrome/renderer/print_web_view_helper.h
index 29b79b95..768f066 100644
--- a/chrome/renderer/print_web_view_helper.h
+++ b/chrome/renderer/print_web_view_helper.h
@@ -16,6 +16,9 @@
#include "ui/gfx/size.h"
class DictionaryValue;
+struct ViewMsg_Print_Params;
+struct ViewMsg_PrintPage_Params;
+struct ViewMsg_PrintPages_Params;
#if defined(USE_X11)
namespace skia {
@@ -23,10 +26,6 @@ class VectorCanvas;
}
#endif
-struct ViewMsg_Print_Params;
-struct ViewMsg_PrintPage_Params;
-struct ViewMsg_PrintPages_Params;
-
// Class that calls the Begin and End print functions on the frame and changes
// the size of the view temporarily to support full page printing..
// Do not serve any events in the time between construction and destruction of
@@ -76,10 +75,8 @@ class PrintWebViewHelper : public RenderViewObserver ,
explicit PrintWebViewHelper(RenderView* render_view);
virtual ~PrintWebViewHelper();
- // Prints |frame|.
- void PrintFrame(WebKit::WebFrame* frame,
- bool script_initiated,
- bool is_preview);
+ // Prints |frame| which called window.print().
+ void ScriptInitiatedPrint(WebKit::WebFrame* frame);
protected:
// WebKit::WebViewClient override:
@@ -88,14 +85,9 @@ class PrintWebViewHelper : public RenderViewObserver ,
private:
friend class RenderViewTest_OnPrintPages_Test;
-#if defined(OS_WIN)
- friend class RenderViewTest_DISABLED_PrintLayoutTest_Test;
-#elif defined(OS_MACOSX)
- friend class RenderViewTest_PrintLayoutTest_Test;
-#endif // defined(OS_WIN)
-
#if defined(OS_WIN) || defined(OS_MACOSX)
- friend class RenderViewTest_PrintWithIframe_Test;
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, PrintLayoutTest);
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, PrintWithIframe);
#endif // defined(OS_WIN) || defined(OS_MACOSX)
// RenderViewObserver implementation.
@@ -103,25 +95,27 @@ class PrintWebViewHelper : public RenderViewObserver ,
// Message handlers ---------------------------------------------------------
+ // Print the document or generate a print preview.
void OnPrintPages();
- void OnPrintNodeUnderContextMenu();
void OnPrintPreview();
+ // Common method for OnPrintPages() and OnPrintPreview().
+ void OnPrint();
+
+ // Print / preview the node under the context menu.
+ void OnPrintNodeUnderContextMenu();
+
// Print the pages for print preview. Do not display the native print dialog
// for user settings. |job_settings| has new print job settings values.
void OnPrintForPrintPreview(const DictionaryValue& job_settings);
void OnPrintingDone(int document_cookie, bool success);
- // Common method for OnPrintPages() and OnPrintPreview().
- void OnPrint(bool is_preview);
-
// Main printing code -------------------------------------------------------
void Print(WebKit::WebFrame* frame,
WebKit::WebNode* node,
- bool script_initiated,
- bool is_preview);
+ bool script_initiated);
// Notification when printing is done - signal teardown.
void DidFinishPrinting(bool success);
@@ -233,6 +227,7 @@ class PrintWebViewHelper : public RenderViewObserver ,
scoped_ptr<ViewMsg_PrintPages_Params> print_pages_params_;
base::Time last_cancelled_script_print_;
int user_cancelled_scripted_print_count_;
+ bool is_preview_;
DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper);
};
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index c0a2e4b..5934412 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -2153,13 +2153,9 @@ void RenderView::didAddMessageToConsole(
}
void RenderView::printPage(WebFrame* frame) {
+ // TODO(thestig) Handle print preview case. http://crbug.com/75505.
DCHECK(frame);
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnablePrintPreview)) {
- print_helper_->PrintFrame(frame, true, true);
- } else {
- print_helper_->PrintFrame(frame, true, false);
- }
+ print_helper_->ScriptInitiatedPrint(frame);
}
WebKit::WebNotificationPresenter* RenderView::notificationPresenter() {