summaryrefslogtreecommitdiffstats
path: root/WebCore/plugins/PluginView.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/plugins/PluginView.h')
-rw-r--r--WebCore/plugins/PluginView.h320
1 files changed, 0 insertions, 320 deletions
diff --git a/WebCore/plugins/PluginView.h b/WebCore/plugins/PluginView.h
deleted file mode 100644
index 1a189e8..0000000
--- a/WebCore/plugins/PluginView.h
+++ /dev/null
@@ -1,320 +0,0 @@
-
-/*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Collabora Ltd. All rights reserved.
- *
- * 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 "CString.h"
-#include "FrameLoadRequest.h"
-#include "IntRect.h"
-#include "KURL.h"
-#include "PlatformString.h"
-#include "PluginStream.h"
-#include "ResourceRequest.h"
-#include "Timer.h"
-#include "Widget.h"
-#include "npruntime_internal.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>
-
-#ifdef PLUGIN_SCHEDULE_TIMER
-#include "PluginTimer.h"
-#endif
-
-#if PLATFORM(WIN_OS) && PLATFORM(QT)
-typedef struct HWND__* HWND;
-typedef HWND PlatformPluginWidget;
-#elif defined(ANDROID_PLUGINS)
-typedef struct PluginWidgetAndroid* PlatformPluginWidget;
-#else
-typedef PlatformWidget PlatformPluginWidget;
-#endif
-
-namespace JSC {
- namespace Bindings {
- class Instance;
- }
-}
-
-namespace WebCore {
- class Element;
- class Frame;
- class KeyboardEvent;
- class MouseEvent;
- class KURL;
-#if PLATFORM(WIN_OS) && !PLATFORM(WX) && ENABLE(NETSCAPE_PLUGIN_API)
- class PluginMessageThrottlerWin;
-#endif
- class PluginPackage;
- class PluginRequest;
- class PluginStream;
- class ResourceError;
- class ResourceResponse;
-
- enum PluginStatus {
- PluginStatusCanNotFindPlugin,
- PluginStatusCanNotLoadPlugin,
- PluginStatusLoadedSuccessfully
- };
-
- class PluginRequest {
- 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 PluginView : public Widget, private PluginStreamClient {
- public:
- static PluginView* create(Frame* parentFrame, const IntSize&, Element*, const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually);
- virtual ~PluginView();
-
- PluginPackage* plugin() const { return m_plugin.get(); }
- NPP instance() const { return m_instance; }
-
- void setNPWindowRect(const IntRect&);
- static PluginView* currentPluginView();
-
- PassRefPtr<JSC::Bindings::Instance> bindingInstance();
-
- PluginStatus status() const { return m_status; }
-
- // 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 len, const char* but, NPBool file, void* notifyData);
- NPError postURL(const char* url, const char* target, uint32 len, const char* but, NPBool file);
- NPError newStream(NPMIMEType type, const char* target, NPStream** stream);
- int32 write(NPStream* stream, int32 len, void* buffer);
- NPError destroyStream(NPStream* stream, NPReason reason);
- const char* userAgent();
-#if ENABLE(NETSCAPE_PLUGIN_API)
- static const char* userAgentStatic();
-#endif
- void status(const char* message);
- NPError getValue(NPNVariable variable, void* value);
-#if ENABLE(NETSCAPE_PLUGIN_API)
- static NPError getValueStatic(NPNVariable variable, void* value);
-#endif
- NPError setValue(NPPVariable variable, void* value);
- void invalidateRect(NPRect*);
- void invalidateRegion(NPRegion);
- void forceRedraw();
- void pushPopupsEnabledState(bool state);
- void popPopupsEnabledState();
-#ifdef PLUGIN_SCHEDULE_TIMER
- uint32 scheduleTimer(NPP, uint32 interval, bool repeat,
- void (*timerFunc)(NPP, uint32 timerID));
- void unscheduleTimer(NPP, uint32 timerID);
-#endif
-
- virtual void invalidateRect(const IntRect&);
-
- bool arePopupsAllowed() const;
-
- void setJavaScriptPaused(bool);
-
- void disconnectStream(PluginStream*);
- void streamDidFinishLoading(PluginStream* stream) { disconnectStream(stream); }
-
- // Widget functions
- virtual void setFrameRect(const IntRect&);
- virtual void frameRectsChanged() const;
- virtual void setFocus();
- virtual void show();
- virtual void hide();
- virtual void paint(GraphicsContext*, const IntRect&);
-
- // 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 { return true; }
-
-#if PLATFORM(WIN_OS) && !PLATFORM(WX) && 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();
-
-#if PLATFORM(QT)
- bool isNPAPIPlugin() const { return m_isNPAPIPlugin; }
- void setIsNPAPIPlugin(bool b) { m_isNPAPIPlugin = b; }
-#endif
-
- private:
- PluginView(Frame* parentFrame, const IntSize&, PluginPackage*, Element*, const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually);
-
- void setParameters(const Vector<String>& paramNames, const Vector<String>& paramValues);
- void init();
- bool start();
- void stop();
- static void setCurrentPluginView(PluginView*);
- NPError load(const FrameLoadRequest&, bool sendNotification, void* notifyData);
- NPError handlePost(const char* url, const char* target, uint32 len, const char* buf, bool file, void* notifyData, bool sendNotification, bool allowHeaders);
- NPError handlePostReadFile(Vector<char>& buffer, uint32 len, const char* buf);
- static void freeStringArray(char** stringArray, int length);
- void setCallingPlugin(bool) const;
-
- void invalidateWindowlessPluginRect(const IntRect&);
-
- Frame* m_parentFrame;
- RefPtr<PluginPackage> m_plugin;
- Element* m_element;
- bool m_isStarted;
- KURL m_url;
- KURL m_baseURL;
- PluginStatus m_status;
- Vector<IntRect> m_invalidRects;
-
- void performRequest(PluginRequest*);
- void scheduleRequest(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;
-
-#ifndef NP_NO_CARBON
- bool dispatchNPEvent(NPEvent&);
-#endif
- void updatePluginWidget() const;
- void paintMissingPluginIcon(GraphicsContext*, const IntRect&);
-
- void handleKeyboardEvent(KeyboardEvent*);
- void handleMouseEvent(MouseEvent*);
-
-#ifdef ANDROID_PLUGINS
- // called at the end of the base constructor
- void platformInit();
-#endif
-#ifdef PLUGIN_PLATFORM_SETVALUE
- // called if the default setValue does not recognize the variable
- NPError platformSetValue(NPPVariable variable, void* value);
-#endif
-
- int m_mode;
- int m_paramCount;
- char** m_paramNames;
- char** m_paramValues;
-
- CString m_mimeType;
- CString m_userAgent;
-
- NPP m_instance;
- NPP_t m_instanceStruct;
- NPWindow m_npWindow;
-
- Vector<bool, 4> m_popupStateStack;
-
- HashSet<RefPtr<PluginStream> > m_streams;
- Vector<PluginRequest*> m_requests;
-
- bool m_isWindowed;
- bool m_isTransparent;
- bool m_haveInitialized;
-
-#if PLATFORM(QT)
- bool m_isNPAPIPlugin;
-#endif
-
-#if PLATFORM(GTK) || defined(Q_WS_X11)
- bool m_needsXEmbed;
-#endif
-
-#if PLATFORM(WIN_OS) && !PLATFORM(WX) && ENABLE(NETSCAPE_PLUGIN_API)
- OwnPtr<PluginMessageThrottlerWin> m_messageThrottler;
- WNDPROC m_pluginWndProc;
- unsigned m_lastMessage;
- bool m_isCallingPluginWndProc;
-#endif
-
-#ifdef PLUGIN_SCHEDULE_TIMER
- PluginTimerList m_timerList;
-#endif
-
-#if PLATFORM(WIN_OS) && PLATFORM(QT)
- // Only under Qt on Windows, the plugin widget (HWND) does not match the native widget (QWidget).
- PlatformPluginWidget m_window; // for windowed plug-ins
-public:
- PlatformPluginWidget platformPluginWidget() const { return m_window; }
-#elif defined(ANDROID_PLUGINS)
-public:
- PlatformPluginWidget m_window;
- PlatformPluginWidget platformPluginWidget() const { return m_window; } // MANUAL MERGE FIXME
-#else
-public:
- PlatformPluginWidget platformPluginWidget() const { return platformWidget(); }
-#endif
-
-private:
-
- mutable IntRect m_clipRect; // The clip rect to apply to a windowed plug-in
- mutable IntRect m_windowRect; // Our window rect.
-
- bool m_loadManually;
- RefPtr<PluginStream> m_manualStream;
-
- bool m_isJavaScriptPaused;
-
- static PluginView* s_currentPluginView;
- };
-
-} // namespace WebCore
-
-#endif