[Chromecast] Pass render frame ID into network interceptor.
Cast needs both render process ID and render frame ID for resolving URL requests to owning render frame / web contents. Bug: internal b/116784351 Test: Build cast_shell and run unittests Change-Id: Ib1913e41f33410241fe4d63fffa6c1ee68e18be3 Reviewed-on: https://chromium-review.googlesource.com/c/1280930 Reviewed-by: Luke Halliwell <halliwell@chromium.org> Commit-Queue: Tavis Maclellan <maclellant@chromium.org> Cr-Commit-Position: refs/heads/master@{#600766}
This commit is contained in:

committed by
Commit Bot

parent
5d4efbea58
commit
6057fc833d
@ -613,6 +613,7 @@ void CastContentBrowserClient::SelectClientCertificate(
|
||||
&CastContentBrowserClient::SelectClientCertificateOnIOThread,
|
||||
base::Unretained(this), requesting_url, session_id,
|
||||
web_contents->GetMainFrame()->GetProcess()->GetID(),
|
||||
web_contents->GetMainFrame()->GetRoutingID(),
|
||||
base::SequencedTaskRunnerHandle::Get(),
|
||||
base::Bind(
|
||||
&content::ClientCertificateDelegate::ContinueWithCertificate,
|
||||
@ -623,6 +624,7 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
|
||||
GURL requesting_url,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
scoped_refptr<base::SequencedTaskRunner> original_runner,
|
||||
const base::Callback<void(scoped_refptr<net::X509Certificate>,
|
||||
scoped_refptr<net::SSLPrivateKey>)>&
|
||||
@ -631,7 +633,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
|
||||
CastNetworkDelegate* network_delegate =
|
||||
url_request_context_factory_->app_network_delegate();
|
||||
if (network_delegate->IsWhitelisted(requesting_url, session_id,
|
||||
render_process_id, false)) {
|
||||
render_process_id, render_frame_id,
|
||||
false)) {
|
||||
original_runner->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(continue_callback, DeviceCert(), DeviceKey()));
|
||||
@ -639,7 +642,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
|
||||
} else {
|
||||
LOG(ERROR) << "Invalid host for client certificate request: "
|
||||
<< requesting_url.host()
|
||||
<< " with render_process_id: " << render_process_id;
|
||||
<< " with render_process_id: " << render_process_id
|
||||
<< " and render_frame_id: " << render_frame_id;
|
||||
}
|
||||
original_runner->PostTask(
|
||||
FROM_HERE, base::BindOnce(continue_callback, nullptr, nullptr));
|
||||
|
@ -221,6 +221,7 @@ class CastContentBrowserClient : public content::ContentBrowserClient {
|
||||
GURL requesting_url,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
scoped_refptr<base::SequencedTaskRunner> original_runner,
|
||||
const base::Callback<void(scoped_refptr<net::X509Certificate>,
|
||||
scoped_refptr<net::SSLPrivateKey>)>&
|
||||
|
@ -40,9 +40,10 @@ void CastNetworkDelegate::Initialize() {
|
||||
bool CastNetworkDelegate::IsWhitelisted(const GURL& gurl,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
bool for_device_auth) const {
|
||||
return network_request_interceptor_->IsWhiteListed(
|
||||
gurl, session_id, render_process_id, for_device_auth);
|
||||
gurl, session_id, render_process_id, render_frame_id, for_device_auth);
|
||||
}
|
||||
|
||||
bool CastNetworkDelegate::OnCanAccessFile(
|
||||
@ -84,9 +85,11 @@ int CastNetworkDelegate::OnBeforeURLRequest(
|
||||
if (!content::ResourceRequestInfo::GetRenderFrameForRequest(
|
||||
request, &render_process_id, &render_frame_id)) {
|
||||
render_process_id = content::ChildProcessHost::kInvalidUniqueID;
|
||||
render_frame_id = content::ChildProcessHost::kInvalidUniqueID;
|
||||
}
|
||||
return network_request_interceptor_->OnBeforeURLRequest(
|
||||
request, session_id, render_process_id, std::move(callback), new_url);
|
||||
request, session_id, render_process_id, render_frame_id,
|
||||
std::move(callback), new_url);
|
||||
}
|
||||
|
||||
int CastNetworkDelegate::OnBeforeStartTransaction(
|
||||
|
@ -30,6 +30,7 @@ class CastNetworkDelegate : public net::NetworkDelegateImpl {
|
||||
bool IsWhitelisted(const GURL& gurl,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
bool for_device_auth) const;
|
||||
|
||||
private:
|
||||
|
@ -28,17 +28,19 @@ class MockCastNetworkRequestInterceptor : public CastNetworkRequestInterceptor {
|
||||
MockCastNetworkRequestInterceptor() {}
|
||||
~MockCastNetworkRequestInterceptor() override {}
|
||||
|
||||
MOCK_CONST_METHOD4(IsWhiteListed,
|
||||
MOCK_CONST_METHOD5(IsWhiteListed,
|
||||
bool(const GURL& gurl,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
bool for_device_auth));
|
||||
MOCK_METHOD0(Initialize, void());
|
||||
MOCK_METHOD0(IsInitialized, bool());
|
||||
MOCK_METHOD5(OnBeforeURLRequest,
|
||||
MOCK_METHOD6(OnBeforeURLRequest,
|
||||
int(net::URLRequest* request,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
net::CompletionOnceCallback callback,
|
||||
GURL* new_url));
|
||||
MOCK_METHOD3(OnBeforeStartTransaction,
|
||||
@ -88,7 +90,7 @@ TEST_F(CastNetworkDelegateTest, NotifyBeforeURLRequest) {
|
||||
EXPECT_CALL(*cast_network_request_interceptor_ptr_, IsInitialized())
|
||||
.WillOnce(Return(true));
|
||||
EXPECT_CALL(*cast_network_request_interceptor_ptr_,
|
||||
OnBeforeURLRequest(_, _, _, _, _));
|
||||
OnBeforeURLRequest(_, _, _, _, _, _));
|
||||
|
||||
cast_network_delegate_->NotifyBeforeURLRequest(
|
||||
request.get(), completion_callback.callback(), NULL);
|
||||
|
@ -16,6 +16,7 @@ bool CastNetworkRequestInterceptor::IsWhiteListed(
|
||||
const GURL& /* gurl */,
|
||||
const std::string& /* session_id */,
|
||||
int /* render_process_id */,
|
||||
int /* render_frame_id */,
|
||||
bool /* for_device_auth */) const {
|
||||
return false;
|
||||
}
|
||||
@ -30,6 +31,7 @@ int CastNetworkRequestInterceptor::OnBeforeURLRequest(
|
||||
net::URLRequest* /* request */,
|
||||
const std::string& /* session_id */,
|
||||
int /* render_process_id */,
|
||||
int /* render_frame_id */,
|
||||
net::CompletionOnceCallback /* callback */,
|
||||
GURL* /* new_url */) {
|
||||
return net::OK;
|
||||
|
@ -33,6 +33,7 @@ class CastNetworkRequestInterceptor {
|
||||
virtual bool IsWhiteListed(const GURL& gurl,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
bool for_device_auth) const;
|
||||
virtual void Initialize();
|
||||
virtual bool IsInitialized();
|
||||
@ -40,6 +41,7 @@ class CastNetworkRequestInterceptor {
|
||||
virtual int OnBeforeURLRequest(net::URLRequest* request,
|
||||
const std::string& session_id,
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
net::CompletionOnceCallback callback,
|
||||
GURL* new_url);
|
||||
|
||||
|
Reference in New Issue
Block a user