diff options
author | amanda@chromium.org <amanda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-11 08:04:56 +0000 |
---|---|---|
committer | amanda@chromium.org <amanda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-11 08:04:56 +0000 |
commit | e71e42c6289e5cc876f16333d5747fc473bf8e74 (patch) | |
tree | a0106a73aae73590620f5fcc41c04e766ed8cd1c /webkit/default_plugin | |
parent | 39b8c513b6e13e4ac01f1229f8f39c095091a9d4 (diff) | |
download | chromium_src-e71e42c6289e5cc876f16333d5747fc473bf8e74.zip chromium_src-e71e42c6289e5cc876f16333d5747fc473bf8e74.tar.gz chromium_src-e71e42c6289e5cc876f16333d5747fc473bf8e74.tar.bz2 |
Add an #if around user_gesture_msg_factory_ to unbreak the Linux
build, add another missed file (plugin_impl_mac.h) to unbreak the
Mac build.
Review URL: http://codereview.chromium.org/21245
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9561 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/default_plugin')
-rw-r--r-- | webkit/default_plugin/plugin_impl_mac.h | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/webkit/default_plugin/plugin_impl_mac.h b/webkit/default_plugin/plugin_impl_mac.h new file mode 100644 index 0000000..f51e5e7 --- /dev/null +++ b/webkit/default_plugin/plugin_impl_mac.h @@ -0,0 +1,326 @@ +// Copyright (c) 2009 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 WEBKIT_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ +#define WEBKIT_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ + +#include <string> +#include <vector> + +#include "base/logging.h" +#include "third_party/npapi/bindings/npapi.h" +// #include "webkit/default_plugin/install_dialog.h" +// #include "webkit/default_plugin/plugin_database_handler.h" +// #include "webkit/default_plugin/plugin_install_job_monitor.h" + +// Possible plugin installer states. +enum PluginInstallerState { + PluginInstallerStateUndefined, + PluginListDownloadInitiated, + PluginListDownloaded, + PluginListDownloadedPluginNotFound, + PluginListDownloadFailed, + PluginDownloadInitiated, + PluginDownloadCompleted, + PluginDownloadFailed, + PluginInstallerLaunchSuccess, + PluginInstallerLaunchFailure +}; + +class PluginInstallDialog; +class PluginDatabaseHandler; + +// Provides the plugin installation functionality. This class is +// instantiated with the information like the mime type of the +// target plugin, the display mode, etc. +class PluginInstallerImpl { + public: + // mode is the plugin instantiation mode, i.e. whether it is a full + // page plugin (NP_FULL) or an embedded plugin (NP_EMBED) + explicit PluginInstallerImpl(int16 mode); + virtual ~PluginInstallerImpl(); + + // Initializes the plugin with the instance information, mime type + // and the list of parameters passed down to the plugin from the webpage. + // + // Parameters: + // module_handle + // The handle to the dll in which this object is instantiated. + // instance + // The plugins opaque instance handle. + // mime_type + // Identifies the third party plugin which would be eventually installed. + // argc + // Indicates the count of arguments passed in from the webpage. + // argv + // Pointer to the arguments. + // Returns true on success. + bool Initialize(void *module_handle, NPP instance, NPMIMEType mime_type, + int16 argc, char* argn[], char* argv[]); + + // Displays the default plugin UI. + // + // Parameters: + // parent_window + // Handle to the parent window. + bool SetWindow(gfx::NativeView parent_view); + + // Destroys the install dialog and the plugin window. + void Shutdown(); + + // Starts plugin download. Spawns the plugin installer after it is + // downloaded. + void DownloadPlugin(); + + // Indicates that the plugin download was cancelled. + void DownloadCancelled(); + + // Initializes the plugin download stream. + // + // Parameters: + // stream + // Pointer to the new stream being created. + void NewStream(NPStream* stream); + + // Uninitializes the plugin download stream. + // + // Parameters: + // stream + // Pointer to the stream being destroyed. + // reason + // Indicates why the stream is being destroyed. + // + void DestroyStream(NPStream* stream, NPError reason); + + // Determines whether the plugin is ready to accept data. + // We only accept data when we have initiated a download for the plugin + // database. + // + // Parameters: + // stream + // Pointer to the stream being destroyed. + // Returns true if the plugin is ready to accept data. + bool WriteReady(NPStream* stream); + + // Delivers data to the plugin instance. + // + // Parameters: + // stream + // Pointer to the stream being destroyed. + // offset + // Indicates the data offset. + // buffer_length + // Indicates the length of the data buffer. + // buffer + // Pointer to the actual buffer. + // Returns the number of bytes actually written, 0 on error. + int32 Write(NPStream* stream, int32 offset, int32 buffer_length, + void* buffer); + + // Handles notifications received in response to GetURLNotify calls issued + // by the plugin. + // + // Parameters: + // url + // Pointer to the URL. + // reason + // Describes why the notification was sent. + void URLNotify(const char* url, NPReason reason); + + // gfx::NativeView window() const { return m_hWnd; } + const std::string& mime_type() const { return mime_type_; } + + // Replaces a resource string with the placeholder passed in as an argument + // + // Parameters: + // message_id_with_placeholders + // The resource id of the string with placeholders. This is only used if + // the placeholder string (the replacement_string) parameter is valid. + // message_id_without_placeholders + // The resource id of the string to be returned if the placeholder is + // empty. + // replacement_string + // The placeholder which replaces tokens in the string identified by + // resource id message_id_with_placeholders. + // Returns a string which has the placeholders replaced, or the string + // without placeholders. + static std::wstring ReplaceStringForPossibleEmptyReplacement( + int message_id_with_placeholders, int message_id_without_placeholders, + const std::wstring& replacement_string); + + // Setter/getter combination to set and retreieve the current + // state of the plugin installer. + void set_plugin_installer_state(PluginInstallerState new_state) { + plugin_installer_state_ = new_state; + } + + PluginInstallerState plugin_installer_state() const { + return plugin_installer_state_; + } + + // Getter for the NPP instance member. + const NPP instance() const { + return instance_; + } + + // Returns whether or not the UI layout is right-to-left (such as Hebrew or + // Arabic). + bool IsRTLLayout() const; + + protected: + // Displays the plugin install confirmation dialog. + void ShowInstallDialog(); + + // Clears the current display state. + void ClearDisplay(); + + // Displays the status message identified by the message resource id + // passed in. + // + // Parameters: + // message_resource_id parameter + // The resource id of the message to be displayed. + void DisplayStatus(int message_resource_id); + + // Displays status information for the third party plugin which is needed + // by the page. + void DisplayAvailablePluginStatus(); + + // Displays information related to third party plugin download failure. + void DisplayPluginDownloadFailedStatus(); + + // Enables the plugin window if required and initiates an update of the + // the plugin window. + void RefreshDisplay(); + + // Create tooltip window. + bool CreateToolTip(); + + // Update ToolTip text with the message shown inside the default plugin. + void UpdateToolTip(); + + // Resolves the relative URL (could be already an absolute URL too) to return + // full URL based on current document's URL and base. + // + // Parameters: + // instance + // The plugins opaque instance handle. + // relative_url + // The URL to be resolved. + // Returns the resolved URL. + std::string ResolveURL(NPP instance, const std::string& relative_url); + + // Initializes resources like the icon, fonts, etc needed by the plugin + // installer + // + // Parameters: + // module_handle + // Handle to the dll in which this object is instantiated. + // Returns true on success. + bool InitializeResources(void *module_handle); + + // Parses the plugin instantiation arguments. This includes checking for + // whether this is an activex install and reading the appropriate + // arguments like codebase, etc. For plugin installs we download the + // plugin finder URL and initalize the mime type and the plugin instance + // info. + // + // Parameters: + // module_handle + // The handle to the dll in which this object is instantiated. + // instance + // The plugins opaque instance handle. + // mime_type + // Identifies the third party plugin which would be eventually installed. + // argc + // Indicates the count of arguments passed in from the webpage. + // argv + // Pointer to the arguments. + // raw_activex_clsid + // Output parameter which contains the CLSID of the Activex plugin needed. + // This is only applicable if the webpage specifically requests an ActiveX + // control. + // Returns true on success. + bool ParseInstantiationArguments(NPMIMEType mime_type, NPP instance, + int16 argc, char* argn[], char* argv[], + std::string* raw_activex_clsid); + + // Paints user action messages to the plugin window. These include messages + // like whether the user should click on the plugin window to download the + // plugin, etc. + // + // Parameters: + // paint_dc + // The device context returned in BeginPaint. + // x_origin + // Horizontal reference point indicating where the text is to be displayed. + // y_origin + // Vertical reference point indicating where the text is to be displayed. + // + void PaintUserActionInformation(gfx::NativeDrawingContext paint_dc, + int x_origin, int y_origin); + + private: + // Notify the renderer that plugin is available to download. + void NotifyPluginStatus(int status); + + // The plugins opaque instance handle + NPP instance_; + // If this is to install activex + bool is_activex_; + // The plugin instantiation mode (NP_FULL or NP_EMBED) + int16 mode_; + // The handle to the icon displayed in the plugin installation window. + // HICON icon_; + // The Get plugin link message string displayed at the top left corner of + // the plugin window. + std::wstring get_plugin_link_message_; + // The command string displayed in the plugin installation window. + std::wstring command_; + // An additional message displayed at times by the plugin. + std::wstring optional_additional_message_; + // The current stream. + NPStream* plugin_install_stream_; + // The plugin finder URL. + std::string plugin_finder_url_; + // The desired mime type. + std::string mime_type_; + // The desired language. + std::string desired_language_; + // The plugin name. + std::wstring plugin_name_; + // The actual download URL. + std::string plugin_download_url_; + // Indicates if the plugin download URL points to an exe. + bool plugin_download_url_for_display_; + // The current state of the plugin installer. + PluginInstallerState plugin_installer_state_; + // Used to display the UI for plugin installation. + // PluginInstallDialog install_dialog_; + // To enable auto refresh of the plugin window once the installation + // is complete, we spawn the installation process in a job, and monitor + // IO completion events on the job. When the active process count of the + // job falls to zero, we initiate an auto refresh of the plugin list + // which enables the downloaded plugin to be instantiated. + // The completion events from the job are monitored in an independent + // thread. + // scoped_refptr<PluginInstallationJobMonitorThread> + // installation_job_monitor_thread_; + // This object handles download and parsing of the plugins database. + // PluginDatabaseHandler plugin_database_handler_; + // Indicates if the left click to download/refresh should be enabled or not. + bool enable_click_; + // Handles to the fonts used to display text in the plugin window. + // HFONT bold_font_; + // HFONT regular_font_; + // HFONT underline_font_; + // Tooltip Window. + gfx::NativeWindow tooltip_; + + DISALLOW_EVIL_CONSTRUCTORS(PluginInstallerImpl); +}; + + +#endif // WEBKIT_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ + |