Diff
Modified: trunk/Source/WebCore/ChangeLog (119956 => 119957)
--- trunk/Source/WebCore/ChangeLog 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/ChangeLog 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1,3 +1,49 @@
+2012-06-10 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r119955.
+ http://trac.webkit.org/changeset/119955
+ https://bugs.webkit.org/show_bug.cgi?id=88758
+
+ Breaks Chromium compile - Chromium depends on removed API
+ (Requested by dominicc on #webkit).
+
+ * WebCore.exp.in:
+ * editing/Editor.cpp:
+ (WebCore::Editor::insideVisibleArea):
+ (WebCore):
+ (WebCore::Editor::firstVisibleRange):
+ (WebCore::Editor::lastVisibleRange):
+ (WebCore::Editor::nextVisibleRange):
+ (WebCore::Editor::rangeOfString):
+ (WebCore::Editor::countMatchesForText):
+ * editing/Editor.h:
+ (Editor):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::findFrameForNavigation):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::parent):
+ (WebCore::DOMWindow::top):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ * page/Frame.cpp:
+ (WebCore::Frame::Frame):
+ * page/Frame.h:
+ (Frame):
+ (WebCore::Frame::isDisconnected):
+ (WebCore):
+ (WebCore::Frame::setIsDisconnected):
+ (WebCore::Frame::excludeFromTextSearch):
+ (WebCore::Frame::setExcludeFromTextSearch):
+ * page/FrameTree.cpp:
+ (WebCore::FrameTree::parent):
+ (WebCore::FrameTree::top):
+ * page/FrameTree.h:
+ (FrameTree):
+ * page/Location.cpp:
+ (WebCore::Location::ancestorOrigins):
+ * xml/XMLTreeViewer.cpp:
+ (WebCore::XMLTreeViewer::hasNoStyleInformation):
+
2012-06-08 Kinuko Yasuda <[email protected]>
Using BlobBuilder should show a deprecation warning message (if it is enabled)
Modified: trunk/Source/WebCore/WebCore.exp.in (119956 => 119957)
--- trunk/Source/WebCore/WebCore.exp.in 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/WebCore.exp.in 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1534,7 +1534,7 @@
__ZNK7WebCore9FrameTree20traverseNextWithWrapEb
__ZNK7WebCore9FrameTree24traversePreviousWithWrapEb
__ZNK7WebCore9FrameTree4findERKN3WTF12AtomicStringE
-__ZNK7WebCore9FrameTree6parentEv
+__ZNK7WebCore9FrameTree6parentEb
__ZNK7WebCore9FrameView11needsLayoutEv
__ZNK7WebCore9FrameView13isTransparentEv
__ZNK7WebCore9FrameView13paintBehaviorEv
Modified: trunk/Source/WebCore/editing/Editor.cpp (119956 => 119957)
--- trunk/Source/WebCore/editing/Editor.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/editing/Editor.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -2414,6 +2414,144 @@
m_alternativeTextController->dismiss(ReasonForDismissingAlternativeTextIgnored);
}
+bool Editor::insideVisibleArea(const LayoutPoint& point) const
+{
+ if (m_frame->excludeFromTextSearch())
+ return false;
+
+ // Right now, we only check the visibility of a point for disconnected frames. For all other
+ // frames, we assume visibility.
+ Frame* frame = m_frame->isDisconnected() ? m_frame : m_frame->tree()->top(true);
+ if (!frame->isDisconnected())
+ return true;
+
+ RenderPart* renderer = frame->ownerRenderer();
+ if (!renderer)
+ return false;
+
+ RenderBlock* container = renderer->containingBlock();
+ if (!(container->style()->overflowX() == OHIDDEN || container->style()->overflowY() == OHIDDEN))
+ return true;
+
+ LayoutRect rectInPageCoords = container->overflowClipRect(IntPoint(), 0); // FIXME: Incorrect for CSS regions.
+ LayoutRect rectInFrameCoords = LayoutRect(renderer->x() * -1, renderer->y() * -1,
+ rectInPageCoords.width(), rectInPageCoords.height());
+
+ return rectInFrameCoords.contains(point);
+}
+
+bool Editor::insideVisibleArea(Range* range) const
+{
+ if (!range)
+ return true;
+
+ if (m_frame->excludeFromTextSearch())
+ return false;
+
+ // Right now, we only check the visibility of a range for disconnected frames. For all other
+ // frames, we assume visibility.
+ Frame* frame = m_frame->isDisconnected() ? m_frame : m_frame->tree()->top(true);
+ if (!frame->isDisconnected())
+ return true;
+
+ RenderPart* renderer = frame->ownerRenderer();
+ if (!renderer)
+ return false;
+
+ RenderBlock* container = renderer->containingBlock();
+ if (!(container->style()->overflowX() == OHIDDEN || container->style()->overflowY() == OHIDDEN))
+ return true;
+
+ LayoutRect rectInPageCoords = container->overflowClipRect(LayoutPoint(), 0); // FIXME: Incorrect for CSS regions.
+ LayoutRect rectInFrameCoords = LayoutRect(renderer->x() * -1, renderer->y() * -1,
+ rectInPageCoords.width(), rectInPageCoords.height());
+ LayoutRect resultRect = range->boundingBox();
+
+ return rectInFrameCoords.contains(resultRect);
+}
+
+PassRefPtr<Range> Editor::firstVisibleRange(const String& target, FindOptions options)
+{
+ RefPtr<Range> searchRange(rangeOfContents(m_frame->document()));
+ RefPtr<Range> resultRange = findPlainText(searchRange.get(), target, options & ~Backwards);
+ ExceptionCode ec = 0;
+
+ while (!insideVisibleArea(resultRange.get())) {
+ searchRange->setStartAfter(resultRange->endContainer(), ec);
+ if (searchRange->startContainer() == searchRange->endContainer())
+ return Range::create(m_frame->document());
+ resultRange = findPlainText(searchRange.get(), target, options & ~Backwards);
+ }
+
+ return resultRange;
+}
+
+PassRefPtr<Range> Editor::lastVisibleRange(const String& target, FindOptions options)
+{
+ RefPtr<Range> searchRange(rangeOfContents(m_frame->document()));
+ RefPtr<Range> resultRange = findPlainText(searchRange.get(), target, options | Backwards);
+ ExceptionCode ec = 0;
+
+ while (!insideVisibleArea(resultRange.get())) {
+ searchRange->setEndBefore(resultRange->startContainer(), ec);
+ if (searchRange->startContainer() == searchRange->endContainer())
+ return Range::create(m_frame->document());
+ resultRange = findPlainText(searchRange.get(), target, options | Backwards);
+ }
+
+ return resultRange;
+}
+
+PassRefPtr<Range> Editor::nextVisibleRange(Range* currentRange, const String& target, FindOptions options)
+{
+ if (m_frame->excludeFromTextSearch())
+ return Range::create(m_frame->document());
+
+ RefPtr<Range> resultRange = currentRange;
+ RefPtr<Range> searchRange(rangeOfContents(m_frame->document()));
+ ExceptionCode ec = 0;
+ bool forward = !(options & Backwards);
+ for ( ; !insideVisibleArea(resultRange.get()); resultRange = findPlainText(searchRange.get(), target, options)) {
+ if (resultRange->collapsed(ec)) {
+ if (!resultRange->startContainer()->isInShadowTree())
+ break;
+ searchRange = rangeOfContents(m_frame->document());
+ if (forward)
+ searchRange->setStartAfter(resultRange->startContainer()->shadowAncestorNode(), ec);
+ else
+ searchRange->setEndBefore(resultRange->startContainer()->shadowAncestorNode(), ec);
+ continue;
+ }
+
+ if (forward)
+ searchRange->setStartAfter(resultRange->endContainer(), ec);
+ else
+ searchRange->setEndBefore(resultRange->startContainer(), ec);
+
+ ShadowRoot* shadowRoot = searchRange->shadowRoot();
+ if (searchRange->collapsed(ec) && shadowRoot) {
+ if (forward)
+ searchRange->setEnd(shadowRoot, shadowRoot->childNodeCount(), ec);
+ else
+ searchRange->setStartBefore(shadowRoot, ec);
+ }
+
+ if (searchRange->startContainer()->isDocumentNode() && searchRange->endContainer()->isDocumentNode())
+ break;
+ }
+
+ if (insideVisibleArea(resultRange.get()))
+ return resultRange;
+
+ if (!(options & WrapAround))
+ return Range::create(m_frame->document());
+
+ if (options & Backwards)
+ return lastVisibleRange(target, options);
+
+ return firstVisibleRange(target, options);
+}
+
void Editor::changeSelectionAfterCommand(const VisibleSelection& newSelection, bool closeTyping, bool clearTypingStyle)
{
// If the new selection is orphaned, then don't update the selection.
@@ -2612,6 +2750,9 @@
if (target.isEmpty())
return 0;
+ if (m_frame->excludeFromTextSearch())
+ return 0;
+
// Start from an edge of the reference range, if there's a reference range that's not in shadow content. Which edge
// is used depends on whether we're searching forward or backward, and whether startInSelection is set.
RefPtr<Range> searchRange(rangeOfContents(m_frame->document()));
@@ -2665,6 +2806,12 @@
resultRange = findPlainText(searchRange.get(), target, options);
}
+ if (!insideVisibleArea(resultRange.get())) {
+ resultRange = nextVisibleRange(resultRange.get(), target, options);
+ if (!resultRange)
+ return 0;
+ }
+
// If we didn't find anything and we're wrapping, search again in the entire document (this will
// redundantly re-search the area already searched in some cases).
if (resultRange->collapsed() && options & WrapAround) {
@@ -2727,9 +2874,12 @@
continue;
}
- ++matchCount;
- if (markMatches)
- m_frame->document()->markers()->addMarker(resultRange.get(), DocumentMarker::TextMatch);
+ // Only treat the result as a match if it is visible
+ if (insideVisibleArea(resultRange.get())) {
+ ++matchCount;
+ if (markMatches)
+ m_frame->document()->markers()->addMarker(resultRange.get(), DocumentMarker::TextMatch);
+ }
// Stop looking if we hit the specified limit. A limit of 0 means no limit.
if (limit > 0 && matchCount >= limit)
Modified: trunk/Source/WebCore/editing/Editor.h (119956 => 119957)
--- trunk/Source/WebCore/editing/Editor.h 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/editing/Editor.h 2012-06-11 06:58:40 UTC (rev 119957)
@@ -322,6 +322,10 @@
PassRefPtr<Range> selectedRange();
+ // We should make these functions private when their callers in Frame are moved over here to Editor
+ bool insideVisibleArea(const LayoutPoint&) const;
+ bool insideVisibleArea(Range*) const;
+
void addToKillRing(Range*, bool prepend);
void startAlternativeTextUITimer();
@@ -429,6 +433,10 @@
enum SetCompositionMode { ConfirmComposition, CancelComposition };
void setComposition(const String&, SetCompositionMode);
+ PassRefPtr<Range> firstVisibleRange(const String&, FindOptions);
+ PassRefPtr<Range> lastVisibleRange(const String&, FindOptions);
+ PassRefPtr<Range> nextVisibleRange(Range*, const String&, FindOptions);
+
void changeSelectionAfterCommand(const VisibleSelection& newSelection, bool closeTyping, bool clearTypingStyle);
Node* findEventTargetFromSelection() const;
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (119956 => 119957)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -2933,7 +2933,7 @@
// browsing context flag set, and continue these steps as if that
// browsing context was the one that was going to be navigated instead.
if (frame == m_frame && name != "_self" && m_frame->document()->shouldDisplaySeamlesslyWithParent()) {
- for (Frame* ancestor = m_frame; ancestor; ancestor = ancestor->tree()->parent()) {
+ for (Frame* ancestor = m_frame; ancestor; ancestor = ancestor->tree()->parent(true)) {
if (!ancestor->document()->shouldDisplaySeamlesslyWithParent()) {
frame = ancestor;
break;
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (119956 => 119957)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1280,7 +1280,7 @@
if (!m_frame)
return 0;
- Frame* parent = m_frame->tree()->parent();
+ Frame* parent = m_frame->tree()->parent(true);
if (parent)
return parent->domWindow();
@@ -1296,7 +1296,7 @@
if (!page)
return 0;
- return m_frame->tree()->top()->domWindow();
+ return m_frame->tree()->top(true)->domWindow();
}
Document* DOMWindow::document() const
Modified: trunk/Source/WebCore/page/EventHandler.cpp (119956 => 119957)
--- trunk/Source/WebCore/page/EventHandler.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1079,7 +1079,7 @@
Frame* resultFrame = result.innerNonSharedNode() ? result.innerNonSharedNode()->document()->frame() : 0;
if (Page* page = m_frame->page()) {
Frame* mainFrame = page->mainFrame();
- if (m_frame != mainFrame && resultFrame && resultFrame != mainFrame) {
+ if (m_frame != mainFrame && resultFrame && resultFrame != mainFrame && !resultFrame->editor()->insideVisibleArea(result.point())) {
FrameView* resultView = resultFrame->view();
FrameView* mainView = mainFrame->view();
if (resultView && mainView) {
Modified: trunk/Source/WebCore/page/Frame.cpp (119956 => 119957)
--- trunk/Source/WebCore/page/Frame.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/Frame.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -164,6 +164,8 @@
, m_orientation(0)
#endif
, m_inViewSourceMode(false)
+ , m_isDisconnected(false)
+ , m_excludeFromTextSearch(false)
, m_activeDOMObjectsAndAnimationsSuspendedCount(0)
{
ASSERT(page);
Modified: trunk/Source/WebCore/page/Frame.h (119956 => 119957)
--- trunk/Source/WebCore/page/Frame.h 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/Frame.h 2012-06-11 06:58:40 UTC (rev 119957)
@@ -119,6 +119,10 @@
// ======== All public functions below this point are candidates to move out of Frame into another class. ========
+ bool isDisconnected() const;
+ void setIsDisconnected(bool);
+ bool excludeFromTextSearch() const;
+ void setExcludeFromTextSearch(bool);
bool inScope(TreeScope*) const;
void injectUserScripts(UserScriptInjectionTime);
@@ -233,6 +237,8 @@
#endif
bool m_inViewSourceMode;
+ bool m_isDisconnected;
+ bool m_excludeFromTextSearch;
#if USE(TILED_BACKING_STORE)
// FIXME: The tiled backing store belongs in FrameView, not Frame.
@@ -306,6 +312,26 @@
return m_ownerElement;
}
+ inline bool Frame::isDisconnected() const
+ {
+ return m_isDisconnected;
+ }
+
+ inline void Frame::setIsDisconnected(bool isDisconnected)
+ {
+ m_isDisconnected = isDisconnected;
+ }
+
+ inline bool Frame::excludeFromTextSearch() const
+ {
+ return m_excludeFromTextSearch;
+ }
+
+ inline void Frame::setExcludeFromTextSearch(bool exclude)
+ {
+ m_excludeFromTextSearch = exclude;
+ }
+
inline bool Frame::inViewSourceMode() const
{
return m_inViewSourceMode;
Modified: trunk/Source/WebCore/page/FrameTree.cpp (119956 => 119957)
--- trunk/Source/WebCore/page/FrameTree.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/FrameTree.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -58,8 +58,10 @@
m_uniqueName = AtomicString();
}
-Frame* FrameTree::parent() const
+Frame* FrameTree::parent(bool checkForDisconnectedFrame) const
{
+ if (checkForDisconnectedFrame && m_thisFrame->isDisconnected())
+ return 0;
return m_parent;
}
@@ -381,11 +383,14 @@
return result;
}
-Frame* FrameTree::top() const
+Frame* FrameTree::top(bool checkForDisconnectedFrame) const
{
Frame* frame = m_thisFrame;
- for (Frame* parent = m_thisFrame; parent; parent = parent->tree()->parent())
+ for (Frame* parent = m_thisFrame; parent; parent = parent->tree()->parent()) {
frame = parent;
+ if (checkForDisconnectedFrame && frame->isDisconnected())
+ return frame;
+ }
return frame;
}
Modified: trunk/Source/WebCore/page/FrameTree.h (119956 => 119957)
--- trunk/Source/WebCore/page/FrameTree.h 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/FrameTree.h 2012-06-11 06:58:40 UTC (rev 119957)
@@ -48,7 +48,7 @@
const AtomicString& uniqueName() const { return m_uniqueName; }
void setName(const AtomicString&);
void clearName();
- Frame* parent() const;
+ Frame* parent(bool checkForDisconnectedFrame = false) const;
void setParent(Frame* parent) { m_parent = parent; }
Frame* nextSibling() const { return m_nextSibling.get(); }
@@ -73,7 +73,7 @@
AtomicString uniqueChildName(const AtomicString& requestedName) const;
- Frame* top() const;
+ Frame* top(bool checkForDisconnectedFrame = false) const;
Frame* scopedChild(unsigned index) const;
Frame* scopedChild(const AtomicString& name) const;
Modified: trunk/Source/WebCore/page/Location.cpp (119956 => 119957)
--- trunk/Source/WebCore/page/Location.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/page/Location.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -129,7 +129,7 @@
RefPtr<DOMStringList> origins = DOMStringList::create();
if (!m_frame)
return origins.release();
- for (Frame* frame = m_frame->tree()->parent(); frame; frame = frame->tree()->parent())
+ for (Frame* frame = m_frame->tree()->parent(true); frame; frame = frame->tree()->parent(true))
origins->append(frame->document()->securityOrigin()->toString());
return origins.release();
}
Modified: trunk/Source/WebCore/xml/XMLTreeViewer.cpp (119956 => 119957)
--- trunk/Source/WebCore/xml/XMLTreeViewer.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebCore/xml/XMLTreeViewer.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -62,7 +62,7 @@
if (!m_document->frame()->page()->settings()->developerExtrasEnabled())
return false;
- if (m_document->frame()->tree()->parent())
+ if (m_document->frame()->tree()->parent(true))
return false; // This document is not in a top frame
return true;
Modified: trunk/Source/WebKit/mac/ChangeLog (119956 => 119957)
--- trunk/Source/WebKit/mac/ChangeLog 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebKit/mac/ChangeLog 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1,3 +1,17 @@
+2012-06-10 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r119955.
+ http://trac.webkit.org/changeset/119955
+ https://bugs.webkit.org/show_bug.cgi?id=88758
+
+ Breaks Chromium compile - Chromium depends on removed API
+ (Requested by dominicc on #webkit).
+
+ * WebView/WebFrame.mm:
+ (-[WebFrame _setIsDisconnected:]):
+ (-[WebFrame _setExcludeFromTextSearch:]):
+ * WebView/WebFramePrivate.h:
+
2012-06-10 Sam Weinig <[email protected]>
Remove support for disconnected/excluded from search frames, they are not used by Safari anymore
Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (119956 => 119957)
--- trunk/Source/WebKit/mac/WebView/WebFrame.mm 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm 2012-06-11 06:58:40 UTC (rev 119957)
@@ -910,6 +910,16 @@
return _private->coreFrame->domWindow()->pendingUnloadEventListeners();
}
+- (void)_setIsDisconnected:(bool)isDisconnected
+{
+ _private->coreFrame->setIsDisconnected(isDisconnected);
+}
+
+- (void)_setExcludeFromTextSearch:(bool)exclude
+{
+ _private->coreFrame->setExcludeFromTextSearch(exclude);
+}
+
#if ENABLE(NETSCAPE_PLUGIN_API)
- (void)_recursive_resumeNullEventsForAllNetscapePlugins
{
Modified: trunk/Source/WebKit/mac/WebView/WebFramePrivate.h (119956 => 119957)
--- trunk/Source/WebKit/mac/WebView/WebFramePrivate.h 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebKit/mac/WebView/WebFramePrivate.h 2012-06-11 06:58:40 UTC (rev 119957)
@@ -87,6 +87,9 @@
- (unsigned)_pendingFrameUnloadEventCount;
+- (void)_setIsDisconnected:(bool)isDisconnected;
+- (void)_setExcludeFromTextSearch:(bool)exclude;
+
#if ENABLE_NETSCAPE_PLUGIN_API
- (void)_recursive_resumeNullEventsForAllNetscapePlugins;
- (void)_recursive_pauseNullEventsForAllNetscapePlugins;
Modified: trunk/Source/WebKit/win/ChangeLog (119956 => 119957)
--- trunk/Source/WebKit/win/ChangeLog 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebKit/win/ChangeLog 2012-06-11 06:58:40 UTC (rev 119957)
@@ -1,3 +1,16 @@
+2012-06-10 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r119955.
+ http://trac.webkit.org/changeset/119955
+ https://bugs.webkit.org/show_bug.cgi?id=88758
+
+ Breaks Chromium compile - Chromium depends on removed API
+ (Requested by dominicc on #webkit).
+
+ * WebFrame.cpp:
+ (WebFrame::setIsDisconnected):
+ (WebFrame::setExcludeFromTextSearch):
+
2012-06-10 Sam Weinig <[email protected]>
Remove support for disconnected/excluded from search frames, they are not used by Safari anymore
Modified: trunk/Source/WebKit/win/WebFrame.cpp (119956 => 119957)
--- trunk/Source/WebKit/win/WebFrame.cpp 2012-06-11 06:23:59 UTC (rev 119956)
+++ trunk/Source/WebKit/win/WebFrame.cpp 2012-06-11 06:58:40 UTC (rev 119957)
@@ -298,12 +298,22 @@
HRESULT STDMETHODCALLTYPE WebFrame::setIsDisconnected(
/* [in] */ BOOL flag)
{
+ if (Frame* frame = core(this)) {
+ frame->setIsDisconnected(flag);
+ return S_OK;
+ }
+
return E_FAIL;
}
HRESULT STDMETHODCALLTYPE WebFrame::setExcludeFromTextSearch(
/* [in] */ BOOL flag)
{
+ if (Frame* frame = core(this)) {
+ frame->setExcludeFromTextSearch(flag);
+ return S_OK;
+ }
+
return E_FAIL;
}