summaryrefslogtreecommitdiffstats
path: root/pdf/out_of_process_instance.cc
diff options
context:
space:
mode:
authorraymes <raymes@chromium.org>2015-01-21 18:07:49 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-22 02:08:50 +0000
commitb59ab7ac8433652b921f2a93289c6d13b862e5a0 (patch)
tree3fab315c2019fd4b22eddce245b8c88c85d5a038 /pdf/out_of_process_instance.cc
parent9178c77a0167ee7c73364b21a6f3a633029b7a44 (diff)
downloadchromium_src-b59ab7ac8433652b921f2a93289c6d13b862e5a0.zip
chromium_src-b59ab7ac8433652b921f2a93289c6d13b862e5a0.tar.gz
chromium_src-b59ab7ac8433652b921f2a93289c6d13b862e5a0.tar.bz2
Delay printing OOP PDF until loading is complete
This delays the print command in OOP PDF. This simplifies the use of the OOP PDF scripting API so print can be called immediately before the document is loaded. BUG=303491 Review URL: https://codereview.chromium.org/865023002 Cr-Commit-Position: refs/heads/master@{#312524}
Diffstat (limited to 'pdf/out_of_process_instance.cc')
-rw-r--r--pdf/out_of_process_instance.cc55
1 files changed, 28 insertions, 27 deletions
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
index 2f08ff9..58b25a9 100644
--- a/pdf/out_of_process_instance.cc
+++ b/pdf/out_of_process_instance.cc
@@ -255,7 +255,6 @@ OutOfProcessInstance::OutOfProcessInstance(PP_Instance instance)
cursor_(PP_CURSORTYPE_POINTER),
zoom_(1.0),
device_scale_(1.0),
- printing_enabled_(true),
full_(false),
paint_manager_(this, this, true),
first_paint_(true),
@@ -268,7 +267,8 @@ OutOfProcessInstance::OutOfProcessInstance(PP_Instance instance)
recently_sent_find_update_(false),
received_viewport_message_(false),
did_call_start_loading_(false),
- stop_scrolling_(false) {
+ stop_scrolling_(false),
+ delay_print_(false) {
loader_factory_.Initialize(this);
timer_factory_.Initialize(this);
form_factory_.Initialize(this);
@@ -970,9 +970,13 @@ void OutOfProcessInstance::Email(const std::string& to,
}
void OutOfProcessInstance::Print() {
- if (!printing_enabled_ ||
- (!engine_->HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY) &&
- !engine_->HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY))) {
+ if (document_load_state_ == LOAD_STATE_LOADING) {
+ delay_print_ = true;
+ return;
+ }
+
+ if (!engine_->HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY) &&
+ !engine_->HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY)) {
return;
}
@@ -1088,38 +1092,35 @@ void OutOfProcessInstance::DocumentLoadComplete(int page_count) {
pp::Var(named_destinations));
PostMessage(named_destinations_message);
+ pp::VarDictionary bookmarks_message;
+ bookmarks_message.Set(pp::Var(kType), pp::Var(kJSBookmarksType));
+ bookmarks_message.Set(pp::Var(kJSBookmarks), engine_->GetBookmarks());
+ PostMessage(bookmarks_message);
+
pp::VarDictionary progress_message;
progress_message.Set(pp::Var(kType), pp::Var(kJSLoadProgressType));
progress_message.Set(pp::Var(kJSProgressPercentage), pp::Var(100));
PostMessage(progress_message);
- pp::VarDictionary bookmarksMessage;
- bookmarksMessage.Set(pp::Var(kType), pp::Var(kJSBookmarksType));
- bookmarksMessage.Set(pp::Var(kJSBookmarks), engine_->GetBookmarks());
- PostMessage(bookmarksMessage);
-
- if (!full_)
- return;
+ if (full_) {
+ if (did_call_start_loading_) {
+ pp::PDF::DidStopLoading(this);
+ did_call_start_loading_ = false;
+ }
- if (did_call_start_loading_) {
- pp::PDF::DidStopLoading(this);
- did_call_start_loading_ = false;
- }
+ int content_restrictions =
+ CONTENT_RESTRICTION_CUT | CONTENT_RESTRICTION_PASTE;
+ if (!engine_->HasPermission(PDFEngine::PERMISSION_COPY))
+ content_restrictions |= CONTENT_RESTRICTION_COPY;
- int content_restrictions =
- CONTENT_RESTRICTION_CUT | CONTENT_RESTRICTION_PASTE;
- if (!engine_->HasPermission(PDFEngine::PERMISSION_COPY))
- content_restrictions |= CONTENT_RESTRICTION_COPY;
+ pp::PDF::SetContentRestriction(this, content_restrictions);
- if (!engine_->HasPermission(PDFEngine::PERMISSION_PRINT_LOW_QUALITY) &&
- !engine_->HasPermission(PDFEngine::PERMISSION_PRINT_HIGH_QUALITY)) {
- printing_enabled_ = false;
+ uma_.HistogramCustomCounts("PDF.PageCount", page_count,
+ 1, 1000000, 50);
}
- pp::PDF::SetContentRestriction(this, content_restrictions);
-
- uma_.HistogramCustomCounts("PDF.PageCount", page_count,
- 1, 1000000, 50);
+ if (delay_print_)
+ Print();
}
void OutOfProcessInstance::RotateClockwise() {