#ifndef PluginWidget_h
#define PluginWidget_h
#include "PlatformLayer.h"
#include "ScrollTypes.h"
#include "Widget.h"
#include <wtf/text/WTFString.h>
namespace JSC {
class ExecState;
class JSGlobalObject;
class JSObject;
}
namespace WebCore {
class Scrollbar;
class PluginViewBase : public Widget {
public:
#if USE(ACCELERATED_COMPOSITING)
virtual PlatformLayer* platformLayer() const { return 0; }
#if PLATFORM(IOS)
virtual bool willProvidePluginLayer() const { return false; }
virtual void attachPluginLayer() { }
virtual void detachPluginLayer() { }
#endif
#endif
virtual JSC::JSObject* scriptObject(JSC::JSGlobalObject*) { return 0; }
virtual void storageBlockingStateChanged() { }
virtual void privateBrowsingStateChanged(bool) { }
virtual bool getFormValue(String&) { return false; }
virtual bool scroll(ScrollDirection, ScrollGranularity) { return false; }
virtual Scrollbar* horizontalScrollbar() { return 0; }
virtual Scrollbar* verticalScrollbar() { return 0; }
virtual bool wantsWheelEvents() { return false; }
virtual bool supportsKeyboardFocus() const { return false; }
virtual bool canProcessDrag() const { return false; }
virtual bool shouldAlwaysAutoStart() const { return false; }
virtual void beginSnapshottingRunningPlugin() { }
virtual bool shouldAllowNavigationFromDrags() const { return false; }
virtual bool isPluginViewBase() const { return true; }
virtual bool shouldNotAddLayer() const { return false; }
protected:
explicit PluginViewBase(PlatformWidget widget = 0) : Widget(widget) { }
};
inline PluginViewBase* toPluginViewBase(Widget* widget)
{
ASSERT(!widget || widget->isPluginViewBase());
return static_cast<PluginViewBase*>(widget);
}
inline const PluginViewBase* toPluginViewBase(const Widget* widget)
{
ASSERT(!widget || widget->isPluginViewBase());
return static_cast<const PluginViewBase*>(widget);
}
void toPluginViewBase(const PluginViewBase*);
}
#endif // PluginWidget_h