Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: Source/WebKit/chromium/src/WebFrameImpl.cpp

Issue 10541145: Merge 120219 - [Chromium] WebFrameImpl::find doesn't work for searching from a selection. (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebKit/chromium/ChangeLog ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 } 1559 }
1560 1560
1561 bool WebFrameImpl::find(int identifier, 1561 bool WebFrameImpl::find(int identifier,
1562 const WebString& searchText, 1562 const WebString& searchText,
1563 const WebFindOptions& options, 1563 const WebFindOptions& options,
1564 bool wrapWithinFrame, 1564 bool wrapWithinFrame,
1565 WebRect* selectionRect) 1565 WebRect* selectionRect)
1566 { 1566 {
1567 WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl(); 1567 WebFrameImpl* mainFrameImpl = viewImpl()->mainFrameImpl();
1568 1568
1569 if (!options.findNext) { 1569 if (!options.findNext)
1570 frame()->page()->unmarkAllTextMatches(); 1570 frame()->page()->unmarkAllTextMatches();
1571 else
1572 setMarkerActive(m_activeMatch.get(), false);
1573
1574 if (m_activeMatch && m_activeMatch->ownerDocument() != frame()->document())
1571 m_activeMatch = 0; 1575 m_activeMatch = 0;
1572 } else
1573 setMarkerActive(m_activeMatch.get(), false);
1574 1576
1575 // If the user has selected something since the last Find operation we want 1577 // If the user has selected something since the last Find operation we want
1576 // to start from there. Otherwise, we start searching from where the last Fi nd 1578 // to start from there. Otherwise, we start searching from where the last Fi nd
1577 // operation left off (either a Find or a FindNext operation). 1579 // operation left off (either a Find or a FindNext operation).
1578 VisibleSelection selection(frame()->selection()->selection()); 1580 VisibleSelection selection(frame()->selection()->selection());
1579 bool activeSelection = !selection.isNone(); 1581 bool activeSelection = !selection.isNone();
1580 if (activeSelection) { 1582 if (activeSelection) {
1581 m_activeMatch = selection.firstRange().get(); 1583 m_activeMatch = selection.firstRange().get();
1582 frame()->selection()->clear(); 1584 frame()->selection()->clear();
1583 } 1585 }
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2178 node = node->traverseNextNode(); 2180 node = node->traverseNextNode();
2179 } 2181 }
2180 2182
2181 // No node related to the active match was focusable, so set the 2183 // No node related to the active match was focusable, so set the
2182 // active match as the selection (so that when you end the Find session, 2184 // active match as the selection (so that when you end the Find session,
2183 // you'll have the last thing you found highlighted) and make sure that 2185 // you'll have the last thing you found highlighted) and make sure that
2184 // we have nothing focused (otherwise you might have text selected but 2186 // we have nothing focused (otherwise you might have text selected but
2185 // a link focused, which is weird). 2187 // a link focused, which is weird).
2186 frame()->selection()->setSelection(m_activeMatch.get()); 2188 frame()->selection()->setSelection(m_activeMatch.get());
2187 frame()->document()->setFocusedNode(0); 2189 frame()->document()->setFocusedNode(0);
2190
2191 // Finally clear the active match, for two reasons:
2192 // We just finished the find 'session' and we don't want future (potenti ally
2193 // unrelated) find 'sessions' operations to start at the same place.
2194 // The WebFrameImpl could get reused and the m_activeMatch could end up pointing
2195 // to a document that is no longer valid. Keeping an invalid reference a round
2196 // is just asking for trouble.
2197 m_activeMatch = 0;
2188 } 2198 }
2189 } 2199 }
2190 2200
2191 void WebFrameImpl::didFail(const ResourceError& error, bool wasProvisional) 2201 void WebFrameImpl::didFail(const ResourceError& error, bool wasProvisional)
2192 { 2202 {
2193 if (!client()) 2203 if (!client())
2194 return; 2204 return;
2195 WebURLError webError = error; 2205 WebURLError webError = error;
2196 if (wasProvisional) 2206 if (wasProvisional)
2197 client()->didFailProvisionalLoad(this, webError); 2207 client()->didFailProvisionalLoad(this, webError);
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 2361
2352 String scriptResult; 2362 String scriptResult;
2353 if (!result.getString(scriptResult)) 2363 if (!result.getString(scriptResult))
2354 return; 2364 return;
2355 2365
2356 if (!m_frame->navigationScheduler()->locationChangePending()) 2366 if (!m_frame->navigationScheduler()->locationChangePending())
2357 m_frame->document()->loader()->writer()->replaceDocument(scriptResult, o wnerDocument.get()); 2367 m_frame->document()->loader()->writer()->replaceDocument(scriptResult, o wnerDocument.get());
2358 } 2368 }
2359 2369
2360 } // namespace WebKit 2370 } // namespace WebKit
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/ChangeLog ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698