Index: webkit/glue/webframe_impl.cc |
=================================================================== |
--- webkit/glue/webframe_impl.cc (revision 13158) |
+++ webkit/glue/webframe_impl.cc (working copy) |
@@ -136,7 +136,7 @@ |
#include "skia/ext/bitmap_platform_device.h" |
#include "skia/ext/platform_canvas.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" |
-#include "third_party/WebKit/WebKit/chromium/public/WebFindInPageRequest.h" |
+#include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h" |
#include "webkit/glue/alt_error_page_resource_fetcher.h" |
#include "webkit/glue/dom_operations.h" |
@@ -162,6 +162,7 @@ |
#endif |
using base::Time; |
+ |
using WebCore::ChromeClientChromium; |
using WebCore::Color; |
using WebCore::Document; |
@@ -194,8 +195,9 @@ |
using WebCore::TextIterator; |
using WebCore::VisiblePosition; |
using WebCore::XPathResult; |
+ |
using WebKit::WebConsoleMessage; |
-using WebKit::WebFindInPageRequest; |
+using WebKit::WebFindOptions; |
using WebKit::WebScriptSource; |
// Key for a StatsCounter tracking how many WebFrames are active. |
@@ -947,24 +949,25 @@ |
frames_scoping_count_ = 0; |
} |
-bool WebFrameImpl::Find(const WebFindInPageRequest& request, |
+bool WebFrameImpl::Find(int request_id, |
+ const string16& search_text, |
+ const WebFindOptions& options, |
bool wrap_within_frame, |
gfx::Rect* selection_rect) { |
- WebCore::String webcore_string = |
- webkit_glue::WebStringToString(request.text); |
+ WebCore::String webcore_string = webkit_glue::String16ToString(search_text); |
WebFrameImpl* const main_frame_impl = |
static_cast<WebFrameImpl*>(GetView()->GetMainFrame()); |
- if (!request.findNext) |
+ if (!options.findNext) |
frame()->page()->unmarkAllTextMatches(); |
// Starts the search from the current selection. |
bool start_in_selection = true; |
DCHECK(frame() && frame()->view()); |
- bool found = frame()->findString(webcore_string, request.forward, |
- request.matchCase, wrap_within_frame, |
+ bool found = frame()->findString(webcore_string, options.forward, |
+ options.matchCase, wrap_within_frame, |
start_in_selection); |
if (found) { |
#if defined(OS_WIN) |
@@ -993,7 +996,7 @@ |
curr_selection_rect = active_match_->boundingBox(); |
} |
- if (!request.findNext) { |
+ if (!options.findNext) { |
// This is a Find operation, so we set the flag to ask the scoping effort |
// to find the active rect for us so we can update the ordinal (n of m). |
locating_active_rect_ = true; |
@@ -1002,14 +1005,14 @@ |
// If the active frame has changed it means that we have a multi-frame |
// page and we just switch to searching in a new frame. Then we just |
// want to reset the index. |
- if (request.forward) |
+ if (options.forward) |
active_match_index_ = 0; |
else |
active_match_index_ = last_match_count_ - 1; |
} else { |
// We are still the active frame, so increment (or decrement) the |
// |active_match_index|, wrapping if needed (on single frame pages). |
- request.forward ? ++active_match_index_ : --active_match_index_; |
+ options.forward ? ++active_match_index_ : --active_match_index_; |
if (active_match_index_ + 1 > last_match_count_) |
active_match_index_ = 0; |
if (active_match_index_ + 1 == 0) |
@@ -1026,7 +1029,7 @@ |
ReportFindInPageSelection(rect, |
active_match_index_ + 1, |
- request.identifier); |
+ request_id); |
} |
#endif |
} |
@@ -1058,7 +1061,7 @@ |
return ordinal; |
} |
-bool WebFrameImpl::ShouldScopeMatches(const WebFindInPageRequest& request) { |
+bool WebFrameImpl::ShouldScopeMatches(const string16& search_text) { |
// Don't scope if we can't find a frame or if the frame is not visible. |
// The user may have closed the tab/application, so abort. |
if (!frame() || !Visible()) |
@@ -1073,7 +1076,7 @@ |
!last_search_string_.empty() && last_match_count_ == 0) { |
// Check to see if the search string prefixes match. |
string16 previous_search_prefix = |
- string16(request.text).substr(0, last_search_string_.length()); |
+ search_text.substr(0, last_search_string_.length()); |
if (previous_search_prefix == last_search_string_) { |
return false; // Don't search this frame, it will be fruitless. |
@@ -1134,9 +1137,11 @@ |
} |
} |
-void WebFrameImpl::ScopeStringMatches(const WebFindInPageRequest& request, |
+void WebFrameImpl::ScopeStringMatches(int request_id, |
+ const string16& search_text, |
+ const WebFindOptions& options, |
bool reset) { |
- if (!ShouldScopeMatches(request)) |
+ if (!ShouldScopeMatches(search_text)) |
return; |
WebFrameImpl* main_frame_impl = |
@@ -1161,13 +1166,14 @@ |
MessageLoop::current()->PostTask(FROM_HERE, |
scope_matches_factory_.NewRunnableMethod( |
&WebFrameImpl::ScopeStringMatches, |
- request, |
+ request_id, |
+ search_text, |
+ options, |
false)); // false=we just reset, so don't do it again. |
return; |
} |
- WebCore::String webcore_string = |
- webkit_glue::WebStringToString(request.text); |
+ WebCore::String webcore_string = webkit_glue::String16ToString(search_text); |
RefPtr<Range> search_range(rangeOfContents(frame()->document())); |
@@ -1202,7 +1208,7 @@ |
RefPtr<Range> result_range(findPlainText(search_range.get(), |
webcore_string, |
true, |
- request.matchCase)); |
+ options.matchCase)); |
if (result_range->collapsed(ec)) { |
if (!result_range->startContainer()->isInShadowTree()) |
break; |
@@ -1257,7 +1263,7 @@ |
// To stop looking for the active tickmark, we set this flag. |
locating_active_rect_ = false; |
- #if defined(OS_WIN) |
+#if defined(OS_WIN) |
// TODO(pinkerton): Fix Mac invalidation to be more like Win ScrollView |
// Notify browser of new location for the selected rectangle. |
result_bounds.move(-frameview()->scrollOffset().width(), |
@@ -1266,8 +1272,8 @@ |
webkit_glue::FromIntRect( |
frame()->view()->convertToContainingWindow(result_bounds)), |
active_match_index_ + 1, |
- request.identifier); |
- #endif |
+ request_id); |
+#endif |
} |
} |
@@ -1277,7 +1283,7 @@ |
// Remember what we search for last time, so we can skip searching if more |
// letters are added to the search string (and last outcome was 0). |
- last_search_string_ = request.text; |
+ last_search_string_ = search_text; |
if (match_count > 0) { |
frame()->setMarkedTextMatchesAreHighlighted(true); |
@@ -1285,7 +1291,7 @@ |
last_match_count_ += match_count; |
// Let the mainframe know how much we found during this pass. |
- main_frame_impl->IncreaseMatchCount(match_count, request.identifier); |
+ main_frame_impl->IncreaseMatchCount(match_count, request_id); |
} |
if (timeout) { |
@@ -1299,7 +1305,9 @@ |
MessageLoop::current()->PostTask(FROM_HERE, |
scope_matches_factory_.NewRunnableMethod( |
&WebFrameImpl::ScopeStringMatches, |
- request, |
+ request_id, |
+ search_text, |
+ options, |
false)); // don't reset. |
return; // Done for now, resume work later. |
@@ -1313,12 +1321,10 @@ |
// If this is the last frame to finish scoping we need to trigger the final |
// update to be sent. |
if (main_frame_impl->frames_scoping_count_ == 0) |
- main_frame_impl->IncreaseMatchCount(0, request.identifier); |
+ main_frame_impl->IncreaseMatchCount(0, request_id); |
// This frame is done, so show any scrollbar tickmarks we haven't drawn yet. |
InvalidateArea(INVALIDATE_SCROLLBAR); |
- |
- return; |
} |
void WebFrameImpl::CancelPendingScopingEffort() { |