diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/plugins/PluginView.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/plugins/PluginView.h')
-rw-r--r-- | Source/WebCore/plugins/PluginView.h | 429 |
1 files changed, 0 insertions, 429 deletions
diff --git a/Source/WebCore/plugins/PluginView.h b/Source/WebCore/plugins/PluginView.h deleted file mode 100644 index 5fd38d2fd..000000000 --- a/Source/WebCore/plugins/PluginView.h +++ /dev/null @@ -1,429 +0,0 @@ -/* - * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. - * Copyright (C) 2008 Collabora Ltd. All rights reserved. - * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef PluginView_h -#define PluginView_h - -#include "FrameLoadRequest.h" -#include "IntRect.h" -#include "MediaCanStartListener.h" -#include "PluginViewBase.h" -#include "ResourceRequest.h" -#include "Timer.h" -#include <wtf/HashMap.h> -#include <wtf/HashSet.h> -#include <wtf/OwnPtr.h> -#include <wtf/PassRefPtr.h> -#include <wtf/RefPtr.h> -#include <wtf/Vector.h> -#include <wtf/text/CString.h> - -#if ENABLE(NETSCAPE_PLUGIN_API) -#include "PluginStream.h" -#include "npruntime_internal.h" -#endif - -#if OS(WINDOWS) && PLATFORM(GTK) -typedef struct HWND__* HWND; -typedef HWND PlatformPluginWidget; -#else -typedef PlatformWidget PlatformPluginWidget; -#endif -#if PLATFORM(GTK) -typedef struct _GtkSocket GtkSocket; -#endif - -namespace JSC { - namespace Bindings { - class Instance; - } -} - -namespace WebCore { - class Frame; - class Image; - class HTMLPlugInElement; - class KeyboardEvent; - class MouseEvent; - class URL; -#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API) - class PluginMessageThrottlerWin; -#endif - class PluginPackage; - class PluginRequest; - class PluginStream; - class ResourceError; - class ResourceResponse; - class WheelEvent; - - enum PluginStatus { - PluginStatusCanNotFindPlugin, - PluginStatusCanNotLoadPlugin, - PluginStatusLoadedSuccessfully - }; - - class PluginRequest { - WTF_MAKE_NONCOPYABLE(PluginRequest); WTF_MAKE_FAST_ALLOCATED; - public: - PluginRequest(const FrameLoadRequest& frameLoadRequest, bool sendNotification, void* notifyData, bool shouldAllowPopups) - : m_frameLoadRequest(frameLoadRequest) - , m_notifyData(notifyData) - , m_sendNotification(sendNotification) - , m_shouldAllowPopups(shouldAllowPopups) { } - public: - const FrameLoadRequest& frameLoadRequest() const { return m_frameLoadRequest; } - void* notifyData() const { return m_notifyData; } - bool sendNotification() const { return m_sendNotification; } - bool shouldAllowPopups() const { return m_shouldAllowPopups; } - private: - FrameLoadRequest m_frameLoadRequest; - void* m_notifyData; - bool m_sendNotification; - bool m_shouldAllowPopups; - }; - - class PluginManualLoader { - public: - virtual ~PluginManualLoader() {} - virtual void didReceiveResponse(const ResourceResponse&) = 0; - virtual void didReceiveData(const char*, int) = 0; - virtual void didFinishLoading() = 0; - virtual void didFail(const ResourceError&) = 0; - }; - - class PluginView : public PluginViewBase -#if ENABLE(NETSCAPE_PLUGIN_API) - , private PluginStreamClient -#endif - , public PluginManualLoader - , private MediaCanStartListener { - public: - static PassRefPtr<PluginView> create(Frame* parentFrame, const IntSize&, HTMLPlugInElement*, const URL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually); - virtual ~PluginView(); - - PluginPackage* plugin() const { return m_plugin.get(); } -#if ENABLE(NETSCAPE_PLUGIN_API) - NPP instance() const { return m_instance; } -#endif - - void setNPWindowRect(const IntRect&); - static PluginView* currentPluginView(); - -#if ENABLE(NETSCAPE_PLUGIN_API) - NPObject* npObject(); -#endif - PassRefPtr<JSC::Bindings::Instance> bindingInstance(); - - PluginStatus status() const { return m_status; } - -#if ENABLE(NETSCAPE_PLUGIN_API) - // NPN functions - NPError getURLNotify(const char* url, const char* target, void* notifyData); - NPError getURL(const char* url, const char* target); - NPError postURLNotify(const char* url, const char* target, uint32_t len, const char* but, NPBool file, void* notifyData); - NPError postURL(const char* url, const char* target, uint32_t len, const char* but, NPBool file); - NPError newStream(NPMIMEType type, const char* target, NPStream** stream); - int32_t write(NPStream* stream, int32_t len, void* buffer); - NPError destroyStream(NPStream* stream, NPReason reason); -#endif - const char* userAgent(); -#if ENABLE(NETSCAPE_PLUGIN_API) - static const char* userAgentStatic(); -#endif - void status(const char* message); - -#if ENABLE(NETSCAPE_PLUGIN_API) - NPError getValue(NPNVariable variable, void* value); - static NPError getValueStatic(NPNVariable variable, void* value); - NPError setValue(NPPVariable variable, void* value); - NPError getValueForURL(NPNURLVariable variable, const char* url, char** value, uint32_t* len); - NPError setValueForURL(NPNURLVariable variable, const char* url, const char* value, uint32_t len); - NPError getAuthenticationInfo(const char* protocol, const char* host, int32_t port, const char* scheme, const char* realm, char** username, uint32_t* ulen, char** password, uint32_t* plen); - void invalidateRect(NPRect*); - void invalidateRegion(NPRegion); -#endif - void forceRedraw(); - void pushPopupsEnabledState(bool state); - void popPopupsEnabledState(); - - virtual void invalidateRect(const IntRect&); - - bool arePopupsAllowed() const; - - void setJavaScriptPaused(bool); - - void privateBrowsingStateChanged(bool); - - void disconnectStream(PluginStream*); - void streamDidFinishLoading(PluginStream* stream) { disconnectStream(stream); } - - // Widget functions - virtual void setFrameRect(const IntRect&); - virtual void frameRectsChanged(); - virtual void setFocus(bool); - virtual void show(); - virtual void hide(); - virtual void paint(GraphicsContext*, const IntRect&); - virtual void clipRectChanged() override; - - // This method is used by plugins on all platforms to obtain a clip rect that includes clips set by WebCore, - // e.g., in overflow:auto sections. The clip rects coordinates are in the containing window's coordinate space. - // This clip includes any clips that the widget itself sets up for its children. - IntRect windowClipRect() const; - - virtual void handleEvent(Event*); - virtual void setParent(ScrollView*); - virtual void setParentVisible(bool); - - virtual bool isPluginView() const override { return true; } - - Frame* parentFrame() const { return m_parentFrame.get(); } - - void focusPluginElement(); - - const String& pluginsPage() const { return m_pluginsPage; } - const String& mimeType() const { return m_mimeType; } - const URL& url() const { return m_url; } - -#if defined(XP_MACOSX) && ENABLE(NETSCAPE_PLUGIN_API) - bool popUpContextMenu(NPMenu*); -#endif - -#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API) - static LRESULT CALLBACK PluginViewWndProc(HWND, UINT, WPARAM, LPARAM); - LRESULT wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - WNDPROC pluginWndProc() const { return m_pluginWndProc; } -#endif - - // Used for manual loading - void didReceiveResponse(const ResourceResponse&); - void didReceiveData(const char*, int); - void didFinishLoading(); - void didFail(const ResourceError&); - - static bool isCallingPlugin(); - - bool start(); - -#if ENABLE(NETSCAPE_PLUGIN_API) - static void keepAlive(NPP); -#endif - void keepAlive(); - - private: - PluginView(Frame* parentFrame, const IntSize&, PluginPackage*, HTMLPlugInElement*, const URL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually); - - void setParameters(const Vector<String>& paramNames, const Vector<String>& paramValues); - bool startOrAddToUnstartedList(); - void init(); - bool platformStart(); - void stop(); - void platformDestroy(); - static void setCurrentPluginView(PluginView*); -#if ENABLE(NETSCAPE_PLUGIN_API) - NPError load(const FrameLoadRequest&, bool sendNotification, void* notifyData); - NPError handlePost(const char* url, const char* target, uint32_t len, const char* buf, bool file, void* notifyData, bool sendNotification, bool allowHeaders); - NPError handlePostReadFile(Vector<char>& buffer, uint32_t len, const char* buf); -#endif - static void freeStringArray(char** stringArray, int length); - void setCallingPlugin(bool) const; - - void invalidateWindowlessPluginRect(const IntRect&); - - virtual void mediaCanStart(); - -#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API) - void paintWindowedPluginIntoContext(GraphicsContext*, const IntRect&); - static HDC WINAPI hookedBeginPaint(HWND, PAINTSTRUCT*); - static BOOL WINAPI hookedEndPaint(HWND, const PAINTSTRUCT*); -#endif - -#if ENABLE(NETSCAPE_PLUGIN_API) - static bool platformGetValueStatic(NPNVariable variable, void* value, NPError* result); - bool platformGetValue(NPNVariable variable, void* value, NPError* result); -#endif - - RefPtr<Frame> m_parentFrame; - RefPtr<PluginPackage> m_plugin; - HTMLPlugInElement* m_element; - bool m_isStarted; - URL m_url; - PluginStatus m_status; - Vector<IntRect> m_invalidRects; - - void performRequest(PluginRequest*); - void scheduleRequest(PassOwnPtr<PluginRequest>); - void requestTimerFired(Timer<PluginView>*); - void invalidateTimerFired(Timer<PluginView>*); - Timer<PluginView> m_requestTimer; - Timer<PluginView> m_invalidateTimer; - - void popPopupsStateTimerFired(Timer<PluginView>*); - Timer<PluginView> m_popPopupsStateTimer; - - void lifeSupportTimerFired(Timer<PluginView>*); - Timer<PluginView> m_lifeSupportTimer; - -#if ENABLE(NETSCAPE_PLUGIN_API) - bool dispatchNPEvent(NPEvent&); -#endif -#if defined(XP_MACOSX) && ENABLE(NETSCAPE_PLUGIN_API) - int16_t dispatchNPCocoaEvent(NPCocoaEvent&); - bool m_updatedCocoaTextInputRequested; - bool m_keyDownSent; - uint16_t m_disregardKeyUpCounter; -#endif - -#if defined(XP_MACOSX) - void handleWheelEvent(WheelEvent*); -#endif - void updatePluginWidget(); - void paintMissingPluginIcon(GraphicsContext*, const IntRect&); - - void handleKeyboardEvent(KeyboardEvent*); - void handleMouseEvent(MouseEvent*); -#if defined(XP_UNIX) && ENABLE(NETSCAPE_PLUGIN_API) - void handleFocusInEvent(); - void handleFocusOutEvent(); -#endif - -#if OS(WINDOWS) - void paintIntoTransformedContext(HDC); - PassRefPtr<Image> snapshot(); -#endif - - int m_mode; - int m_paramCount; - char** m_paramNames; - char** m_paramValues; - String m_pluginsPage; - - String m_mimeType; - WTF::CString m_userAgent; - -#if ENABLE(NETSCAPE_PLUGIN_API) - NPP m_instance; - NPP_t m_instanceStruct; - NPWindow m_npWindow; -#endif - - Vector<bool, 4> m_popupStateStack; - - HashSet<RefPtr<PluginStream> > m_streams; - Vector<OwnPtr<PluginRequest> > m_requests; - - bool m_isWindowed; - bool m_isTransparent; - bool m_haveInitialized; - bool m_isWaitingToStart; - -#if defined(XP_UNIX) - bool m_needsXEmbed; -#endif - -#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API) - OwnPtr<PluginMessageThrottlerWin> m_messageThrottler; - WNDPROC m_pluginWndProc; - unsigned m_lastMessage; - bool m_isCallingPluginWndProc; - HDC m_wmPrintHDC; - bool m_haveUpdatedPluginWidget; -#endif - -#if (PLATFORM(GTK) && OS(WINDOWS)) || PLATFORM(EFL) - // On Mac OSX and Qt/Windows the plugin does not have its own native widget, - // but is using the containing window as its reference for positioning/painting. - PlatformPluginWidget m_window; -public: - PlatformPluginWidget platformPluginWidget() const { return m_window; } - void setPlatformPluginWidget(PlatformPluginWidget widget) { m_window = widget; } -#else -public: - void setPlatformPluginWidget(PlatformPluginWidget widget) { setPlatformWidget(widget); } - PlatformPluginWidget platformPluginWidget() const { return platformWidget(); } -#endif - -private: - -#if defined(XP_UNIX) || PLATFORM(GTK) - void setNPWindowIfNeeded(); -#elif defined(XP_MACOSX) - NP_CGContext m_npCgContext; - CGContextRef m_contextRef; - - void setNPWindowIfNeeded(); -#endif - -#if defined(XP_UNIX) && ENABLE(NETSCAPE_PLUGIN_API) - bool m_hasPendingGeometryChange; - Pixmap m_drawable; - Visual* m_visual; - Colormap m_colormap; - Display* m_pluginDisplay; - - void initXEvent(XEvent* event); -#endif - -#if PLATFORM(GTK) - static gboolean plugRemovedCallback(GtkSocket*, PluginView*); - static void plugAddedCallback(GtkSocket*, PluginView*); - void updateWidgetAllocationAndClip(); - bool m_plugAdded; - IntRect m_delayedAllocation; -#endif - - IntRect m_clipRect; // The clip rect to apply to a windowed plug-in - IntRect m_windowRect; // Our window rect. - - bool m_loadManually; - RefPtr<PluginStream> m_manualStream; - - bool m_isJavaScriptPaused; - - bool m_haveCalledSetWindow; - - static PluginView* s_currentPluginView; - }; - -inline PluginView* toPluginView(Widget* widget) -{ - ASSERT(!widget || widget->isPluginView()); - return static_cast<PluginView*>(widget); -} - -inline const PluginView* toPluginView(const Widget* widget) -{ - ASSERT(!widget || widget->isPluginView()); - return static_cast<const PluginView*>(widget); -} - -// This will catch anyone doing an unnecessary cast. -void toPluginView(const PluginView*); - -} // namespace WebCore - -#endif |