Reland of place string::find(prefix) == 0 pattern with base::StartsWith(). (patchset #1 id:1 of https://codereview.chromium.org/2131933002/ )
Reason for revert:
Reverting this revert since https://codereview.chromium.org/2135653002/
seems to fix the issue
Original issue's description:
> Revert of Replace string::find(prefix) == 0 pattern with base::StartsWith(). (patchset #2 id:20001 of https://codereview.chromium.org/2121513002/ )
>
> Reason for revert:
> Bisect believes that this CL caused the Win builder to break.
>
> https://build.chromium.org/p/chromium/builders/Win%20x64/builds/2267
> https://build.chromium.org/p/chromium/builders/Win/builds/45048
>
> For context see:
> https://bugs.chromium.org/p/chromium/issues/detail?id=626539
>
> Original issue's description:
> > Replace string::find(prefix) == 0 pattern with base::StartsWith().
> >
> > base::StartsWith() should be O(|prefix|) whereas string::find() is
> > pretty bad, O(|string| * |prefix|).
> >
> > [email protected]
> > BUG=None
> > Test=None, internal cleanup.
> > CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win10_chromium_x64_rel_ng
> >
> > Committed: https://crrev.com/53bfbe932191085b5d69f824a9923bccc26d58dc
> > Cr-Commit-Position: refs/heads/master@{#404307}
>
> [email protected],[email protected]
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=None
>
> Committed: https://crrev.com/f635836294b0221de8531e3ab3720d7fc18e65cd
> Cr-Commit-Position: refs/heads/master@{#404341}
[email protected],[email protected]
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None
Review-Url: https://codereview.chromium.org/2136453004
Cr-Commit-Position: refs/heads/master@{#404342}
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
index b7a9c9fc..a414b17 100644
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -2355,7 +2355,8 @@
std::unique_ptr<net::test_server::HttpResponse> HandleDownloadRequestWithCookie(
std::queue<net::HttpStatusCode>* status_codes,
const net::test_server::HttpRequest& request) {
- if (request.relative_url.find(kDownloadPathPrefix) != 0) {
+ if (!base::StartsWith(request.relative_url, kDownloadPathPrefix,
+ base::CompareCase::SENSITIVE)) {
return std::unique_ptr<net::test_server::HttpResponse>();
}
diff --git a/chrome/browser/chromeos/profiles/profile_helper.cc b/chrome/browser/chromeos/profiles/profile_helper.cc
index 08c4058..91ff48c 100644
--- a/chrome/browser/chromeos/profiles/profile_helper.cc
+++ b/chrome/browser/chromeos/profiles/profile_helper.cc
@@ -7,6 +7,7 @@
#include "base/barrier_closure.h"
#include "base/callback.h"
#include "base/command_line.h"
+#include "base/strings/string_util.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browsing_data/browsing_data_helper.h"
#include "chrome/browser/browsing_data/browsing_data_remover.h"
@@ -138,13 +139,12 @@
// Check that profile directory starts with the correct prefix.
std::string prefix(chrome::kProfileDirPrefix);
- if (profile_dir.find(prefix) != 0) {
+ if (!base::StartsWith(profile_dir, prefix, base::CompareCase::SENSITIVE)) {
// This happens when creating a TestingProfile in browser tests.
return std::string();
}
- return profile_dir.substr(prefix.length(),
- profile_dir.length() - prefix.length());
+ return profile_dir.substr(prefix.length());
}
// static
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc
index ca625e1..fc6b5fb 100644
--- a/chrome/browser/download/download_browsertest.cc
+++ b/chrome/browser/download/download_browsertest.cc
@@ -2558,8 +2558,10 @@
EchoReferrerRequestHandler(const net::test_server::HttpRequest& request) {
const std::string kReferrerHeader = "Referer"; // SIC
- if (request.relative_url.find("/echoreferrer") != 0)
+ if (!base::StartsWith(request.relative_url, "/echoreferrer",
+ base::CompareCase::SENSITIVE)) {
return std::unique_ptr<net::test_server::HttpResponse>();
+ }
std::unique_ptr<net::test_server::BasicHttpResponse> response(
new net::test_server::BasicHttpResponse());
diff --git a/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chrome/browser/extensions/api/cookies/cookies_helpers.cc
index 0ca4569..b507394 100644
--- a/chrome/browser/extensions/api/cookies/cookies_helpers.cc
+++ b/chrome/browser/extensions/api/cookies/cookies_helpers.cc
@@ -134,7 +134,9 @@
const std::string scheme =
cookie.IsSecure() ? url::kHttpsScheme : url::kHttpScheme;
const std::string host =
- domain_key.find('.') != 0 ? domain_key : domain_key.substr(1);
+ base::StartsWith(domain_key, ".", base::CompareCase::SENSITIVE)
+ ? domain_key.substr(1)
+ : domain_key;
return GURL(scheme + url::kStandardSchemeSeparator + host + "/");
}
diff --git a/chrome/browser/profiles/profile_avatar_icon_util.cc b/chrome/browser/profiles/profile_avatar_icon_util.cc
index b0fa75e..7c19797 100644
--- a/chrome/browser/profiles/profile_avatar_icon_util.cc
+++ b/chrome/browser/profiles/profile_avatar_icon_util.cc
@@ -13,6 +13,7 @@
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
@@ -487,7 +488,7 @@
bool IsDefaultAvatarIconUrl(const std::string& url, size_t* icon_index) {
DCHECK(icon_index);
- if (url.find(kDefaultUrlPrefix) != 0)
+ if (!base::StartsWith(url, kDefaultUrlPrefix, base::CompareCase::SENSITIVE))
return false;
int int_value = -1;
diff --git a/chrome/browser/ui/browser_navigator_browsertest.cc b/chrome/browser/ui/browser_navigator_browsertest.cc
index 4c8c1d9..efae8f1 100644
--- a/chrome/browser/ui/browser_navigator_browsertest.cc
+++ b/chrome/browser/ui/browser_navigator_browsertest.cc
@@ -68,7 +68,7 @@
std::string url_string = url.spec();
const std::string long_prefix = "chrome://chrome/";
const std::string short_prefix = "chrome://";
- if (url_string.find(long_prefix) != 0)
+ if (!base::StartsWith(url_string, long_prefix, base::CompareCase::SENSITIVE))
return url;
url_string.replace(0, long_prefix.length(), short_prefix);
return GURL(url_string);
diff --git a/chrome/browser/ui/find_bar/find_bar_controller.cc b/chrome/browser/ui/find_bar/find_bar_controller.cc
index 909749f..f30cf92 100644
--- a/chrome/browser/ui/find_bar/find_bar_controller.cc
+++ b/chrome/browser/ui/find_bar/find_bar_controller.cc
@@ -8,6 +8,7 @@
#include "base/i18n/rtl.h"
#include "base/logging.h"
+#include "base/strings/string_util.h"
#include "build/build_config.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/profiles/profile.h"
@@ -143,8 +144,10 @@
const base::string16& last_search =
find_tab_helper->previous_find_text();
const base::string16& current_search = find_tab_helper->find_text();
- if (last_search.find(current_search) != 0)
+ if (base::StartsWith(last_search, current_search,
+ base::CompareCase::SENSITIVE)) {
find_bar_->AudibleAlert();
+ }
}
}
} else if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED) {
diff --git a/chrome/test/chromedriver/net/adb_client_socket.cc b/chrome/test/chromedriver/net/adb_client_socket.cc
index 0a398acf..9a5a672 100644
--- a/chrome/test/chromedriver/net/adb_client_socket.cc
+++ b/chrome/test/chromedriver/net/adb_client_socket.cc
@@ -271,7 +271,8 @@
bool is_void = current_query_ < queries_.size() - 1;
// The |shell| command is a special case because it is the only command that
// doesn't include a length at the beginning of the data stream.
- bool has_length = query.find("shell:") != 0;
+ bool has_length =
+ !base::StartsWith(query, "shell:", base::CompareCase::SENSITIVE);
SendCommand(query, is_void, has_length,
base::Bind(&AdbQuerySocket::OnResponse, base::Unretained(this)));
}
diff --git a/chrome/test/chromedriver/session_commands.cc b/chrome/test/chromedriver/session_commands.cc
index ecfe4a7..48ad77d7 100644
--- a/chrome/test/chromedriver/session_commands.cc
+++ b/chrome/test/chromedriver/session_commands.cc
@@ -12,6 +12,7 @@
#include "base/files/file_util.h"
#include "base/logging.h" // For CHECK macros.
#include "base/memory/ref_counted.h"
+#include "base/strings/string_util.h"
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -62,10 +63,11 @@
bool WindowHandleToWebViewId(const std::string& window_handle,
std::string* web_view_id) {
- if (window_handle.find(kWindowHandlePrefix) != 0u)
+ if (!base::StartsWith(window_handle, kWindowHandlePrefix,
+ base::CompareCase::SENSITIVE)) {
return false;
- *web_view_id = window_handle.substr(
- std::string(kWindowHandlePrefix).length());
+ }
+ *web_view_id = window_handle.substr(sizeof(kWindowHandlePrefix) - 1);
return true;
}