summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/WebFrameImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/WebFrameImpl.cpp')
-rw-r--r--WebKit/chromium/src/WebFrameImpl.cpp41
1 files changed, 30 insertions, 11 deletions
diff --git a/WebKit/chromium/src/WebFrameImpl.cpp b/WebKit/chromium/src/WebFrameImpl.cpp
index ff4883e..535d128 100644
--- a/WebKit/chromium/src/WebFrameImpl.cpp
+++ b/WebKit/chromium/src/WebFrameImpl.cpp
@@ -130,6 +130,7 @@
#include "WebHistoryItem.h"
#include "WebInputElement.h"
#include "WebPasswordAutocompleteListener.h"
+#include "WebPlugin.h"
#include "WebPluginContainerImpl.h"
#include "WebRange.h"
#include "WebRect.h"
@@ -248,9 +249,7 @@ static void frameContentAsPlainText(size_t maxChars, Frame* frame,
}
}
-// If the frame hosts a PluginDocument, this method returns the WebPluginContainerImpl
-// that hosts the plugin.
-static WebPluginContainerImpl* pluginContainerFromFrame(Frame* frame)
+WebPluginContainerImpl* WebFrameImpl::pluginContainerFromFrame(Frame* frame)
{
if (!frame)
return 0;
@@ -348,7 +347,7 @@ public:
virtual void end()
{
- WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(m_frame);
+ WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(m_frame);
if (pluginContainer && pluginContainer->supportsPaginatedPrint())
pluginContainer->printEnd();
else
@@ -363,7 +362,7 @@ public:
virtual void computePageRects(const FloatRect& printRect, float headerHeight, float footerHeight, float userScaleFactor, float& outPageHeight)
{
- WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(m_frame);
+ WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(m_frame);
if (pluginContainer && pluginContainer->supportsPaginatedPrint())
m_pageCount = pluginContainer->printBegin(IntRect(printRect), m_printerDPI);
else
@@ -380,7 +379,7 @@ public:
// instead. Returns the scale to be applied.
virtual float spoolPage(GraphicsContext& ctx, int pageNumber)
{
- WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(m_frame);
+ WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(m_frame);
if (pluginContainer && pluginContainer->supportsPaginatedPrint())
pluginContainer->printPage(pageNumber, &ctx);
else
@@ -1094,6 +1093,14 @@ bool WebFrameImpl::executeCommand(const WebString& name)
if (command[command.length() - 1] == UChar(':'))
command = command.substring(0, command.length() - 1);
+ if (command == "Copy") {
+ WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame());
+ if (pluginContainer) {
+ pluginContainer->copy();
+ return true;
+ }
+ }
+
bool rv = true;
// Specially handling commands that Editor::execCommand does not directly
@@ -1164,6 +1171,10 @@ bool WebFrameImpl::isContinuousSpellCheckingEnabled() const
bool WebFrameImpl::hasSelection() const
{
+ WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame());
+ if (pluginContainer)
+ return pluginContainer->plugin()->hasSelection();
+
// frame()->selection()->isNone() never returns true.
return (frame()->selection()->start() != frame()->selection()->end());
}
@@ -1175,6 +1186,10 @@ WebRange WebFrameImpl::selectionRange() const
WebString WebFrameImpl::selectionAsText() const
{
+ WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame());
+ if (pluginContainer)
+ return pluginContainer->plugin()->selectionAsText();
+
RefPtr<Range> range = frame()->selection()->toNormalizedRange();
if (!range.get())
return WebString();
@@ -1189,6 +1204,10 @@ WebString WebFrameImpl::selectionAsText() const
WebString WebFrameImpl::selectionAsMarkup() const
{
+ WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame());
+ if (pluginContainer)
+ return pluginContainer->plugin()->selectionAsMarkup();
+
RefPtr<Range> range = frame()->selection()->toNormalizedRange();
if (!range.get())
return WebString();
@@ -1960,7 +1979,7 @@ bool WebFrameImpl::registerPasswordListener(
WebInputElement inputElement,
WebPasswordAutocompleteListener* listener)
{
- RefPtr<HTMLInputElement> element = inputElement.operator PassRefPtr<HTMLInputElement>();
+ RefPtr<HTMLInputElement> element(inputElement.unwrap<HTMLInputElement>());
if (!m_passwordListeners.add(element, listener).second) {
delete listener;
return false;
@@ -1971,8 +1990,8 @@ bool WebFrameImpl::registerPasswordListener(
void WebFrameImpl::notifiyPasswordListenerOfAutocomplete(
const WebInputElement& inputElement)
{
- RefPtr<HTMLInputElement> element = inputElement.operator PassRefPtr<HTMLInputElement>();
- WebPasswordAutocompleteListener* listener = getPasswordListener(element.get());
+ const HTMLInputElement* element = inputElement.constUnwrap<HTMLInputElement>();
+ WebPasswordAutocompleteListener* listener = getPasswordListener(element);
// Password listeners need to autocomplete other fields that depend on the
// input element with autofill suggestions.
if (listener)
@@ -1980,9 +1999,9 @@ void WebFrameImpl::notifiyPasswordListenerOfAutocomplete(
}
WebPasswordAutocompleteListener* WebFrameImpl::getPasswordListener(
- HTMLInputElement* inputElement)
+ const HTMLInputElement* inputElement)
{
- return m_passwordListeners.get(RefPtr<HTMLInputElement>(inputElement));
+ return m_passwordListeners.get(RefPtr<HTMLInputElement>(const_cast<HTMLInputElement*>(inputElement)));
}
// WebFrameImpl private --------------------------------------------------------