0

Revert of Revert of Add Mojo interfaces for out-of-process proxy resolver. (patchset id:1 of https://codereview.chromium.org/892373006/)

Reason for revert:
The code in this change is not linked into any binary.

Test is flaky:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#testType=device_unittests&tests=SerialConnectionTest.Cancel

The likely cause of the test failure is bc78a2320b. The author has been informed and the test will be fixed soon.

Original issue's description:
> Revert of Add Mojo interfaces for out-of-process proxy resolver. (patchset  id:60001 of https://codereview.chromium.org/900433003/)
>
> Reason for revert:
> http://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20%28dbg%29%281%29/builds/38575
> Broke device_unittests device_unittests SerialConnectionTest.Cancel it seems.
>
> Original issue's description:
> > Add Mojo interfaces for out-of-process proxy resolver.
> >
> > See:
> > https://docs.google.com/a/chromium.org/document/d/1n5hr4KJhZl2A4MicTfmyiHPdiKp7kmUoWXnRBN8SrZE/edit#
> >
> > BUG=11746
> >
> > Committed: https://crrev.com/073e42bb7587b90594e5799fb6a4afe08a1e1561
> > Cr-Commit-Position: refs/heads/master@{#314509}
>
> TBR=rdsmith@chromium.org,eroman@chromium.org,sammc@chromium.org,amistry@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=11746
>
> Committed: https://crrev.com/7d4ec1aa24e79406d29e0cafbb531a3fabfe815f
> Cr-Commit-Position: refs/heads/master@{#314519}

TBR=rdsmith@chromium.org,eroman@chromium.org,sammc@chromium.org,noel@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=11746

Review URL: https://codereview.chromium.org/882173005

Cr-Commit-Position: refs/heads/master@{#314527}
This commit is contained in:
amistry
2015-02-04 01:01:47 -08:00
committed by Commit bot
parent a403c5e76b
commit aa16ad225b
4 changed files with 131 additions and 0 deletions

12
net/interfaces/BUILD.gn Normal file

@ -0,0 +1,12 @@
# Copyright 2015 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.
import("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni")
mojom("interfaces") {
sources = [
"host_resolver_service.mojom",
"proxy_resolver_service.mojom",
]
}

@ -0,0 +1,55 @@
// Copyright 2015 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.
// WARNING! Do NOT use this mojom. It is intended as a temporary interface to
// implement out-of-process proxy resolution. If you wish to use a Mojo DNS
// service, contact amistry@/sammc@ and net-dev to discuss a permanent Mojo DNS
// interface.
// Put Mojo definitions into their own namespace to avoid collisions with C++
// definitions.
// TODO(amistry): Resolve the conflict between these two sets of definitions.
module net.interfaces;
// Mirror of net::AddressFamily.
enum AddressFamily {
UNSPECIFIED,
IPV4,
IPV6,
};
// Mirror of net::HostResolver::RequestInfo.
struct HostResolverRequestInfo {
string host;
uint16 port;
AddressFamily address_family;
bool is_my_ip_address;
};
// Mirror of net::IPEndPoint.
struct IPEndPoint {
// IP address as a numeric value from most to least significant byte.
// Will be of length 4 for IPv4 addresses and 16 for IPv6.
array<uint8> address;
uint16 port;
};
// Mirror of net::AddressList.
struct AddressList {
array<IPEndPoint> addresses;
};
interface HostResolverService {
// Use a HostResolverRequestClient instead of returning a result so we can
// cancel in-flight requests by destroying the client. IPC requests in Mojo
// cannot be cancelled directly.
// TODO(amistry): Add BoundNetLog.
Resolve(HostResolverRequestInfo request_info,
HostResolverRequestClient client);
};
interface HostResolverRequestClient {
// |error| is a value in net::Error.
ReportResult(int32 error, AddressList? result);
};

@ -0,0 +1,48 @@
// Copyright 2015 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.
// Put Mojo definitions into their own namespace to avoid collisions with C++
// definitions.
// TODO(amistry): Resolve the conflict between these two sets of definitions.
module net.interfaces;
import "host_resolver_service.mojom";
// Mirror of net::ProxyServer::Scheme.
enum ProxyScheme {
INVALID,
DIRECT,
HTTP,
SOCKS4,
SOCKS5,
HTTPS,
QUIC,
};
// Mirror of net::ProxyServer.
struct ProxyServer {
ProxyScheme scheme;
string host;
uint16 port;
};
interface ProxyResolverService {
SetPacScript(string data) => (int32 result);
// Use a ProxyResolverRequestClient instead of returning a result so we can
// receive load state updates and cancel in-flight requests by destroying the
// client.
// TODO(amistry): Add BoundNetLog.
GetProxyForUrl(string url, ProxyResolverRequestClient client);
};
interface ProxyResolverRequestClient {
ReportResult(int32 error, array<ProxyServer>? proxy_servers);
};
interface ProxyResolverFactory {
// TODO(amistry): Add NetLog and ProxyResolverErrorObserver.
CreateResolver(ProxyResolverService& resolver,
HostResolverService host_resolver);
};

@ -1203,6 +1203,22 @@
},
],
}],
['use_v8_in_net == 1 and OS != "android"', {
'targets': [
{
# GN version: //net/interfaces
'target_name': 'net_interfaces',
'type': 'static_library',
'sources': [
'interfaces/host_resolver_service.mojom',
'interfaces/proxy_resolver_service.mojom',
],
'includes': [
'../third_party/mojo/mojom_bindings_generator.gypi',
],
},
],
}],
['OS != "ios" and OS != "android"', {
'targets': [
# iOS doesn't have the concept of simple executables, these targets