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

Unified Diff: net/proxy/proxy_resolver_mojo.cc

Issue 1017453005: Add support for ProxyResolverErrorObserver to ProxyResolverMojo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
Index: net/proxy/proxy_resolver_mojo.cc
diff --git a/net/proxy/proxy_resolver_mojo.cc b/net/proxy/proxy_resolver_mojo.cc
index 3801d41a093cb723ab7f21b87f3326ca48ed3f0a..ffa093cdb47772711686e51f5f53736d1476b75d 100644
--- a/net/proxy/proxy_resolver_mojo.cc
+++ b/net/proxy/proxy_resolver_mojo.cc
@@ -14,6 +14,7 @@
#include "net/proxy/mojo_proxy_resolver_factory.h"
#include "net/proxy/mojo_proxy_type_converters.h"
#include "net/proxy/proxy_info.h"
+#include "net/proxy/proxy_resolver_error_observer.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h"
@@ -54,6 +55,28 @@ class ProxyResolverMojo::Job : public interfaces::ProxyResolverRequestClient,
mojo::Binding<interfaces::ProxyResolverRequestClient> binding_;
};
+class ProxyResolverMojo::ErrorObserverHolder
+ : public interfaces::ProxyResolverErrorObserver {
+ public:
+ ErrorObserverHolder(
+ scoped_ptr<net::ProxyResolverErrorObserver> error_observer);
+
+ // Returns an interfaces::ProxyResolverErrorObserverPtr that can be used to
+ // report errors to the ProxyResolverErrorObserver passed when constructing
+ // |this|. The results of previous calls will no longer able to report errors
+ // when this is called.
+ interfaces::ProxyResolverErrorObserverPtr CreateHandle();
+
+ void OnPacScriptError(int32_t line_number,
+ const mojo::String& error) override;
+
+ private:
+ scoped_ptr<net::ProxyResolverErrorObserver> error_observer_;
+ mojo::Binding<interfaces::ProxyResolverErrorObserver> binding_;
+
+ DISALLOW_COPY_AND_ASSIGN(ErrorObserverHolder);
+};
+
ProxyResolverMojo::Job::Job(ProxyResolverMojo* resolver,
const GURL& url,
ProxyInfo* results,
@@ -111,10 +134,12 @@ void ProxyResolverMojo::Job::LoadStateChanged(int32_t load_state) {
ProxyResolverMojo::ProxyResolverMojo(
MojoProxyResolverFactory* mojo_proxy_resolver_factory,
- HostResolver* host_resolver)
+ HostResolver* host_resolver,
+ scoped_ptr<ProxyResolverErrorObserver> error_observer)
: ProxyResolver(true /* |expects_pac_bytes| */),
mojo_proxy_resolver_factory_(mojo_proxy_resolver_factory),
- host_resolver_(host_resolver) {
+ host_resolver_(host_resolver),
+ error_observer_(new ErrorObserverHolder(error_observer.Pass())) {
}
ProxyResolverMojo::~ProxyResolverMojo() {
@@ -178,7 +203,8 @@ void ProxyResolverMojo::SetUpServices() {
mojo_host_resolver_.get(), mojo::GetProxy(&mojo_host_resolver_ptr)));
mojo_proxy_resolver_ptr_.reset();
mojo_proxy_resolver_factory_->Create(
- mojo::GetProxy(&mojo_proxy_resolver_ptr_), mojo_host_resolver_ptr.Pass());
+ mojo::GetProxy(&mojo_proxy_resolver_ptr_), mojo_host_resolver_ptr.Pass(),
+ error_observer_->CreateHandle());
mojo_proxy_resolver_ptr_.set_error_handler(this);
}
@@ -261,4 +287,27 @@ LoadState ProxyResolverMojo::GetLoadState(RequestHandle request) const {
return job->load_state();
}
+ProxyResolverMojo::ErrorObserverHolder::ErrorObserverHolder(
+ scoped_ptr<net::ProxyResolverErrorObserver> error_observer)
+ : error_observer_(error_observer.Pass()), binding_(this) {
+}
+
+interfaces::ProxyResolverErrorObserverPtr
+ProxyResolverMojo::ErrorObserverHolder::CreateHandle() {
+ interfaces::ProxyResolverErrorObserverPtr result;
+ if (error_observer_) {
+ if (binding_.is_bound())
+ binding_.Close();
+ binding_.Bind(mojo::GetProxy(&result));
+ }
+ return result.Pass();
+}
+
+void ProxyResolverMojo::ErrorObserverHolder::OnPacScriptError(
+ int32_t line_number,
+ const mojo::String& error) {
+ DCHECK(error_observer_);
+ error_observer_->OnPACScriptError(line_number, error.To<base::string16>());
+}
+
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698