| Index: webkit/default_plugin/plugin_impl_gtk.h
|
| diff --git a/webkit/default_plugin/plugin_impl_gtk.h b/webkit/default_plugin/plugin_impl_gtk.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7e2113be93191a68b2edd6c1d03fc294d240f9ff
|
| --- /dev/null
|
| +++ b/webkit/default_plugin/plugin_impl_gtk.h
|
| @@ -0,0 +1,283 @@
|
| +// Copyright (c) 2010 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_GTK_H_
|
| +#define WEBKIT_DEFAULT_PLUGIN_PLUGIN_IMPL_GTK_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include <gtk/gtk.h>
|
| +
|
| +#include "gfx/native_widget_types.h"
|
| +#include "third_party/npapi/bindings/npapi.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[]);
|
| +
|
| + // Informs the plugin of its window information.
|
| + //
|
| + // Parameters:
|
| + // window_info
|
| + // The window info passed to npapi.
|
| + bool NPP_SetWindow(NPWindow* window_info);
|
| +
|
| + // Destroys the install dialog.
|
| + 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);
|
| +
|
| + // Used by the renderer to indicate plugin install through the infobar.
|
| + int16 NPP_HandleEvent(void* event);
|
| +
|
| + 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_;
|
| + // The current stream.
|
| + NPStream* plugin_install_stream_;
|
| + // The desired mime type.
|
| + std::string mime_type_;
|
| + // The current state of the plugin installer.
|
| + PluginInstallerState plugin_installer_state_;
|
| + // GtkPlug containing everything in the plugin.
|
| + GtkWidget* container_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PluginInstallerImpl);
|
| +};
|
| +
|
| +#endif // WEBKIT_DEFAULT_PLUGIN_PLUGIN_IMPL_GTK_H_
|
|
|