Commit eaad22ec authored by eroman@chromium.org's avatar eroman@chromium.org

Use "GURL::possibly_invalid_spec()" rather than "GURL::spec()", in case the...

Use "GURL::possibly_invalid_spec()" rather than "GURL::spec()", in case the GURL that was passed to URLRequest(const GURL&) is invalid.

BUG=http://crbug.com/21423

Review URL: http://codereview.chromium.org/192057

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25903 0039d316-1c4b-4281-b951-d872f2087c98
parent 9429b07d
...@@ -101,11 +101,10 @@ URLRequest::InstanceTracker::ExtractInfo(URLRequest* url_request) { ...@@ -101,11 +101,10 @@ URLRequest::InstanceTracker::ExtractInfo(URLRequest* url_request) {
info.original_url = url_request->original_url(); info.original_url = url_request->original_url();
info.load_log = url_request->load_log(); info.load_log = url_request->load_log();
// Paranoia check: truncate really big URLs. // Paranoia check: truncate |info.original_url| if it is really big.
if (info.original_url.spec().size() > kMaxGraveyardURLSize) { const std::string& spec = info.original_url.possibly_invalid_spec();
info.original_url = GURL(url_request->original_url().spec().substr( if (spec.size() > kMaxGraveyardURLSize)
0, kMaxGraveyardURLSize)); info.original_url = GURL(spec.substr(0, kMaxGraveyardURLSize));
}
return info; return info;
} }
......
...@@ -269,7 +269,8 @@ TEST_F(URLRequestTest, Tracking) { ...@@ -269,7 +269,8 @@ TEST_F(URLRequestTest, Tracking) {
TEST_F(URLRequestTest, TrackingGraveyardBounded) { TEST_F(URLRequestTest, TrackingGraveyardBounded) {
URLRequest::InstanceTracker::Get()->ClearRecentlyDeceased(); URLRequest::InstanceTracker::Get()->ClearRecentlyDeceased();
EXPECT_EQ(0u, URLRequest::InstanceTracker::Get()->GetLiveRequests().size()); EXPECT_EQ(0u, URLRequest::InstanceTracker::Get()->GetLiveRequests().size());
EXPECT_EQ(0u, URLRequest::InstanceTracker::Get()->GetLiveRequests().size()); EXPECT_EQ(0u,
URLRequest::InstanceTracker::Get()->GetRecentlyDeceased().size());
const size_t kMaxGraveyardSize = const size_t kMaxGraveyardSize =
URLRequest::InstanceTracker::kMaxGraveyardSize; URLRequest::InstanceTracker::kMaxGraveyardSize;
...@@ -312,6 +313,28 @@ TEST_F(URLRequestTest, TrackingGraveyardBounded) { ...@@ -312,6 +313,28 @@ TEST_F(URLRequestTest, TrackingGraveyardBounded) {
.original_url.spec().size()); .original_url.spec().size());
} }
// Test the instance tracking functionality of URLRequest does not
// fail if the URL was invalid. http://crbug.com/21423.
TEST_F(URLRequestTest, TrackingInvalidURL) {
URLRequest::InstanceTracker::Get()->ClearRecentlyDeceased();
EXPECT_EQ(0u, URLRequest::InstanceTracker::Get()->GetLiveRequests().size());
EXPECT_EQ(0u,
URLRequest::InstanceTracker::Get()->GetRecentlyDeceased().size());
{
GURL invalid_url("xabc");
EXPECT_FALSE(invalid_url.is_valid());
URLRequest req(invalid_url, NULL);
}
// Check that the invalid URL made it into graveyard.
URLRequest::InstanceTracker::RecentRequestInfoList recent_reqs =
URLRequest::InstanceTracker::Get()->GetRecentlyDeceased();
ASSERT_EQ(1u, recent_reqs.size());
EXPECT_FALSE(recent_reqs[0].original_url.is_valid());
}
TEST_F(URLRequestTest, QuitTest) { TEST_F(URLRequestTest, QuitTest) {
// Don't use shared server here because we order it to quit. // Don't use shared server here because we order it to quit.
// It would impact other tests. // It would impact other tests.
......
...@@ -275,7 +275,7 @@ void OutputURLAndLoadLog(const GURL& url, ...@@ -275,7 +275,7 @@ void OutputURLAndLoadLog(const GURL& url,
std::string* out) { std::string* out) {
out->append("<li>"); out->append("<li>");
out->append("<nobr>"); out->append("<nobr>");
out->append(EscapeForHTML(url.spec())); out->append(EscapeForHTML(url.possibly_invalid_spec()));
out->append("</nobr>"); out->append("</nobr>");
if (log) if (log)
OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out); OutputTextInPre(net::LoadLogUtil::PrettyPrintAsEventTree(log), out);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment