Commit 4ab438c6 authored by Eugene But's avatar Eugene But Committed by Commit Bot

Removed unused code from RequestTrackerImpl.

Removed CRWRequestTrackerDelegate and SSLCarrier classes because no one
implements CRWRequestTrackerDelegate protocol after moving to WKWebView.

Bug: 585700, 579697
Change-Id: I1895ed00a6134a9e4d08f7a511b1f451c2f2a841
Reviewed-on: https://chromium-review.googlesource.com/691216Reviewed-by: default avatarMihai Sardarescu <msarda@chromium.org>
Reviewed-by: default avatarJérôme Lebel <jlebel@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Eugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505432}
parent be192595
...@@ -160,7 +160,7 @@ void RegisterUserAgentForUIWebView(NSString* user_agent) { ...@@ -160,7 +160,7 @@ void RegisterUserAgentForUIWebView(NSString* user_agent) {
DCHECK(g_external_browser_state); DCHECK(g_external_browser_state);
g_request_tracker = web::RequestTrackerImpl::CreateTrackerForRequestGroupID( g_request_tracker = web::RequestTrackerImpl::CreateTrackerForRequestGroupID(
ChromeWebView::kExternalRequestGroupID, g_external_browser_state, ChromeWebView::kExternalRequestGroupID, g_external_browser_state,
[self requestContextForExternalService:externalService], nil); [self requestContextForExternalService:externalService]);
} }
return [[UIWebView alloc] initWithFrame:CGRectZero]; return [[UIWebView alloc] initWithFrame:CGRectZero];
} }
......
...@@ -500,7 +500,6 @@ void HttpProtocolHandlerCore::StartReading() { ...@@ -500,7 +500,6 @@ void HttpProtocolHandlerCore::StartReading() {
#endif // !defined(NDEBUG) #endif // !defined(NDEBUG)
if (tracker_) { if (tracker_) {
tracker_->CaptureHeaders(net_request_);
long long expectedContentLength = [response expectedContentLength]; long long expectedContentLength = [response expectedContentLength];
if (expectedContentLength > 0) if (expectedContentLength > 0)
tracker_->CaptureExpectedLength(net_request_, expectedContentLength); tracker_->CaptureExpectedLength(net_request_, expectedContentLength);
......
...@@ -67,9 +67,6 @@ class RequestTracker { ...@@ -67,9 +67,6 @@ class RequestTracker {
// Informs the tracker that a request has started. // Informs the tracker that a request has started.
virtual void StartRequest(URLRequest* request) = 0; virtual void StartRequest(URLRequest* request) = 0;
// Informs the tracker that the headers for the request are available.
virtual void CaptureHeaders(URLRequest* request) = 0;
// Informs the tracker the expected length of the result, if known. // Informs the tracker the expected length of the result, if known.
virtual void CaptureExpectedLength(const URLRequest* request, virtual void CaptureExpectedLength(const URLRequest* request,
uint64_t length) = 0; uint64_t length) = 0;
......
...@@ -99,7 +99,6 @@ source_set("web") { ...@@ -99,7 +99,6 @@ source_set("web") {
"net/cookie_notification_bridge.mm", "net/cookie_notification_bridge.mm",
"net/crw_cert_verification_controller.h", "net/crw_cert_verification_controller.h",
"net/crw_cert_verification_controller.mm", "net/crw_cert_verification_controller.mm",
"net/crw_request_tracker_delegate.h",
"net/crw_ssl_status_updater.h", "net/crw_ssl_status_updater.h",
"net/crw_ssl_status_updater.mm", "net/crw_ssl_status_updater.mm",
"net/request_group_util.h", "net/request_group_util.h",
......
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_WEB_NET_CRW_REQUEST_TRACKER_DELEGATE_H_
#define IOS_WEB_NET_CRW_REQUEST_TRACKER_DELEGATE_H_
#include <vector>
#include "net/cert/cert_status_flags.h"
class GURL;
namespace net {
class HttpResponseHeaders;
class SSLInfo;
class X509Certificate;
}
namespace web {
struct SSLStatus;
}
// All the methods in this protocol must be sent on the main thread.
@protocol CRWRequestTrackerDelegate
// The tracker calls this method every time there is a change in the SSL status
// of a page. The info is whatever object was passed to TrimToURL().
- (void)updatedSSLStatus:(const web::SSLStatus&)sslStatus
forPageUrl:(const GURL&)url
userInfo:(id)userInfo;
// The tracker calls this method when it receives response headers.
- (void)handleResponseHeaders:(net::HttpResponseHeaders*)headers
requestUrl:(const GURL&)requestUrl;
// Update the progress.
- (void)updatedProgress:(float)progress;
// This method is called when a certificate with an error is in use.
- (void)certificateUsed:(net::X509Certificate*)certificate
forHost:(const std::string&)host
status:(net::CertStatus)status;
// Called when all the active allowed certificates need to be cleared. This
// happens during the TrimToURL(), which corresponds to a navigation.
- (void)clearCertificates;
@end
#endif // IOS_WEB_NET_CRW_REQUEST_TRACKER_DELEGATE_H_
...@@ -18,21 +18,18 @@ ...@@ -18,21 +18,18 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#import "ios/net/request_tracker.h" #import "ios/net/request_tracker.h"
#import "ios/web/net/crw_request_tracker_delegate.h"
#include "ios/web/public/web_thread.h" #include "ios/web/public/web_thread.h"
#include "net/cert/cert_status_flags.h"
#include "net/url_request/url_request_context_getter.h" #include "net/url_request/url_request_context_getter.h"
#include "url/gurl.h" #include "url/gurl.h"
@class SSLCarrier; @class SSLCarrier;
@class CRWSSLCarrier;
struct TrackerCounts; struct TrackerCounts;
namespace net { namespace net {
class HttpResponseHeaders;
class URLRequest; class URLRequest;
class URLRequestContext; class URLRequestContext;
class SSLInfo; class SSLInfo;
class X509Certificate;
} }
namespace web { namespace web {
...@@ -116,8 +113,7 @@ class RequestTrackerImpl ...@@ -116,8 +113,7 @@ class RequestTrackerImpl
static scoped_refptr<RequestTrackerImpl> CreateTrackerForRequestGroupID( static scoped_refptr<RequestTrackerImpl> CreateTrackerForRequestGroupID(
NSString* request_group_id, NSString* request_group_id,
BrowserState* browser_state, BrowserState* browser_state,
net::URLRequestContextGetter* context_getter, net::URLRequestContextGetter* context_getter);
id<CRWRequestTrackerDelegate> delegate);
// The network layer has no way to know which network request is the primary // The network layer has no way to know which network request is the primary
// one for a page load. The tab knows, either because it initiated the page // one for a page load. The tab knows, either because it initiated the page
...@@ -189,7 +185,6 @@ class RequestTrackerImpl ...@@ -189,7 +185,6 @@ class RequestTrackerImpl
// RequestTracker implementation. // RequestTracker implementation.
void StartRequest(net::URLRequest* request) override; void StartRequest(net::URLRequest* request) override;
void CaptureHeaders(net::URLRequest* request) override;
void CaptureExpectedLength(const net::URLRequest* request, void CaptureExpectedLength(const net::URLRequest* request,
uint64_t length) override; uint64_t length) override;
void CaptureReceivedBytes(const net::URLRequest* request, void CaptureReceivedBytes(const net::URLRequest* request,
...@@ -213,8 +208,7 @@ class RequestTrackerImpl ...@@ -213,8 +208,7 @@ class RequestTrackerImpl
// Private. RequestTrackerImpls are created through // Private. RequestTrackerImpls are created through
// CreateTrackerForRequestGroupID(). // CreateTrackerForRequestGroupID().
RequestTrackerImpl(NSString* request_group_id, RequestTrackerImpl(NSString* request_group_id,
net::URLRequestContextGetter* context_getter, net::URLRequestContextGetter* context_getter);
id<CRWRequestTrackerDelegate> delegate);
void InitOnIOThread( void InitOnIOThread(
const scoped_refptr<web::CertificatePolicyCache>& policy_cache); const scoped_refptr<web::CertificatePolicyCache>& policy_cache);
...@@ -242,9 +236,6 @@ class RequestTrackerImpl ...@@ -242,9 +236,6 @@ class RequestTrackerImpl
// and load progress. // and load progress.
void StackNotification(); void StackNotification();
// Notify the consumer about the SSL status of this tracker's page load.
void SSLNotify();
// If the counts is for a request currently waiting for the user to approve it // If the counts is for a request currently waiting for the user to approve it
// will reevaluate the approval. // will reevaluate the approval.
void EvaluateSSLCallbackForCounts(TrackerCounts* counts); void EvaluateSSLCallbackForCounts(TrackerCounts* counts);
...@@ -264,7 +255,6 @@ class RequestTrackerImpl ...@@ -264,7 +255,6 @@ class RequestTrackerImpl
// The URL change notification is often late, therefore the mixed content // The URL change notification is often late, therefore the mixed content
// status and the certificate policies may need to be recomputed. // status and the certificate policies may need to be recomputed.
void RecomputeMixedContent(const TrackerCounts* split_position); void RecomputeMixedContent(const TrackerCounts* split_position);
void RecomputeCertificatePolicy(const TrackerCounts* split_position);
// Remove all finished request up to the last instance of |url|. If url is not // Remove all finished request up to the last instance of |url|. If url is not
// found, this will clear all the requests. // found, this will clear all the requests.
...@@ -278,30 +268,6 @@ class RequestTrackerImpl ...@@ -278,30 +268,6 @@ class RequestTrackerImpl
// |load_success| indicates if the page successfully loaded. // |load_success| indicates if the page successfully loaded.
void StopPageLoad(const GURL& url, bool load_success); void StopPageLoad(const GURL& url, bool load_success);
#pragma mark Private Consumer API
// Private methods that call into delegate methods.
// Notify* methods are posted to the UI thread by the provider API
// methods.
// Has the delegate handle |headers| for |request_url|.
void NotifyResponseHeaders(net::HttpResponseHeaders* headers,
const GURL& request_url);
// Notifies the deleage of certificate use.
void NotifyCertificateUsed(net::X509Certificate* certificate,
const std::string& host,
net::CertStatus status);
// Notifies the deleate of a load completion estimate.
void NotifyUpdatedProgress(float estimate);
// Has the delegate clear SSL certificates.
void NotifyClearCertificates();
// Notifies the delegate of an SSL status update.
void NotifyUpdatedSSLStatus(base::scoped_nsobject<CRWSSLCarrier> carrier);
#pragma mark Internal utilities for task posting #pragma mark Internal utilities for task posting
// Posts |task| to |thread|. Must not be called from |thread|. If |thread| is // Posts |task| to |thread|. Must not be called from |thread|. If |thread| is
// the IO thread, silently returns if |is_closing_| is true. // the IO thread, silently returns if |is_closing_| is true.
...@@ -318,11 +284,6 @@ class RequestTrackerImpl ...@@ -318,11 +284,6 @@ class RequestTrackerImpl
// only from the IO thread. // only from the IO thread.
NSString* UnsafeDescription(); NSString* UnsafeDescription();
#pragma mark Non thread-safe fields, only accessed from the main thread.
// The RequestTrackerImpl delegate. All changes and access to this object
// should be done on the main thread.
id<CRWRequestTrackerDelegate> delegate_; // Weak.
#pragma mark Non thread-safe fields, only accessed from the IO thread. #pragma mark Non thread-safe fields, only accessed from the IO thread.
// All the tracked requests for the page, indexed by net::URLRequest (Cast as // All the tracked requests for the page, indexed by net::URLRequest (Cast as
// a void* to avoid the temptation of accessing it from the wrong thread). // a void* to avoid the temptation of accessing it from the wrong thread).
......
This diff is collapsed.
...@@ -40,8 +40,7 @@ ...@@ -40,8 +40,7 @@
#error "This file requires ARC support." #error "This file requires ARC support."
#endif #endif
@interface RequestTrackerNotificationReceiverTest @interface RequestTrackerNotificationReceiverTest : NSObject {
: NSObject<CRWRequestTrackerDelegate> {
@public @public
float value_; float value_;
float max_; float max_;
...@@ -65,50 +64,14 @@ ...@@ -65,50 +64,14 @@
return self; return self;
} }
- (void)updatedProgress:(float)progress {
if (progress > 0.0f) {
if (progress < value_) {
error_ = [NSString
stringWithFormat:@"going down from %f to %f", value_, progress];
}
value_ = progress;
} else {
value_ = 0.0f;
}
if (value_ > max_) {
max_ = value_;
}
}
- (NSString*)error { - (NSString*)error {
return error_; return error_;
} }
- (void)handleResponseHeaders:(net::HttpResponseHeaders*)headers
requestUrl:(const GURL&)requestUrl {
headers_ = headers;
}
- (net::HttpResponseHeaders*)headers { - (net::HttpResponseHeaders*)headers {
return headers_.get(); return headers_.get();
} }
- (void)updatedSSLStatus:(const web::SSLStatus&)sslStatus
forPageUrl:(const GURL&)url
userInfo:(id)userInfo {
// Nothing. yet.
}
- (void)certificateUsed:(net::X509Certificate*)certificate
forHost:(const std::string&)host
status:(net::CertStatus)status {
// Nothing, yet.
}
- (void)clearCertificates {
// Nothing, yet.
}
@end @end
namespace { namespace {
...@@ -142,12 +105,8 @@ class RequestTrackerTest : public PlatformTest { ...@@ -142,12 +105,8 @@ class RequestTrackerTest : public PlatformTest {
DCHECK_CURRENTLY_ON(web::WebThread::UI); DCHECK_CURRENTLY_ON(web::WebThread::UI);
request_group_id_ = [NSString stringWithFormat:@"test%d", g_count++]; request_group_id_ = [NSString stringWithFormat:@"test%d", g_count++];
receiver_ = [[RequestTrackerNotificationReceiverTest alloc] init];
tracker_ = web::RequestTrackerImpl::CreateTrackerForRequestGroupID( tracker_ = web::RequestTrackerImpl::CreateTrackerForRequestGroupID(
request_group_id_, request_group_id_, &browser_state_, browser_state_.GetRequestContext());
&browser_state_,
browser_state_.GetRequestContext(),
receiver_);
} }
void TearDown() override { void TearDown() override {
...@@ -159,7 +118,6 @@ class RequestTrackerTest : public PlatformTest { ...@@ -159,7 +118,6 @@ class RequestTrackerTest : public PlatformTest {
web::TestWebThread ui_thread_; web::TestWebThread ui_thread_;
web::TestWebThread io_thread_; web::TestWebThread io_thread_;
RequestTrackerNotificationReceiverTest* receiver_;
scoped_refptr<web::RequestTrackerImpl> tracker_; scoped_refptr<web::RequestTrackerImpl> tracker_;
NSString* request_group_id_; NSString* request_group_id_;
web::TestBrowserState browser_state_; web::TestBrowserState browser_state_;
...@@ -193,8 +151,6 @@ class RequestTrackerTest : public PlatformTest { ...@@ -193,8 +151,6 @@ class RequestTrackerTest : public PlatformTest {
DCHECK_CURRENTLY_ON(web::WebThread::UI); DCHECK_CURRENTLY_ON(web::WebThread::UI);
base::Time maxDate = base::Time::Now() + base::TimeDelta::FromSeconds(10); base::Time maxDate = base::Time::Now() + base::TimeDelta::FromSeconds(10);
while (!condition()) { while (!condition()) {
if ([receiver_ error])
return [receiver_ error];
if (base::Time::Now() > maxDate) if (base::Time::Now() > maxDate)
return @"Time is up, too slow to go"; return @"Time is up, too slow to go";
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
...@@ -203,28 +159,14 @@ class RequestTrackerTest : public PlatformTest { ...@@ -203,28 +159,14 @@ class RequestTrackerTest : public PlatformTest {
return nil; return nil;
} }
NSString* CheckActive() {
NSString* message = WaitUntilLoop(^{
return (receiver_->value_ > 0.0f);
});
if (!message && (receiver_->max_ == 0.0f))
message = @"Max should be greater than 0.0";
return message;
}
void TrimRequest(NSString* tab_id, const GURL& url) { void TrimRequest(NSString* tab_id, const GURL& url) {
DCHECK_CURRENTLY_ON(web::WebThread::UI); DCHECK_CURRENTLY_ON(web::WebThread::UI);
receiver_->value_ = 0.0f;
receiver_->max_ = 0.0f;
tracker_->StartPageLoad(url, nil); tracker_->StartPageLoad(url, nil);
} }
void EndPage(NSString* tab_id, const GURL& url) { void EndPage(NSString* tab_id, const GURL& url) {
DCHECK_CURRENTLY_ON(web::WebThread::UI); DCHECK_CURRENTLY_ON(web::WebThread::UI);
tracker_->FinishPageLoad(url, false); tracker_->FinishPageLoad(url, false);
receiver_->value_ = 0.0f;
receiver_->max_ = 0.0f;
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
} }
...@@ -276,7 +218,6 @@ TEST_F(RequestTrackerTest, OnePage) { ...@@ -276,7 +218,6 @@ TEST_F(RequestTrackerTest, OnePage) {
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
// Start page load. // Start page load.
TrimRequest(request_group_id_, GetURL(0)); TrimRequest(request_group_id_, GetURL(0));
EXPECT_NSEQ(nil, CheckActive());
// Stop the request. // Stop the request.
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
...@@ -293,7 +234,6 @@ TEST_F(RequestTrackerTest, OneSecurePage) { ...@@ -293,7 +234,6 @@ TEST_F(RequestTrackerTest, OneSecurePage) {
// Start a request. // Start a request.
tracker_->StartRequest(request); tracker_->StartRequest(request);
tracker_->CaptureReceivedBytes(request, 42); tracker_->CaptureReceivedBytes(request, 42);
EXPECT_NSEQ(nil, CheckActive());
// Stop the request. // Stop the request.
tracker_->StopRequest(request); tracker_->StopRequest(request);
...@@ -307,18 +247,14 @@ TEST_F(RequestTrackerTest, OnePageAndResources) { ...@@ -307,18 +247,14 @@ TEST_F(RequestTrackerTest, OnePageAndResources) {
// Start two requests. // Start two requests.
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
tracker_->StartRequest(GetRequest(1)); tracker_->StartRequest(GetRequest(1));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
tracker_->StartRequest(GetRequest(2)); tracker_->StartRequest(GetRequest(2));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(1)); tracker_->StopRequest(GetRequest(1));
tracker_->StartRequest(GetRequest(3)); tracker_->StartRequest(GetRequest(3));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(2)); tracker_->StopRequest(GetRequest(2));
tracker_->StartRequest(GetRequest(4)); tracker_->StartRequest(GetRequest(4));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(3)); tracker_->StopRequest(GetRequest(3));
tracker_->StopRequest(GetRequest(4)); tracker_->StopRequest(GetRequest(4));
...@@ -331,7 +267,6 @@ TEST_F(RequestTrackerTest, OnePageOneBigImage) { ...@@ -331,7 +267,6 @@ TEST_F(RequestTrackerTest, OnePageOneBigImage) {
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
tracker_->StartRequest(GetRequest(1)); tracker_->StartRequest(GetRequest(1));
EXPECT_NSEQ(nil, CheckActive());
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
tracker_->CaptureExpectedLength(GetRequest(1), 100); tracker_->CaptureExpectedLength(GetRequest(1), 100);
...@@ -339,7 +274,6 @@ TEST_F(RequestTrackerTest, OnePageOneBigImage) { ...@@ -339,7 +274,6 @@ TEST_F(RequestTrackerTest, OnePageOneBigImage) {
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
EXPECT_NSEQ(nil, CheckActive());
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
tracker_->CaptureReceivedBytes(GetRequest(1), 10); tracker_->CaptureReceivedBytes(GetRequest(1), 10);
...@@ -354,10 +288,8 @@ TEST_F(RequestTrackerTest, TwoPagesPostStart) { ...@@ -354,10 +288,8 @@ TEST_F(RequestTrackerTest, TwoPagesPostStart) {
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
TrimRequest(request_group_id_, GetURL(0)); TrimRequest(request_group_id_, GetURL(0));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StartRequest(GetRequest(1)); tracker_->StartRequest(GetRequest(1));
tracker_->StartRequest(GetRequest(2)); tracker_->StartRequest(GetRequest(2));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
tracker_->StopRequest(GetRequest(1)); tracker_->StopRequest(GetRequest(1));
...@@ -367,7 +299,6 @@ TEST_F(RequestTrackerTest, TwoPagesPostStart) { ...@@ -367,7 +299,6 @@ TEST_F(RequestTrackerTest, TwoPagesPostStart) {
tracker_->StartRequest(GetRequest(3)); tracker_->StartRequest(GetRequest(3));
TrimRequest(request_group_id_, GetURL(3)); TrimRequest(request_group_id_, GetURL(3));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(3)); tracker_->StopRequest(GetRequest(3));
EndPage(request_group_id_, GetURL(3)); EndPage(request_group_id_, GetURL(3));
...@@ -377,10 +308,8 @@ TEST_F(RequestTrackerTest, TwoPagesPreStart) { ...@@ -377,10 +308,8 @@ TEST_F(RequestTrackerTest, TwoPagesPreStart) {
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
TrimRequest(request_group_id_, GetURL(0)); TrimRequest(request_group_id_, GetURL(0));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StartRequest(GetRequest(1)); tracker_->StartRequest(GetRequest(1));
tracker_->StartRequest(GetRequest(2)); tracker_->StartRequest(GetRequest(2));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
tracker_->StopRequest(GetRequest(1)); tracker_->StopRequest(GetRequest(1));
...@@ -397,58 +326,21 @@ TEST_F(RequestTrackerTest, TwoPagesNoWait) { ...@@ -397,58 +326,21 @@ TEST_F(RequestTrackerTest, TwoPagesNoWait) {
tracker_->StartRequest(GetRequest(0)); tracker_->StartRequest(GetRequest(0));
TrimRequest(request_group_id_, GetURL(0)); TrimRequest(request_group_id_, GetURL(0));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StartRequest(GetRequest(1)); tracker_->StartRequest(GetRequest(1));
tracker_->StartRequest(GetRequest(2)); tracker_->StartRequest(GetRequest(2));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(0)); tracker_->StopRequest(GetRequest(0));
tracker_->StopRequest(GetRequest(1)); tracker_->StopRequest(GetRequest(1));
tracker_->StopRequest(GetRequest(2)); tracker_->StopRequest(GetRequest(2));
EXPECT_NSEQ(nil, CheckActive());
TrimRequest(request_group_id_, GetURL(3)); TrimRequest(request_group_id_, GetURL(3));
tracker_->StartRequest(GetRequest(3)); tracker_->StartRequest(GetRequest(3));
EXPECT_NSEQ(nil, CheckActive());
tracker_->StopRequest(GetRequest(3)); tracker_->StopRequest(GetRequest(3));
EXPECT_NSEQ(nil, CheckActive());
EndPage(request_group_id_, GetURL(3)); EndPage(request_group_id_, GetURL(3));
} }
TEST_F(RequestTrackerTest, CaptureHeaders) {
std::string headers =
"HTTP/1.1 200 OK\n"
"content-type: multipart/mixed; boundary=inner\n"
"content-disposition: attachment; filename=\"name.pdf\"\n"
"X-Auto-Login: Hello World\n\n";
for (size_t i = 0; i < headers.length(); i++) {
if (headers.data()[i] == '\n')
const_cast<char*>(headers.data())[i] = '\0';
}
net::URLRequest* request = GetRequest(0);
// TODO(mmenke): This is really bizarre. Do something more reasonable.
const_cast<net::HttpResponseInfo&>(request->response_info()).headers =
new net::HttpResponseHeaders(headers);
std::unique_ptr<net::URLRequestTestJob> job(new net::URLRequestTestJob(
request, request->context()->network_delegate(), headers, "", false));
AddInterceptorToRequest(0)->set_main_intercept_job(std::move(job));
request->Start();
tracker_->StartRequest(request);
tracker_->CaptureHeaders(request);
tracker_->StopRequest(request);
base::RunLoop().RunUntilIdle();
EXPECT_TRUE([receiver_ headers]->HasHeaderValue("X-Auto-Login",
"Hello World"));
std::string mimeType;
EXPECT_TRUE([receiver_ headers]->GetMimeType(&mimeType));
EXPECT_EQ("multipart/mixed", mimeType);
EXPECT_TRUE([receiver_ headers]->HasHeaderValue(
"Content-Disposition", "attachment; filename=\"name.pdf\""));
}
// Do-nothing mock CertificatePolicyCache. Allows all certs for all hosts. // Do-nothing mock CertificatePolicyCache. Allows all certs for all hosts.
class MockCertificatePolicyCache : public web::CertificatePolicyCache { class MockCertificatePolicyCache : public web::CertificatePolicyCache {
public: public:
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "ios/web/net/crw_request_tracker_delegate.h"
#import "ios/web/public/web_state/js/crw_js_injection_evaluator.h" #import "ios/web/public/web_state/js/crw_js_injection_evaluator.h"
#import "ios/web/public/web_state/ui/crw_web_delegate.h" #import "ios/web/public/web_state/ui/crw_web_delegate.h"
#include "ios/web/public/web_state/url_verification_constants.h" #include "ios/web/public/web_state/url_verification_constants.h"
......
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