Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1395)

Unified Diff: net/proxy/mojo_proxy_resolver_impl_unittest.cc

Issue 939503004: Add LoadState reporting to the mojo proxy resolver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@proxy-resolver-mojo
Patch Set: rebase Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/proxy/mojo_proxy_resolver_impl.cc ('k') | net/proxy/proxy_resolver.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/mojo_proxy_resolver_impl_unittest.cc
diff --git a/net/proxy/mojo_proxy_resolver_impl_unittest.cc b/net/proxy/mojo_proxy_resolver_impl_unittest.cc
index a6b44294791aed1d9f7dbb7caff0bb66f742c510..8f2f4ab29538ba35bc2ee754c9b3e9d3524a6411 100644
--- a/net/proxy/mojo_proxy_resolver_impl_unittest.cc
+++ b/net/proxy/mojo_proxy_resolver_impl_unittest.cc
@@ -14,6 +14,7 @@
#include "net/proxy/mojo_proxy_type_converters.h"
#include "net/proxy/proxy_info.h"
#include "net/proxy/proxy_server.h"
+#include "net/test/event_waiter.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h"
@@ -24,31 +25,39 @@ namespace {
class TestRequestClient : public interfaces::ProxyResolverRequestClient,
public mojo::ErrorHandler {
public:
+ enum Event {
+ RESULT_RECEIVED,
+ LOAD_STATE_CHANGED,
+ CONNECTION_ERROR,
+ };
+
explicit TestRequestClient(
mojo::InterfaceRequest<interfaces::ProxyResolverRequestClient> request);
void WaitForResult();
- void WaitForConnectionError();
Error error() { return error_; }
const mojo::Array<interfaces::ProxyServerPtr>& results() { return results_; }
+ LoadState load_state() { return load_state_; }
+ EventWaiter<Event>& event_waiter() { return event_waiter_; }
private:
// interfaces::ProxyResolverRequestClient override.
void ReportResult(int32_t error,
mojo::Array<interfaces::ProxyServerPtr> results) override;
+ void LoadStateChanged(int32_t load_state) override;
// mojo::ErrorHandler override.
void OnConnectionError() override;
bool done_ = false;
- bool encountered_connection_error_ = false;
Error error_ = ERR_FAILED;
+ LoadState load_state_ = LOAD_STATE_IDLE;
mojo::Array<interfaces::ProxyServerPtr> results_;
- base::Closure run_loop_quit_closure_;
- base::Closure connection_error_callback_;
mojo::Binding<interfaces::ProxyResolverRequestClient> binding_;
+
+ EventWaiter<Event> event_waiter_;
};
TestRequestClient::TestRequestClient(
@@ -61,38 +70,27 @@ void TestRequestClient::WaitForResult() {
if (done_)
return;
- base::RunLoop run_loop;
- run_loop_quit_closure_ = run_loop.QuitClosure();
- run_loop.Run();
+ event_waiter_.WaitForEvent(RESULT_RECEIVED);
ASSERT_TRUE(done_);
}
-void TestRequestClient::WaitForConnectionError() {
- if (encountered_connection_error_)
- return;
-
- base::RunLoop run_loop;
- connection_error_callback_ = run_loop.QuitClosure();
- run_loop.Run();
- ASSERT_TRUE(encountered_connection_error_);
-}
-
void TestRequestClient::ReportResult(
int32_t error,
mojo::Array<interfaces::ProxyServerPtr> results) {
- if (!run_loop_quit_closure_.is_null()) {
- run_loop_quit_closure_.Run();
- }
+ event_waiter_.NotifyEvent(RESULT_RECEIVED);
ASSERT_FALSE(done_);
error_ = static_cast<Error>(error);
results_ = results.Pass();
done_ = true;
}
+void TestRequestClient::LoadStateChanged(int32_t load_state) {
+ event_waiter_.NotifyEvent(LOAD_STATE_CHANGED);
+ load_state_ = static_cast<LoadState>(load_state);
+}
+
void TestRequestClient::OnConnectionError() {
- if (!connection_error_callback_.is_null())
- connection_error_callback_.Run();
- encountered_connection_error_ = true;
+ event_waiter_.NotifyEvent(CONNECTION_ERROR);
}
class SetPacScriptClient {
@@ -211,12 +209,14 @@ class MojoProxyResolverImplTest : public testing::Test {
scoped_ptr<CallbackMockProxyResolver> mock_resolver(
new CallbackMockProxyResolver);
mock_proxy_resolver_ = mock_resolver.get();
- resolver_.reset(new MojoProxyResolverImpl(mock_resolver.Pass()));
+ resolver_impl_.reset(new MojoProxyResolverImpl(mock_resolver.Pass()));
+ resolver_ = resolver_impl_.get();
}
CallbackMockProxyResolver* mock_proxy_resolver_;
- scoped_ptr<interfaces::ProxyResolver> resolver_;
+ scoped_ptr<MojoProxyResolverImpl> resolver_impl_;
+ interfaces::ProxyResolver* resolver_;
};
TEST_F(MojoProxyResolverImplTest, GetProxyForUrl) {
@@ -228,6 +228,12 @@ TEST_F(MojoProxyResolverImplTest, GetProxyForUrl) {
scoped_refptr<MockAsyncProxyResolverBase::Request> request =
mock_proxy_resolver_->pending_requests()[0];
EXPECT_EQ(GURL("http://example.com"), request->url());
+
+ resolver_impl_->LoadStateChanged(request.get(),
+ LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT);
+ client.event_waiter().WaitForEvent(TestRequestClient::LOAD_STATE_CHANGED);
+ EXPECT_EQ(LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, client.load_state());
+
request->results()->UsePacString(
"PROXY proxy.example.com:1; "
"SOCKS4 socks4.example.com:2; "
@@ -409,8 +415,8 @@ TEST_F(MojoProxyResolverImplTest, DestroyService) {
ASSERT_EQ(1u, mock_proxy_resolver_->pending_requests().size());
scoped_refptr<MockAsyncProxyResolverBase::Request> request =
mock_proxy_resolver_->pending_requests()[0];
- resolver_.reset();
- client.WaitForConnectionError();
+ resolver_impl_.reset();
+ client.event_waiter().WaitForEvent(TestRequestClient::CONNECTION_ERROR);
}
} // namespace net
« no previous file with comments | « net/proxy/mojo_proxy_resolver_impl.cc ('k') | net/proxy/proxy_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698