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

Unified Diff: pdf/instance.h

Issue 1125103002: Remove the in-process PDF viewer from pdf/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove-in-process-instance
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pdf/fading_controls.cc ('k') | pdf/instance.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pdf/instance.h
diff --git a/pdf/instance.h b/pdf/instance.h
deleted file mode 100644
index daded88694bf8951394bd59e3b1dae1c7c8a70b8..0000000000000000000000000000000000000000
--- a/pdf/instance.h
+++ /dev/null
@@ -1,539 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PDF_INSTANCE_H_
-#define PDF_INSTANCE_H_
-
-#include <queue>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "pdf/button.h"
-#include "pdf/fading_controls.h"
-#include "pdf/page_indicator.h"
-#include "pdf/paint_manager.h"
-#include "pdf/pdf_engine.h"
-#include "pdf/preview_mode_client.h"
-#include "pdf/progress_control.h"
-#include "pdf/thumbnail_control.h"
-
-#include "ppapi/c/private/ppb_pdf.h"
-#include "ppapi/c/private/ppp_pdf.h"
-#include "ppapi/cpp/dev/printing_dev.h"
-#include "ppapi/cpp/dev/scriptable_object_deprecated.h"
-#include "ppapi/cpp/dev/scrollbar_dev.h"
-#include "ppapi/cpp/dev/selection_dev.h"
-#include "ppapi/cpp/dev/widget_client_dev.h"
-#include "ppapi/cpp/dev/zoom_dev.h"
-#include "ppapi/cpp/graphics_2d.h"
-#include "ppapi/cpp/image_data.h"
-#include "ppapi/cpp/input_event.h"
-#include "ppapi/cpp/private/find_private.h"
-#include "ppapi/cpp/private/instance_private.h"
-#include "ppapi/cpp/private/var_private.h"
-#include "ppapi/cpp/url_loader.h"
-#include "ppapi/utility/completion_callback_factory.h"
-
-namespace pp {
-class TextInput_Dev;
-}
-
-namespace chrome_pdf {
-
-struct ToolbarButtonInfo;
-
-class Instance : public pp::InstancePrivate,
- public pp::Find_Private,
- public pp::Printing_Dev,
- public pp::Selection_Dev,
- public pp::WidgetClient_Dev,
- public pp::Zoom_Dev,
- public PaintManager::Client,
- public PDFEngine::Client,
- public PreviewModeClient::Client,
- public ControlOwner {
- public:
- explicit Instance(PP_Instance instance);
- ~Instance() override;
-
- // pp::Instance implementation.
- bool Init(uint32_t argc,
- const char* argn[],
- const char* argv[]) override;
- bool HandleDocumentLoad(const pp::URLLoader& loader) override;
- bool HandleInputEvent(const pp::InputEvent& event) override;
- void DidChangeView(const pp::View& view) override;
- pp::Var GetInstanceObject() override;
-
- // pp::Find_Private implementation.
- bool StartFind(const std::string& text, bool case_sensitive) override;
- void SelectFindResult(bool forward) override;
- void StopFind() override;
-
- // pp::PaintManager::Client implementation.
- void OnPaint(const std::vector<pp::Rect>& paint_rects,
- std::vector<PaintManager::ReadyRect>* ready,
- std::vector<pp::Rect>* pending) override;
-
- // pp::Printing_Dev implementation.
- uint32_t QuerySupportedPrintOutputFormats() override;
- int32_t PrintBegin(
- const PP_PrintSettings_Dev& print_settings) override;
- pp::Resource PrintPages(
- const PP_PrintPageNumberRange_Dev* page_ranges,
- uint32_t page_range_count) override;
- void PrintEnd() override;
- bool IsPrintScalingDisabled() override;
-
- // pp::Private implementation.
- virtual pp::Var GetLinkAtPosition(const pp::Point& point);
- virtual void GetPrintPresetOptionsFromDocument(
- PP_PdfPrintPresetOptions_Dev* options);
-
- // PPP_Selection_Dev implementation.
- pp::Var GetSelectedText(bool html) override;
-
- // WidgetClient_Dev implementation.
- void InvalidateWidget(pp::Widget_Dev widget,
- const pp::Rect& dirty_rect) override;
- void ScrollbarValueChanged(pp::Scrollbar_Dev scrollbar,
- uint32_t value) override;
- void ScrollbarOverlayChanged(pp::Scrollbar_Dev scrollbar,
- bool overlay) override;
-
- // pp::Zoom_Dev implementation.
- void Zoom(double scale, bool text_only) override;
- void ZoomChanged(double factor); // Override.
-
- void FlushCallback(int32_t result);
- void DidOpen(int32_t result);
- void DidOpenPreview(int32_t result);
- // If the given widget intersects the rectangle, paints it and adds the
- // rect to ready.
- void PaintIfWidgetIntersects(pp::Widget_Dev* widget,
- const pp::Rect& rect,
- std::vector<PaintManager::ReadyRect>* ready,
- std::vector<pp::Rect>* pending);
-
- // Called when the timer is fired.
- void OnTimerFired(int32_t);
- void OnClientTimerFired(int32_t id);
-
- // Called when the control timer is fired.
- void OnControlTimerFired(int32_t,
- const uint32& control_id,
- const uint32& timer_id);
-
- // Called to print without re-entrancy issues.
- void OnPrint(int32_t);
-
- // PDFEngine::Client implementation.
- void DocumentSizeUpdated(const pp::Size& size) override;
- void Invalidate(const pp::Rect& rect) override;
- void Scroll(const pp::Point& point) override;
- void ScrollToX(int position) override;
- void ScrollToY(int position) override;
- void ScrollToPage(int page) override;
- void NavigateTo(const std::string& url, bool open_in_new_tab) override;
- void UpdateCursor(PP_CursorType_Dev cursor) override;
- void UpdateTickMarks(const std::vector<pp::Rect>& tickmarks) override;
- void NotifyNumberOfFindResultsChanged(int total, bool final_result) override;
- void NotifySelectedFindResultChanged(int current_find_index) override;
- void GetDocumentPassword(
- pp::CompletionCallbackWithOutput<pp::Var> callback) override;
- void Alert(const std::string& message) override;
- bool Confirm(const std::string& message) override;
- std::string Prompt(const std::string& question,
- const std::string& default_answer) override;
- std::string GetURL() override;
- void Email(const std::string& to,
- const std::string& cc,
- const std::string& bcc,
- const std::string& subject,
- const std::string& body) override;
- void Print() override;
- void SubmitForm(const std::string& url,
- const void* data,
- int length) override;
- std::string ShowFileSelectionDialog();
- pp::URLLoader CreateURLLoader() override;
- void ScheduleCallback(int id, int delay_in_ms) override;
- void SearchString(const base::char16* string,
- const base::char16* term,
- bool case_sensitive,
- std::vector<SearchStringResult>* results) override;
- void DocumentPaintOccurred() override;
- void DocumentLoadComplete(int page_count) override;
- void DocumentLoadFailed() override;
- pp::Instance* GetPluginInstance() override;
- void DocumentHasUnsupportedFeature(const std::string& feature) override;
- void DocumentLoadProgress(uint32 available, uint32 doc_size) override;
- void FormTextFieldFocusChange(bool in_focus) override;
- bool IsPrintPreview() override;
- uint32 GetBackgroundColor() override;
-
- // ControlOwner implementation.
- void OnEvent(uint32 control_id, uint32 event_id, void* data) override;
- void Invalidate(uint32 control_id, const pp::Rect& rc) override;
- uint32 ScheduleTimer(uint32 control_id, uint32 timeout_ms) override;
- void SetEventCapture(uint32 control_id, bool set_capture) override;
- void SetCursor(uint32 control_id, PP_CursorType_Dev cursor_type) override;
- pp::Instance* GetInstance() override;
-
- bool dont_paint() const { return dont_paint_; }
- void set_dont_paint(bool dont_paint) { dont_paint_ = dont_paint; }
-
- // Called by PDFScriptableObject.
- bool HasScriptableMethod(const pp::Var& method, pp::Var* exception);
- pp::Var CallScriptableMethod(const pp::Var& method,
- const std::vector<pp::Var>& args,
- pp::Var* exception);
-
- // PreviewModeClient::Client implementation.
- void PreviewDocumentLoadComplete() override;
- void PreviewDocumentLoadFailed() override;
-
- // Helper functions for implementing PPP_PDF.
- void RotateClockwise();
- void RotateCounterclockwise();
-
- // Helper function to inform when mouse pointer is on scrollbar, returns true
- // when mouse is on vertical or horizaontal scrollbar else returns false.
- bool IsMouseOnScrollbar(const pp::InputEvent& event);
-
- private:
- // Called whenever the plugin geometry changes to update the location of the
- // scrollbars, background parts, and notifies the pdf engine.
- void OnGeometryChanged(double old_zoom, float old_device_scale);
-
- // Runs the given JS callback given in |callback|.
- void RunCallback(int32_t, pp::Var callback);
-
- void CreateHorizontalScrollbar();
- void CreateVerticalScrollbar();
- void DestroyHorizontalScrollbar();
- void DestroyVerticalScrollbar();
-
- // Returns the thickness of a scrollbar. This returns the thickness when it's
- // shown, so for overlay scrollbars it'll still be non-zero.
- int GetScrollbarThickness();
-
- // Returns the space we need to reserve for the scrollbar in the plugin area.
- // If overlay scrollbars are used, this will be 0.
- int GetScrollbarReservedThickness();
-
- // Returns true if overlay scrollbars are in use.
- bool IsOverlayScrollbar();
-
- // Figures out the location of any background rectangles (i.e. those that
- // aren't painted by the PDF engine).
- void CalculateBackgroundParts();
-
- // Computes document width/height in device pixels, based on current zoom and
- // device scale
- int GetDocumentPixelWidth() const;
- int GetDocumentPixelHeight() const;
-
- // Draws a rectangle with the specified dimensions and color in our buffer.
- void FillRect(const pp::Rect& rect, uint32 color);
-
- std::vector<pp::ImageData> GetThumbnailResources();
- std::vector<pp::ImageData> GetProgressBarResources(pp::ImageData* background);
-
- void CreateToolbar(const ToolbarButtonInfo* tb_info, size_t size);
- int GetToolbarRightOffset();
- int GetToolbarBottomOffset();
- void CreateProgressBar();
- void ConfigureProgressBar();
- void CreateThumbnails();
- void CreatePageIndicator(bool always_visible);
- void ConfigurePageIndicator();
-
- void PaintOverlayControl(Control* ctrl,
- pp::ImageData* image_data,
- std::vector<PaintManager::ReadyRect>* ready);
-
- void LoadUrl(const std::string& url);
- void LoadPreviewUrl(const std::string& url);
- void LoadUrlInternal(const std::string& url, pp::URLLoader* loader,
- void (Instance::* method)(int32_t));
-
- // Creates a URL loader and allows it to access all urls, i.e. not just the
- // frame's origin.
- pp::URLLoader CreateURLLoaderInternal();
-
- // Figure out the initial page to display based on #page=N and #nameddest=foo
- // in the |url_|.
- // Returns -1 if there is no valid fragment. The returned value is 0-based,
- // whereas page=N is 1-based.
- int GetInitialPage(const std::string& url);
-
- void UpdateToolbarPosition(bool invalidate);
- void UpdateProgressBarPosition(bool invalidate);
- void UpdatePageIndicatorPosition(bool invalidate);
-
- void FormDidOpen(int32_t result);
-
- std::string GetLocalizedString(PP_ResourceString id);
-
- void UserMetricsRecordAction(const std::string& action);
-
- void SaveAs();
-
- enum ZoomMode {
- ZOOM_SCALE, // Standard zooming mode, resize will not affect it.
- ZOOM_FIT_TO_WIDTH, // Maintain fit to width on resize.
- ZOOM_FIT_TO_PAGE, // Maintain fit to page on resize.
- ZOOM_AUTO // Maintain the default auto fitting mode on resize.
- };
-
- enum DocumentLoadState {
- LOAD_STATE_LOADING,
- LOAD_STATE_COMPLETE,
- LOAD_STATE_FAILED,
- };
-
- // Set new zoom mode and scale. Scale will be ignored if mode != ZOOM_SCALE.
- void SetZoom(ZoomMode zoom_mode, double scale);
-
- // Updates internal zoom scale based on the plugin/document geometry and
- // current mode.
- void UpdateZoomScale();
-
- // Simulates how Chrome "snaps" zooming up/down to the next nearest zoom level
- // when the previous zoom level wasn't an integer. We do this so that
- // pressing the zoom buttons has the same effect as the menu buttons, even if
- // we start from a non-standard zoom level because of fit-width or fit-height.
- double CalculateZoom(uint32 control_id) const;
-
- pp::ImageData CreateResourceImage(PP_ResourceImage image_id);
-
- void DrawText(const pp::Point& top_center, PP_ResourceString id);
-
- // Set print preview mode, where the current PDF document is reduced to
- // only one page, and then extended to |page_count| pages with
- // |page_count| - 1 blank pages.
- void SetPrintPreviewMode(int page_count);
-
- // Returns the page number to be displayed in the page indicator. If the
- // plugin is running within print preview, the displayed number might be
- // different from the index of the displayed page.
- int GetPageNumberToDisplay();
-
- // Process the preview page data information. |src_url| specifies the preview
- // page data location. The |src_url| is in the format:
- // chrome://print/id/page_number/print.pdf
- // |dst_page_index| specifies the blank page index that needs to be replaced
- // with the new page data.
- void ProcessPreviewPageInfo(const std::string& src_url, int dst_page_index);
- // Load the next available preview page into the blank page.
- void LoadAvailablePreviewPage();
-
- // Enables autoscroll using origin as a neutral (center) point.
- void EnableAutoscroll(const pp::Point& origin);
- // Disables autoscroll and returns to normal functionality.
- void DisableAutoscroll();
- // Calculate autoscroll info and return proper mouse pointer and scroll
- // andjustments.
- PP_CursorType_Dev CalculateAutoscroll(const pp::Point& mouse_pos);
-
- void ConfigureNumberImageGenerator();
-
- NumberImageGenerator* number_image_generator();
-
- int GetScaled(int x) const;
-
- pp::ImageData image_data_;
- // Used when the plugin is embedded in a page and we have to create the loader
- // ourself.
- pp::CompletionCallbackFactory<Instance> loader_factory_;
- pp::URLLoader embed_loader_;
- pp::URLLoader embed_preview_loader_;
-
- scoped_ptr<pp::Scrollbar_Dev> h_scrollbar_;
- scoped_ptr<pp::Scrollbar_Dev> v_scrollbar_;
- int32 valid_v_range_;
-
- PP_CursorType_Dev cursor_; // The current cursor.
-
- // Used when selecting and dragging beyond the visible portion, in which case
- // we want to scroll the document.
- bool timer_pending_;
- pp::MouseInputEvent last_mouse_event_;
- pp::CompletionCallbackFactory<Instance> timer_factory_;
- uint32 current_timer_id_;
-
- // Size, in pixels, of plugin rectangle.
- pp::Size plugin_size_;
- // Size, in DIPs, of plugin rectangle.
- pp::Size plugin_dip_size_;
- // Remaining area, in pixels, to render the pdf in after accounting for
- // scrollbars/toolbars and horizontal centering.
- pp::Rect available_area_;
- // Size of entire document in pixels (i.e. if each page is 800 pixels high and
- // there are 10 pages, the height will be 8000).
- pp::Size document_size_;
-
- double zoom_; // Current zoom factor.
-
- float device_scale_; // Current device scale factor.
- bool printing_enabled_;
- bool hidpi_enabled_;
- // True if the plugin is full-page.
- bool full_;
- // Zooming mode (none, fit to width, fit to height)
- ZoomMode zoom_mode_;
-
- // If true, this means we told the RenderView that we're starting a network
- // request so that it can start the throbber. We will tell it again once the
- // document finishes loading.
- bool did_call_start_loading_;
-
- // Hold off on painting invalidated requests while this flag is true.
- bool dont_paint_;
-
- // Indicates if plugin is in autoscroll mode.
- bool is_autoscroll_;
- // Rect for autoscroll anchor.
- pp::Rect autoscroll_rect_;
- // Image of the autoscroll anchor and its background.
- pp::ImageData autoscroll_anchor_;
- // Autoscrolling deltas in pixels.
- int autoscroll_x_;
- int autoscroll_y_;
-
- // Thickness of a scrollbar.
- int scrollbar_thickness_;
-
- // Reserved thickness of a scrollbar. This is how much space the scrollbar
- // takes from the available area. 0 for overlay.
- int scrollbar_reserved_thickness_;
-
- // Used to remember which toolbar is in use
- const ToolbarButtonInfo* current_tb_info_;
- size_t current_tb_info_size_;
-
- PaintManager paint_manager_;
-
- struct BackgroundPart {
- pp::Rect location;
- uint32 color;
- };
- std::vector<BackgroundPart> background_parts_;
-
- struct PrintSettings {
- PrintSettings() {
- Clear();
- }
- void Clear() {
- is_printing = false;
- print_pages_called_ = false;
- memset(&pepper_print_settings, 0, sizeof(pepper_print_settings));
- }
- // This is set to true when PrintBegin is called and false when PrintEnd is
- // called.
- bool is_printing;
- // To know whether this was an actual print operation, so we don't double
- // count UMA logging.
- bool print_pages_called_;
- PP_PrintSettings_Dev pepper_print_settings;
- };
-
- PrintSettings print_settings_;
-
- scoped_ptr<PDFEngine> engine_;
-
- // This engine is used to render the individual preview page data. This is
- // used only in print preview mode. This will use |PreviewModeClient|
- // interface which has very limited access to the pp::Instance.
- scoped_ptr<PDFEngine> preview_engine_;
-
- std::string url_;
-
- scoped_ptr<FadingControls> toolbar_;
- ThumbnailControl thumbnails_;
- ProgressControl progress_bar_;
- uint32 delayed_progress_timer_id_;
- PageIndicator page_indicator_;
-
- // Used for creating images from numbers.
- scoped_ptr<NumberImageGenerator> number_image_generator_;
-
- // Used for submitting forms.
- pp::CompletionCallbackFactory<Instance> form_factory_;
- pp::URLLoader form_loader_;
-
- // Used for generating callbacks.
- // TODO(raymes): We don't really need other callback factories we can just
- // fold them into this one.
- pp::CompletionCallbackFactory<Instance> callback_factory_;
-
- // True if we haven't painted the plugin viewport yet.
- bool first_paint_;
-
- // True when we've painted at least one page from the document.
- bool painted_first_page_;
-
- // True if we should display page indicator, false otherwise
- bool show_page_indicator_;
-
- // Callback when the document load completes.
- pp::Var on_load_callback_;
- pp::Var on_scroll_callback_;
- pp::Var on_plugin_size_changed_callback_;
-
- DocumentLoadState document_load_state_;
- DocumentLoadState preview_document_load_state_;
-
- // JavaScript interface to control this instance.
- // This wraps a PDFScriptableObject in a pp::Var.
- pp::VarPrivate instance_object_;
-
- // Used so that we only tell the browser once about an unsupported feature, to
- // avoid the infobar going up more than once.
- bool told_browser_about_unsupported_feature_;
-
- // Keeps track of which unsupported features we reported, so we avoid spamming
- // the stats if a feature shows up many times per document.
- std::set<std::string> unsupported_features_reported_;
-
- // Number of pages in print preview mode, 0 if not in print preview mode.
- int print_preview_page_count_;
- std::vector<int> print_preview_page_numbers_;
-
- // Used to manage loaded print preview page information. A |PreviewPageInfo|
- // consists of data source url string and the page index in the destination
- // document.
- typedef std::pair<std::string, int> PreviewPageInfo;
- std::queue<PreviewPageInfo> preview_pages_info_;
-
- // Used to signal the browser about focus changes to trigger the OSK.
- // TODO(abodenha@chromium.org) Implement full IME support in the plugin.
- // http://crbug.com/132565
- scoped_ptr<pp::TextInput_Dev> text_input_;
-};
-
-// This implements the JavaScript class entrypoint for the plugin instance.
-// This class is just a thin wrapper. It delegates relevant methods to Instance.
-class PDFScriptableObject : public pp::deprecated::ScriptableObject {
- public:
- explicit PDFScriptableObject(Instance* instance);
- virtual ~PDFScriptableObject();
-
- // pp::deprecated::ScriptableObject implementation.
- virtual bool HasMethod(const pp::Var& method, pp::Var* exception);
- virtual pp::Var Call(const pp::Var& method,
- const std::vector<pp::Var>& args,
- pp::Var* exception);
-
- private:
- Instance* instance_;
-};
-
-} // namespace chrome_pdf
-
-#endif // PDF_INSTANCE_H_
« no previous file with comments | « pdf/fading_controls.cc ('k') | pdf/instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698