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

Unified Diff: android_webview/browser/find_helper.cc

Issue 1365563003: Prevent guest views from issuing a search for empty text. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: parens Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/find_helper.cc
diff --git a/android_webview/browser/find_helper.cc b/android_webview/browser/find_helper.cc
index 9a66f0770e58f71f167d4deff451157b77b306a5..7eebbf22587c3fe2354498793f09b99727d7e241 100644
--- a/android_webview/browser/find_helper.cc
+++ b/android_webview/browser/find_helper.cc
@@ -18,14 +18,12 @@ namespace android_webview {
FindHelper::FindHelper(WebContents* web_contents)
: WebContentsObserver(web_contents),
- listener_(NULL),
+ listener_(nullptr),
async_find_started_(false),
- sync_find_started_(false),
find_request_id_counter_(0),
current_request_id_(0),
last_match_count_(-1),
- last_active_ordinal_(-1),
- weak_factory_(this) {
+ last_active_ordinal_(-1) {
}
FindHelper::~FindHelper() {
@@ -39,32 +37,36 @@ void FindHelper::FindAllAsync(const base::string16& search_string) {
// Stop any ongoing asynchronous request.
web_contents()->StopFinding(content::STOP_FIND_ACTION_KEEP_SELECTION);
- sync_find_started_ = false;
async_find_started_ = true;
+ StartNewRequest(search_string);
+
+ if (MaybeHandleEmptySearch(search_string))
+ return;
+
WebFindOptions options;
options.forward = true;
options.matchCase = false;
options.findNext = false;
- StartNewRequest(search_string);
web_contents()->Find(current_request_id_, search_string, options);
}
void FindHelper::HandleFindReply(int request_id,
- int match_count,
- int active_ordinal,
- bool finished) {
- if ((!async_find_started_ && !sync_find_started_) ||
- request_id != current_request_id_) {
+ int match_count,
+ int active_ordinal,
+ bool finished) {
+ if (!async_find_started_ || request_id != current_request_id_)
return;
- }
NotifyResults(active_ordinal, match_count, finished);
}
void FindHelper::FindNext(bool forward) {
- if (!sync_find_started_ && !async_find_started_)
+ if (!async_find_started_)
+ return;
+
+ if (MaybeHandleEmptySearch(last_search_string_))
return;
WebFindOptions options;
@@ -78,13 +80,21 @@ void FindHelper::FindNext(bool forward) {
void FindHelper::ClearMatches() {
web_contents()->StopFinding(content::STOP_FIND_ACTION_CLEAR_SELECTION);
- sync_find_started_ = false;
async_find_started_ = false;
last_search_string_.clear();
last_match_count_ = -1;
last_active_ordinal_ = -1;
}
+bool FindHelper::MaybeHandleEmptySearch(const base::string16& search_string) {
+ if (!search_string.empty())
+ return false;
+
+ web_contents()->StopFinding(content::STOP_FIND_ACTION_CLEAR_SELECTION);
+ NotifyResults(0, 0, true);
+ return true;
+}
+
void FindHelper::StartNewRequest(const base::string16& search_string) {
current_request_id_ = find_request_id_counter_++;
last_search_string_ = search_string;
@@ -93,9 +103,9 @@ void FindHelper::StartNewRequest(const base::string16& search_string) {
}
void FindHelper::NotifyResults(int active_ordinal,
- int match_count,
- bool finished) {
- // Match count or ordinal values set to -1 refer to the received replies.
+ int match_count,
+ bool finished) {
+ // Match count or ordinal values set to -1 refer to received replies.
if (match_count == -1)
match_count = last_match_count_;
else
« no previous file with comments | « android_webview/browser/find_helper.h ('k') | chrome/test/data/extensions/platform_apps/web_view/shim/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698