Commit 6057fc83 authored by Tavis Maclellan's avatar Tavis Maclellan Committed by Commit Bot

[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/1280930Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Commit-Queue: Tavis Maclellan <maclellant@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600766}
parent 5d4efbea
...@@ -613,6 +613,7 @@ void CastContentBrowserClient::SelectClientCertificate( ...@@ -613,6 +613,7 @@ void CastContentBrowserClient::SelectClientCertificate(
&CastContentBrowserClient::SelectClientCertificateOnIOThread, &CastContentBrowserClient::SelectClientCertificateOnIOThread,
base::Unretained(this), requesting_url, session_id, base::Unretained(this), requesting_url, session_id,
web_contents->GetMainFrame()->GetProcess()->GetID(), web_contents->GetMainFrame()->GetProcess()->GetID(),
web_contents->GetMainFrame()->GetRoutingID(),
base::SequencedTaskRunnerHandle::Get(), base::SequencedTaskRunnerHandle::Get(),
base::Bind( base::Bind(
&content::ClientCertificateDelegate::ContinueWithCertificate, &content::ClientCertificateDelegate::ContinueWithCertificate,
...@@ -623,6 +624,7 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread( ...@@ -623,6 +624,7 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
GURL requesting_url, GURL requesting_url,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
scoped_refptr<base::SequencedTaskRunner> original_runner, scoped_refptr<base::SequencedTaskRunner> original_runner,
const base::Callback<void(scoped_refptr<net::X509Certificate>, const base::Callback<void(scoped_refptr<net::X509Certificate>,
scoped_refptr<net::SSLPrivateKey>)>& scoped_refptr<net::SSLPrivateKey>)>&
...@@ -631,7 +633,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread( ...@@ -631,7 +633,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
CastNetworkDelegate* network_delegate = CastNetworkDelegate* network_delegate =
url_request_context_factory_->app_network_delegate(); url_request_context_factory_->app_network_delegate();
if (network_delegate->IsWhitelisted(requesting_url, session_id, if (network_delegate->IsWhitelisted(requesting_url, session_id,
render_process_id, false)) { render_process_id, render_frame_id,
false)) {
original_runner->PostTask( original_runner->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(continue_callback, DeviceCert(), DeviceKey())); base::BindOnce(continue_callback, DeviceCert(), DeviceKey()));
...@@ -639,7 +642,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread( ...@@ -639,7 +642,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
} else { } else {
LOG(ERROR) << "Invalid host for client certificate request: " LOG(ERROR) << "Invalid host for client certificate request: "
<< requesting_url.host() << 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( original_runner->PostTask(
FROM_HERE, base::BindOnce(continue_callback, nullptr, nullptr)); FROM_HERE, base::BindOnce(continue_callback, nullptr, nullptr));
......
...@@ -221,6 +221,7 @@ class CastContentBrowserClient : public content::ContentBrowserClient { ...@@ -221,6 +221,7 @@ class CastContentBrowserClient : public content::ContentBrowserClient {
GURL requesting_url, GURL requesting_url,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
scoped_refptr<base::SequencedTaskRunner> original_runner, scoped_refptr<base::SequencedTaskRunner> original_runner,
const base::Callback<void(scoped_refptr<net::X509Certificate>, const base::Callback<void(scoped_refptr<net::X509Certificate>,
scoped_refptr<net::SSLPrivateKey>)>& scoped_refptr<net::SSLPrivateKey>)>&
......
...@@ -40,9 +40,10 @@ void CastNetworkDelegate::Initialize() { ...@@ -40,9 +40,10 @@ void CastNetworkDelegate::Initialize() {
bool CastNetworkDelegate::IsWhitelisted(const GURL& gurl, bool CastNetworkDelegate::IsWhitelisted(const GURL& gurl,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
bool for_device_auth) const { bool for_device_auth) const {
return network_request_interceptor_->IsWhiteListed( 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( bool CastNetworkDelegate::OnCanAccessFile(
...@@ -84,9 +85,11 @@ int CastNetworkDelegate::OnBeforeURLRequest( ...@@ -84,9 +85,11 @@ int CastNetworkDelegate::OnBeforeURLRequest(
if (!content::ResourceRequestInfo::GetRenderFrameForRequest( if (!content::ResourceRequestInfo::GetRenderFrameForRequest(
request, &render_process_id, &render_frame_id)) { request, &render_process_id, &render_frame_id)) {
render_process_id = content::ChildProcessHost::kInvalidUniqueID; render_process_id = content::ChildProcessHost::kInvalidUniqueID;
render_frame_id = content::ChildProcessHost::kInvalidUniqueID;
} }
return network_request_interceptor_->OnBeforeURLRequest( 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( int CastNetworkDelegate::OnBeforeStartTransaction(
......
...@@ -30,6 +30,7 @@ class CastNetworkDelegate : public net::NetworkDelegateImpl { ...@@ -30,6 +30,7 @@ class CastNetworkDelegate : public net::NetworkDelegateImpl {
bool IsWhitelisted(const GURL& gurl, bool IsWhitelisted(const GURL& gurl,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
bool for_device_auth) const; bool for_device_auth) const;
private: private:
......
...@@ -28,17 +28,19 @@ class MockCastNetworkRequestInterceptor : public CastNetworkRequestInterceptor { ...@@ -28,17 +28,19 @@ class MockCastNetworkRequestInterceptor : public CastNetworkRequestInterceptor {
MockCastNetworkRequestInterceptor() {} MockCastNetworkRequestInterceptor() {}
~MockCastNetworkRequestInterceptor() override {} ~MockCastNetworkRequestInterceptor() override {}
MOCK_CONST_METHOD4(IsWhiteListed, MOCK_CONST_METHOD5(IsWhiteListed,
bool(const GURL& gurl, bool(const GURL& gurl,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
bool for_device_auth)); bool for_device_auth));
MOCK_METHOD0(Initialize, void()); MOCK_METHOD0(Initialize, void());
MOCK_METHOD0(IsInitialized, bool()); MOCK_METHOD0(IsInitialized, bool());
MOCK_METHOD5(OnBeforeURLRequest, MOCK_METHOD6(OnBeforeURLRequest,
int(net::URLRequest* request, int(net::URLRequest* request,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
net::CompletionOnceCallback callback, net::CompletionOnceCallback callback,
GURL* new_url)); GURL* new_url));
MOCK_METHOD3(OnBeforeStartTransaction, MOCK_METHOD3(OnBeforeStartTransaction,
...@@ -88,7 +90,7 @@ TEST_F(CastNetworkDelegateTest, NotifyBeforeURLRequest) { ...@@ -88,7 +90,7 @@ TEST_F(CastNetworkDelegateTest, NotifyBeforeURLRequest) {
EXPECT_CALL(*cast_network_request_interceptor_ptr_, IsInitialized()) EXPECT_CALL(*cast_network_request_interceptor_ptr_, IsInitialized())
.WillOnce(Return(true)); .WillOnce(Return(true));
EXPECT_CALL(*cast_network_request_interceptor_ptr_, EXPECT_CALL(*cast_network_request_interceptor_ptr_,
OnBeforeURLRequest(_, _, _, _, _)); OnBeforeURLRequest(_, _, _, _, _, _));
cast_network_delegate_->NotifyBeforeURLRequest( cast_network_delegate_->NotifyBeforeURLRequest(
request.get(), completion_callback.callback(), NULL); request.get(), completion_callback.callback(), NULL);
......
...@@ -16,6 +16,7 @@ bool CastNetworkRequestInterceptor::IsWhiteListed( ...@@ -16,6 +16,7 @@ bool CastNetworkRequestInterceptor::IsWhiteListed(
const GURL& /* gurl */, const GURL& /* gurl */,
const std::string& /* session_id */, const std::string& /* session_id */,
int /* render_process_id */, int /* render_process_id */,
int /* render_frame_id */,
bool /* for_device_auth */) const { bool /* for_device_auth */) const {
return false; return false;
} }
...@@ -30,6 +31,7 @@ int CastNetworkRequestInterceptor::OnBeforeURLRequest( ...@@ -30,6 +31,7 @@ int CastNetworkRequestInterceptor::OnBeforeURLRequest(
net::URLRequest* /* request */, net::URLRequest* /* request */,
const std::string& /* session_id */, const std::string& /* session_id */,
int /* render_process_id */, int /* render_process_id */,
int /* render_frame_id */,
net::CompletionOnceCallback /* callback */, net::CompletionOnceCallback /* callback */,
GURL* /* new_url */) { GURL* /* new_url */) {
return net::OK; return net::OK;
......
...@@ -33,6 +33,7 @@ class CastNetworkRequestInterceptor { ...@@ -33,6 +33,7 @@ class CastNetworkRequestInterceptor {
virtual bool IsWhiteListed(const GURL& gurl, virtual bool IsWhiteListed(const GURL& gurl,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
bool for_device_auth) const; bool for_device_auth) const;
virtual void Initialize(); virtual void Initialize();
virtual bool IsInitialized(); virtual bool IsInitialized();
...@@ -40,6 +41,7 @@ class CastNetworkRequestInterceptor { ...@@ -40,6 +41,7 @@ class CastNetworkRequestInterceptor {
virtual int OnBeforeURLRequest(net::URLRequest* request, virtual int OnBeforeURLRequest(net::URLRequest* request,
const std::string& session_id, const std::string& session_id,
int render_process_id, int render_process_id,
int render_frame_id,
net::CompletionOnceCallback callback, net::CompletionOnceCallback callback,
GURL* new_url); GURL* new_url);
......
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