summaryrefslogtreecommitdiff
path: root/Source/WebCore/plugins/PluginView.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/plugins/PluginView.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/plugins/PluginView.h')
-rw-r--r--Source/WebCore/plugins/PluginView.h429
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