diff options
Diffstat (limited to 'WebKit/chromium/src/WebFrameImpl.cpp')
-rw-r--r-- | WebKit/chromium/src/WebFrameImpl.cpp | 41 |
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 -------------------------------------------------------- |