| OLD | NEW |
| 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 <algorithm> // for min/max() | 7 #include <algorithm> // for min/max() |
| 8 #define _USE_MATH_DEFINES // for M_PI | 8 #define _USE_MATH_DEFINES // for M_PI |
| 9 #include <cmath> // for log() and pow() | 9 #include <cmath> // for log() and pow() |
| 10 #include <math.h> | 10 #include <math.h> |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 const char kChromePrint[] = "chrome://print/"; | 47 const char kChromePrint[] = "chrome://print/"; |
| 48 const char kChromeExtension[] = | 48 const char kChromeExtension[] = |
| 49 "chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai"; | 49 "chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai"; |
| 50 | 50 |
| 51 // Dictionary Value key names for the document accessibility info | 51 // Dictionary Value key names for the document accessibility info |
| 52 const char kAccessibleNumberOfPages[] = "numberOfPages"; | 52 const char kAccessibleNumberOfPages[] = "numberOfPages"; |
| 53 const char kAccessibleLoaded[] = "loaded"; | 53 const char kAccessibleLoaded[] = "loaded"; |
| 54 const char kAccessibleCopyable[] = "copyable"; | 54 const char kAccessibleCopyable[] = "copyable"; |
| 55 | 55 |
| 56 // PDF background colors. | |
| 57 const uint32 kBackgroundColor = 0xFFCCCCCC; | |
| 58 const uint32 kBackgroundColorMaterial = 0xFF525659; | |
| 59 | |
| 60 // Constants used in handling postMessage() messages. | 56 // Constants used in handling postMessage() messages. |
| 61 const char kType[] = "type"; | 57 const char kType[] = "type"; |
| 62 // Viewport message arguments. (Page -> Plugin). | 58 // Viewport message arguments. (Page -> Plugin). |
| 63 const char kJSViewportType[] = "viewport"; | 59 const char kJSViewportType[] = "viewport"; |
| 64 const char kJSXOffset[] = "xOffset"; | 60 const char kJSXOffset[] = "xOffset"; |
| 65 const char kJSYOffset[] = "yOffset"; | 61 const char kJSYOffset[] = "yOffset"; |
| 66 const char kJSZoom[] = "zoom"; | 62 const char kJSZoom[] = "zoom"; |
| 67 // Stop scrolling message (Page -> Plugin) | 63 // Stop scrolling message (Page -> Plugin) |
| 68 const char kJSStopScrollingType[] = "stopScrolling"; | 64 const char kJSStopScrollingType[] = "stopScrolling"; |
| 69 // Document dimension arguments (Plugin -> Page). | 65 // Document dimension arguments (Plugin -> Page). |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 document_load_state_(LOAD_STATE_LOADING), | 270 document_load_state_(LOAD_STATE_LOADING), |
| 275 preview_document_load_state_(LOAD_STATE_COMPLETE), | 271 preview_document_load_state_(LOAD_STATE_COMPLETE), |
| 276 uma_(this), | 272 uma_(this), |
| 277 told_browser_about_unsupported_feature_(false), | 273 told_browser_about_unsupported_feature_(false), |
| 278 print_preview_page_count_(0), | 274 print_preview_page_count_(0), |
| 279 last_progress_sent_(0), | 275 last_progress_sent_(0), |
| 280 recently_sent_find_update_(false), | 276 recently_sent_find_update_(false), |
| 281 received_viewport_message_(false), | 277 received_viewport_message_(false), |
| 282 did_call_start_loading_(false), | 278 did_call_start_loading_(false), |
| 283 stop_scrolling_(false), | 279 stop_scrolling_(false), |
| 284 background_color_(kBackgroundColor), | 280 background_color_(0), |
| 285 top_toolbar_height_(0) { | 281 top_toolbar_height_(0) { |
| 286 loader_factory_.Initialize(this); | 282 loader_factory_.Initialize(this); |
| 287 timer_factory_.Initialize(this); | 283 timer_factory_.Initialize(this); |
| 288 form_factory_.Initialize(this); | 284 form_factory_.Initialize(this); |
| 289 print_callback_factory_.Initialize(this); | 285 print_callback_factory_.Initialize(this); |
| 290 engine_.reset(PDFEngine::Create(this)); | 286 engine_.reset(PDFEngine::Create(this)); |
| 291 pp::Module::Get()->AddPluginInterface(kPPPPdfInterface, &ppp_private); | 287 pp::Module::Get()->AddPluginInterface(kPPPPdfInterface, &ppp_private); |
| 292 AddPerInstanceObject(kPPPPdfInterface, this); | 288 AddPerInstanceObject(kPPPPdfInterface, this); |
| 293 | 289 |
| 294 RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_MOUSE); | 290 RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_MOUSE); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 GetLocalizedString(PP_RESOURCESTRING_PDFLOADING)); | 339 GetLocalizedString(PP_RESOURCESTRING_PDFLOADING)); |
| 344 translated_strings.Set(kJSLoadFailedString, | 340 translated_strings.Set(kJSLoadFailedString, |
| 345 GetLocalizedString(PP_RESOURCESTRING_PDFLOAD_FAILED)); | 341 GetLocalizedString(PP_RESOURCESTRING_PDFLOAD_FAILED)); |
| 346 PostMessage(translated_strings); | 342 PostMessage(translated_strings); |
| 347 | 343 |
| 348 text_input_.reset(new pp::TextInput_Dev(this)); | 344 text_input_.reset(new pp::TextInput_Dev(this)); |
| 349 | 345 |
| 350 const char* stream_url = nullptr; | 346 const char* stream_url = nullptr; |
| 351 const char* original_url = nullptr; | 347 const char* original_url = nullptr; |
| 352 const char* headers = nullptr; | 348 const char* headers = nullptr; |
| 353 bool is_material = false; | |
| 354 for (uint32_t i = 0; i < argc; ++i) { | 349 for (uint32_t i = 0; i < argc; ++i) { |
| 350 bool success = true; |
| 355 if (strcmp(argn[i], "src") == 0) | 351 if (strcmp(argn[i], "src") == 0) |
| 356 original_url = argv[i]; | 352 original_url = argv[i]; |
| 357 else if (strcmp(argn[i], "stream-url") == 0) | 353 else if (strcmp(argn[i], "stream-url") == 0) |
| 358 stream_url = argv[i]; | 354 stream_url = argv[i]; |
| 359 else if (strcmp(argn[i], "headers") == 0) | 355 else if (strcmp(argn[i], "headers") == 0) |
| 360 headers = argv[i]; | 356 headers = argv[i]; |
| 361 else if (strcmp(argn[i], "is-material") == 0) | 357 else if (strcmp(argn[i], "background-color") == 0) |
| 362 is_material = true; | 358 success = base::HexStringToUInt(argv[i], &background_color_); |
| 363 else if (strcmp(argn[i], "top-toolbar-height") == 0) | 359 else if (strcmp(argn[i], "top-toolbar-height") == 0) |
| 364 base::StringToInt(argv[i], &top_toolbar_height_); | 360 success = base::StringToInt(argv[i], &top_toolbar_height_); |
| 361 |
| 362 if (!success) |
| 363 return false; |
| 365 } | 364 } |
| 366 | 365 |
| 367 if (is_material) | |
| 368 background_color_ = kBackgroundColorMaterial; | |
| 369 else | |
| 370 background_color_ = kBackgroundColor; | |
| 371 | |
| 372 if (!original_url) | 366 if (!original_url) |
| 373 return false; | 367 return false; |
| 374 | 368 |
| 375 if (!stream_url) | 369 if (!stream_url) |
| 376 stream_url = original_url; | 370 stream_url = original_url; |
| 377 | 371 |
| 378 // If we're in print preview mode we don't need to load the document yet. | 372 // If we're in print preview mode we don't need to load the document yet. |
| 379 // A |kJSResetPrintPreviewModeType| message will be sent to the plugin letting | 373 // A |kJSResetPrintPreviewModeType| message will be sent to the plugin letting |
| 380 // it know the url to load. By not loading here we avoid loading the same | 374 // it know the url to load. By not loading here we avoid loading the same |
| 381 // document twice. | 375 // document twice. |
| (...skipping 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 const pp::FloatPoint& scroll_offset) { | 1432 const pp::FloatPoint& scroll_offset) { |
| 1439 float max_x = document_size_.width() * zoom_ - plugin_dip_size_.width(); | 1433 float max_x = document_size_.width() * zoom_ - plugin_dip_size_.width(); |
| 1440 float x = std::max(std::min(scroll_offset.x(), max_x), 0.0f); | 1434 float x = std::max(std::min(scroll_offset.x(), max_x), 0.0f); |
| 1441 float min_y = -top_toolbar_height_; | 1435 float min_y = -top_toolbar_height_; |
| 1442 float max_y = document_size_.height() * zoom_ - plugin_dip_size_.height(); | 1436 float max_y = document_size_.height() * zoom_ - plugin_dip_size_.height(); |
| 1443 float y = std::max(std::min(scroll_offset.y(), max_y), min_y); | 1437 float y = std::max(std::min(scroll_offset.y(), max_y), min_y); |
| 1444 return pp::FloatPoint(x, y); | 1438 return pp::FloatPoint(x, y); |
| 1445 } | 1439 } |
| 1446 | 1440 |
| 1447 } // namespace chrome_pdf | 1441 } // namespace chrome_pdf |
| OLD | NEW |