Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: pdf/out_of_process_instance.cc

Issue 2864603006: Revert of Handle long press in PDF documents. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pdf/out_of_process_instance.h ('k') | pdf/pdf_engine.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "pdf/out_of_process_instance.h" 5 #include "pdf/out_of_process_instance.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> // for min/max() 10 #include <algorithm> // for min/max()
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 int page_index = 0; 232 int page_index = 0;
233 if (!base::StringToInt(url_substr[1], &page_index)) 233 if (!base::StringToInt(url_substr[1], &page_index))
234 return -1; 234 return -1;
235 return page_index; 235 return page_index;
236 } 236 }
237 237
238 bool IsPrintPreviewUrl(const std::string& url) { 238 bool IsPrintPreviewUrl(const std::string& url) {
239 return url.substr(0, strlen(kChromePrint)) == kChromePrint; 239 return url.substr(0, strlen(kChromePrint)) == kChromePrint;
240 } 240 }
241 241
242 void ScaleFloatPoint(float scale, pp::FloatPoint* point) {
243 point->set_x(point->x() * scale);
244 point->set_y(point->y() * scale);
245 }
246
247 void ScalePoint(float scale, pp::Point* point) { 242 void ScalePoint(float scale, pp::Point* point) {
248 point->set_x(static_cast<int>(point->x() * scale)); 243 point->set_x(static_cast<int>(point->x() * scale));
249 point->set_y(static_cast<int>(point->y() * scale)); 244 point->set_y(static_cast<int>(point->y() * scale));
250 } 245 }
251 246
252 void ScaleRect(float scale, pp::Rect* rect) { 247 void ScaleRect(float scale, pp::Rect* rect) {
253 int left = static_cast<int>(floorf(rect->x() * scale)); 248 int left = static_cast<int>(floorf(rect->x() * scale));
254 int top = static_cast<int>(floorf(rect->y() * scale)); 249 int top = static_cast<int>(floorf(rect->y() * scale));
255 int right = static_cast<int>(ceilf((rect->x() + rect->width()) * scale)); 250 int right = static_cast<int>(ceilf((rect->x() + rect->width()) * scale));
256 int bottom = static_cast<int>(ceilf((rect->y() + rect->height()) * scale)); 251 int bottom = static_cast<int>(ceilf((rect->y() + rect->height()) * scale));
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 reply.Set(pp::Var(kType), pp::Var(kJSGetNamedDestinationReplyType)); 569 reply.Set(pp::Var(kType), pp::Var(kJSGetNamedDestinationReplyType));
575 if (page_number >= 0) 570 if (page_number >= 0)
576 reply.Set(pp::Var(kJSNamedDestinationPageNumber), page_number); 571 reply.Set(pp::Var(kJSNamedDestinationPageNumber), page_number);
577 PostMessage(reply); 572 PostMessage(reply);
578 } else { 573 } else {
579 NOTREACHED(); 574 NOTREACHED();
580 } 575 }
581 } 576 }
582 577
583 bool OutOfProcessInstance::HandleInputEvent(const pp::InputEvent& event) { 578 bool OutOfProcessInstance::HandleInputEvent(const pp::InputEvent& event) {
584 // To simplify things, convert the event into device coordinates. 579 // To simplify things, convert the event into device coordinates if it is
580 // a mouse event.
585 pp::InputEvent event_device_res(event); 581 pp::InputEvent event_device_res(event);
586 { 582 {
587 pp::MouseInputEvent mouse_event(event); 583 pp::MouseInputEvent mouse_event(event);
588 if (!mouse_event.is_null()) { 584 if (!mouse_event.is_null()) {
589 pp::Point point = mouse_event.GetPosition(); 585 pp::Point point = mouse_event.GetPosition();
590 pp::Point movement = mouse_event.GetMovement(); 586 pp::Point movement = mouse_event.GetMovement();
591 ScalePoint(device_scale_, &point); 587 ScalePoint(device_scale_, &point);
592 point.set_x(point.x() - available_area_.x());
593
594 ScalePoint(device_scale_, &movement); 588 ScalePoint(device_scale_, &movement);
595 mouse_event = 589 mouse_event =
596 pp::MouseInputEvent(this, event.GetType(), event.GetTimeStamp(), 590 pp::MouseInputEvent(this, event.GetType(), event.GetTimeStamp(),
597 event.GetModifiers(), mouse_event.GetButton(), 591 event.GetModifiers(), mouse_event.GetButton(),
598 point, mouse_event.GetClickCount(), movement); 592 point, mouse_event.GetClickCount(), movement);
599 event_device_res = mouse_event; 593 event_device_res = mouse_event;
600 } 594 }
601 } 595 }
602 {
603 pp::TouchInputEvent touch_event(event);
604 if (!touch_event.is_null()) {
605 pp::TouchInputEvent new_touch_event = pp::TouchInputEvent(
606 this, touch_event.GetType(), touch_event.GetTimeStamp(),
607 touch_event.GetModifiers());
608 596
609 for (uint32_t i = 0; 597 pp::InputEvent offset_event(event_device_res);
610 i < touch_event.GetTouchCount(PP_TOUCHLIST_TYPE_TARGETTOUCHES); 598 switch (offset_event.GetType()) {
611 i++) { 599 case PP_INPUTEVENT_TYPE_MOUSEDOWN:
612 pp::TouchPoint touch_point = 600 case PP_INPUTEVENT_TYPE_MOUSEUP:
613 touch_event.GetTouchByIndex(PP_TOUCHLIST_TYPE_TARGETTOUCHES, i); 601 case PP_INPUTEVENT_TYPE_MOUSEMOVE:
614 602 case PP_INPUTEVENT_TYPE_MOUSEENTER:
615 pp::FloatPoint point = touch_point.position(); 603 case PP_INPUTEVENT_TYPE_MOUSELEAVE: {
616 604 pp::MouseInputEvent mouse_event(event_device_res);
617 // Account for the scroll position. Touch events are in DOM coordinates 605 pp::MouseInputEvent mouse_event_dip(event);
618 // where mouse events appear to be in screen coordinates. 606 pp::Point point = mouse_event.GetPosition();
619 point.set_x(scroll_offset_.x() + point.x()); 607 point.set_x(point.x() - available_area_.x());
620 point.set_y(scroll_offset_.y() + point.y()); 608 offset_event = pp::MouseInputEvent(
621 ScaleFloatPoint(device_scale_, &point); 609 this, event.GetType(), event.GetTimeStamp(), event.GetModifiers(),
622 610 mouse_event.GetButton(), point, mouse_event.GetClickCount(),
623 point.set_x(point.x() - available_area_.x()); 611 mouse_event.GetMovement());
624 612 break;
625 new_touch_event.AddTouchPoint(
626 PP_TOUCHLIST_TYPE_TARGETTOUCHES,
627 {touch_point.id(), point, touch_point.radii(),
628 touch_point.rotation_angle(), touch_point.pressure()});
629 }
630 event_device_res = new_touch_event;
631 } 613 }
614 default:
615 break;
632 } 616 }
633 617 if (engine_->HandleEvent(offset_event))
634 if (engine_->HandleEvent(event_device_res))
635 return true; 618 return true;
636 619
637 // Middle click is used for scrolling and is handled by the container page. 620 // Middle click is used for scrolling and is handled by the container page.
638 pp::MouseInputEvent mouse_event(event_device_res); 621 pp::MouseInputEvent mouse_event(event_device_res);
639 if (!mouse_event.is_null() && 622 if (!mouse_event.is_null() &&
640 mouse_event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_MIDDLE) { 623 mouse_event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_MIDDLE) {
641 return false; 624 return false;
642 } 625 }
643 626
644 // Return true for unhandled clicks so the plugin takes focus. 627 // Return true for unhandled clicks so the plugin takes focus.
(...skipping 24 matching lines...) Expand all
669 652
670 if (image_data_.is_null()) { 653 if (image_data_.is_null()) {
671 DCHECK(plugin_size_.IsEmpty()); 654 DCHECK(plugin_size_.IsEmpty());
672 return; 655 return;
673 } 656 }
674 657
675 OnGeometryChanged(zoom_, old_device_scale); 658 OnGeometryChanged(zoom_, old_device_scale);
676 } 659 }
677 660
678 if (!stop_scrolling_) { 661 if (!stop_scrolling_) {
679 scroll_offset_ = view.GetScrollOffset(); 662 pp::Point scroll_offset(view.GetScrollOffset());
680 // Because view messages come from the DOM, the coordinates of the viewport 663 // Because view messages come from the DOM, the coordinates of the viewport
681 // are 0-based (i.e. they do not correspond to the viewport's coordinates in 664 // are 0-based (i.e. they do not correspond to the viewport's coordinates in
682 // JS), so we need to subtract the toolbar height to convert them into 665 // JS), so we need to subtract the toolbar height to convert them into
683 // viewport coordinates. 666 // viewport coordinates.
684 pp::FloatPoint scroll_offset_float( 667 pp::FloatPoint scroll_offset_float(scroll_offset.x(),
685 scroll_offset_.x(), scroll_offset_.y() - top_toolbar_height_); 668 scroll_offset.y() - top_toolbar_height_);
686 scroll_offset_float = BoundScrollOffsetToDocument(scroll_offset_float); 669 scroll_offset_float = BoundScrollOffsetToDocument(scroll_offset_float);
687 engine_->ScrolledToXPosition(scroll_offset_float.x() * device_scale_); 670 engine_->ScrolledToXPosition(scroll_offset_float.x() * device_scale_);
688 engine_->ScrolledToYPosition(scroll_offset_float.y() * device_scale_); 671 engine_->ScrolledToYPosition(scroll_offset_float.y() * device_scale_);
689 } 672 }
690 } 673 }
691 674
692 void OutOfProcessInstance::GetPrintPresetOptionsFromDocument( 675 void OutOfProcessInstance::GetPrintPresetOptionsFromDocument(
693 PP_PdfPrintPresetOptions_Dev* options) { 676 PP_PdfPrintPresetOptions_Dev* options) {
694 options->is_scaling_disabled = PP_FromBool(IsPrintScalingDisabled()); 677 options->is_scaling_disabled = PP_FromBool(IsPrintScalingDisabled());
695 options->duplex = 678 options->duplex =
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 void OutOfProcessInstance::DidOpenPreview(int32_t result) { 955 void OutOfProcessInstance::DidOpenPreview(int32_t result) {
973 if (result == PP_OK) { 956 if (result == PP_OK) {
974 preview_client_ = base::MakeUnique<PreviewModeClient>(this); 957 preview_client_ = base::MakeUnique<PreviewModeClient>(this);
975 preview_engine_ = PDFEngine::Create(preview_client_.get()); 958 preview_engine_ = PDFEngine::Create(preview_client_.get());
976 preview_engine_->HandleDocumentLoad(embed_preview_loader_); 959 preview_engine_->HandleDocumentLoad(embed_preview_loader_);
977 } else { 960 } else {
978 NOTREACHED(); 961 NOTREACHED();
979 } 962 }
980 } 963 }
981 964
982 void OutOfProcessInstance::OnClientTouchTimerFired(int32_t id) {
983 engine_->OnTouchTimerCallback(id);
984 }
985
986 void OutOfProcessInstance::OnClientTimerFired(int32_t id) { 965 void OutOfProcessInstance::OnClientTimerFired(int32_t id) {
987 engine_->OnCallback(id); 966 engine_->OnCallback(id);
988 } 967 }
989 968
990 void OutOfProcessInstance::CalculateBackgroundParts() { 969 void OutOfProcessInstance::CalculateBackgroundParts() {
991 background_parts_.clear(); 970 background_parts_.clear();
992 int left_width = available_area_.x(); 971 int left_width = available_area_.x();
993 int right_start = available_area_.right(); 972 int right_start = available_area_.right();
994 int right_width = abs(plugin_size_.width() - available_area_.right()); 973 int right_width = abs(plugin_size_.width() - available_area_.right());
995 int bottom = std::min(available_area_.bottom(), plugin_size_.height()); 974 int bottom = std::min(available_area_.bottom(), plugin_size_.height());
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 // Disable save and print until the document is fully loaded, since they 1243 // Disable save and print until the document is fully loaded, since they
1265 // would generate an incomplete document. Need to do this each time we 1244 // would generate an incomplete document. Need to do this each time we
1266 // call DidStartLoading since that resets the content restrictions. 1245 // call DidStartLoading since that resets the content restrictions.
1267 pp::PDF::SetContentRestriction( 1246 pp::PDF::SetContentRestriction(
1268 this, CONTENT_RESTRICTION_SAVE | CONTENT_RESTRICTION_PRINT); 1247 this, CONTENT_RESTRICTION_SAVE | CONTENT_RESTRICTION_PRINT);
1269 } 1248 }
1270 1249
1271 return CreateURLLoaderInternal(); 1250 return CreateURLLoaderInternal();
1272 } 1251 }
1273 1252
1274 void OutOfProcessInstance::ScheduleTouchTimerCallback(int id, int delay_in_ms) {
1275 pp::CompletionCallback callback = callback_factory_.NewCallback(
1276 &OutOfProcessInstance::OnClientTouchTimerFired);
1277 pp::Module::Get()->core()->CallOnMainThread(delay_in_ms, callback, id);
1278 }
1279
1280 void OutOfProcessInstance::ScheduleCallback(int id, int delay_in_ms) { 1253 void OutOfProcessInstance::ScheduleCallback(int id, int delay_in_ms) {
1281 pp::CompletionCallback callback = 1254 pp::CompletionCallback callback =
1282 callback_factory_.NewCallback(&OutOfProcessInstance::OnClientTimerFired); 1255 callback_factory_.NewCallback(&OutOfProcessInstance::OnClientTimerFired);
1283 pp::Module::Get()->core()->CallOnMainThread(delay_in_ms, callback, id); 1256 pp::Module::Get()->core()->CallOnMainThread(delay_in_ms, callback, id);
1284 } 1257 }
1285 1258
1286 void OutOfProcessInstance::SearchString( 1259 void OutOfProcessInstance::SearchString(
1287 const base::char16* string, 1260 const base::char16* string,
1288 const base::char16* term, 1261 const base::char16* term,
1289 bool case_sensitive, 1262 bool case_sensitive,
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
1638 const pp::FloatPoint& scroll_offset) { 1611 const pp::FloatPoint& scroll_offset) {
1639 float max_x = document_size_.width() * zoom_ - plugin_dip_size_.width(); 1612 float max_x = document_size_.width() * zoom_ - plugin_dip_size_.width();
1640 float x = std::max(std::min(scroll_offset.x(), max_x), 0.0f); 1613 float x = std::max(std::min(scroll_offset.x(), max_x), 0.0f);
1641 float min_y = -top_toolbar_height_; 1614 float min_y = -top_toolbar_height_;
1642 float max_y = document_size_.height() * zoom_ - plugin_dip_size_.height(); 1615 float max_y = document_size_.height() * zoom_ - plugin_dip_size_.height();
1643 float y = std::max(std::min(scroll_offset.y(), max_y), min_y); 1616 float y = std::max(std::min(scroll_offset.y(), max_y), min_y);
1644 return pp::FloatPoint(x, y); 1617 return pp::FloatPoint(x, y);
1645 } 1618 }
1646 1619
1647 } // namespace chrome_pdf 1620 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/out_of_process_instance.h ('k') | pdf/pdf_engine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698