Skip to content

Add Brave geolocations and system network redirect #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 14, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions browser/net/BUILD.gn
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import("//build/config/features.gni")

source_set("net") {
configs += [ "//brave/build/geolocation" ]
sources = [
"brave_network_delegate.cc",
"brave_network_delegate.h",
"brave_httpse_network_delegate.cc",
"brave_httpse_network_delegate.h",
"brave_network_delegate_base.cc",
"brave_network_delegate_base.h",
"brave_httpse_network_delegate_helper.cc",
"brave_httpse_network_delegate_helper.h",
"brave_profile_network_delegate.cc",
"brave_profile_network_delegate.h",
"brave_static_redirect_network_delegate_helper.cc",
"brave_static_redirect_network_delegate_helper.h",
"brave_system_network_delegate.cc",
"brave_system_network_delegate.h",
"url_context.cc",
"url_context.h"
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/browser/net/brave_network_delegate.h"
#include "brave/browser/net/brave_httpse_network_delegate_helper.h"

#include "brave/browser/brave_browser_process_impl.h"
#include "brave/browser/net/brave_httpse_network_delegate.h"
#include "brave/browser/net/url_context.h"
#include "brave/components/brave_shields/browser/brave_shields_util.h"
#include "brave/components/brave_shields/browser/https_everywhere_service.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,33 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/browser/net/brave_network_delegate.h"
#include "brave/browser/net/brave_network_delegate_base.h"

#include <algorithm>

#include "brave/browser/net/brave_httpse_network_delegate.h"
#include "brave/browser/net/url_context.h"

//#include "chrome/browser/profiles/profile_io_data.h"
#include "content/public/browser/browser_thread.h"
//#include "content/public/browser/resource_request_info.h"
#include "net/url_request/url_request.h"


using content::BrowserThread;

BraveNetworkDelegate::ResponseListenerInfo::ResponseListenerInfo() {
BraveNetworkDelegateBase::ResponseListenerInfo::ResponseListenerInfo() {
}

BraveNetworkDelegate::ResponseListenerInfo::~ResponseListenerInfo() {
BraveNetworkDelegateBase::ResponseListenerInfo::~ResponseListenerInfo() {
}

BraveNetworkDelegate::BraveNetworkDelegate(
BraveNetworkDelegateBase::BraveNetworkDelegateBase(
extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers) :
ChromeNetworkDelegate(event_router, enable_referrers) {
brave::OnBeforeURLRequestCallback callback =
base::Bind(
brave::OnBeforeURLRequest_HttpsePreFileWork);
before_url_request_callbacks_.push_back(callback);
}

BraveNetworkDelegate::~BraveNetworkDelegate() {
BraveNetworkDelegateBase::~BraveNetworkDelegateBase() {
}

int BraveNetworkDelegate::OnBeforeURLRequest(net::URLRequest* request,
int BraveNetworkDelegateBase::OnBeforeURLRequest(net::URLRequest* request,
const net::CompletionCallback& callback,
GURL* new_url) {
if (before_url_request_callbacks_.empty() || !request) {
Expand All @@ -52,7 +44,7 @@ int BraveNetworkDelegate::OnBeforeURLRequest(net::URLRequest* request,
return net::ERR_IO_PENDING;
}

void BraveNetworkDelegate::RunNextCallback(
void BraveNetworkDelegateBase::RunNextCallback(
net::URLRequest* request,
GURL *new_url,
std::shared_ptr<brave::OnBeforeURLRequestContext> ctx) {
Expand All @@ -67,7 +59,7 @@ void BraveNetworkDelegate::RunNextCallback(
brave::OnBeforeURLRequestCallback callback =
before_url_request_callbacks_[ctx->next_url_request_index++];
brave::ResponseCallback next_callback =
base::Bind(&BraveNetworkDelegate::RunNextCallback,
base::Bind(&BraveNetworkDelegateBase::RunNextCallback,
base::Unretained(this), request, new_url, ctx);
int rv = callback.Run(request, new_url, next_callback, ctx);
if (rv == net::ERR_IO_PENDING) {
Expand All @@ -85,7 +77,7 @@ void BraveNetworkDelegate::RunNextCallback(
}
}

void BraveNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) {
void BraveNetworkDelegateBase::OnURLRequestDestroyed(net::URLRequest* request) {
if (!ContainsKey(callbacks_, request->identifier())) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_H_
#define BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_H_
#ifndef BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_
#define BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_

#include "chrome/browser/net/chrome_network_delegate.h"
#include "brave/browser/net/url_context.h"
Expand All @@ -20,9 +20,9 @@ namespace net {
class URLRequest;
}

// BraveNetworkDelegate is the central point from within the Brave code to
// BraveNetworkDelegateBase is the central point from within the Brave code to
// add hooks into the network stack.
class BraveNetworkDelegate : public ChromeNetworkDelegate {
class BraveNetworkDelegateBase : public ChromeNetworkDelegate {
public:

using ResponseCallback = base::Callback<void(const base::DictionaryValue&)>;
Expand All @@ -45,9 +45,9 @@ class BraveNetworkDelegate : public ChromeNetworkDelegate {
// |enable_referrers| (and all of the other optional PrefMembers) should be
// initialized on the UI thread (see below) beforehand. This object's owner is
// responsible for cleaning them up at shutdown.
BraveNetworkDelegate(extensions::EventRouterForwarder* event_router,
BraveNetworkDelegateBase(extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers);
~BraveNetworkDelegate() override;
~BraveNetworkDelegateBase() override;

// NetworkDelegate implementation.
int OnBeforeURLRequest(net::URLRequest* request,
Expand All @@ -60,14 +60,14 @@ class BraveNetworkDelegate : public ChromeNetworkDelegate {
net::URLRequest* request,
GURL *new_url,
std::shared_ptr<brave::OnBeforeURLRequestContext> ctx);

private:
std::vector<brave::OnBeforeURLRequestCallback>
before_url_request_callbacks_;

private:
std::map<ResponseEvent, ResponseListenerInfo> response_listeners_;
std::map<uint64_t, net::CompletionCallback> callbacks_;

DISALLOW_COPY_AND_ASSIGN(BraveNetworkDelegate);
DISALLOW_COPY_AND_ASSIGN(BraveNetworkDelegateBase);
};

#endif // BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_H_
#endif // BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_
20 changes: 20 additions & 0 deletions browser/net/brave_profile_network_delegate.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/browser/net/brave_profile_network_delegate.h"

#include "brave/browser/net/brave_httpse_network_delegate_helper.h"

BraveProfileNetworkDelegate::BraveProfileNetworkDelegate(
extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers) :
BraveNetworkDelegateBase(event_router, enable_referrers) {
brave::OnBeforeURLRequestCallback callback =
base::Bind(
brave::OnBeforeURLRequest_HttpsePreFileWork);
before_url_request_callbacks_.push_back(callback);
}

BraveProfileNetworkDelegate::~BraveProfileNetworkDelegate() {
}
19 changes: 19 additions & 0 deletions browser/net/brave_profile_network_delegate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_
#define BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_

#include "brave/browser/net/brave_network_delegate_base.h"

class BraveProfileNetworkDelegate : public BraveNetworkDelegateBase {
public:
BraveProfileNetworkDelegate(extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers);
~BraveProfileNetworkDelegate() override;

DISALLOW_COPY_AND_ASSIGN(BraveProfileNetworkDelegate);
};

#endif // BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_
26 changes: 26 additions & 0 deletions browser/net/brave_static_redirect_network_delegate_helper.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/browser/net/brave_static_redirect_network_delegate_helper.h"

#include "extensions/common/url_pattern.h"
#include "net/url_request/url_request.h"


namespace brave {

int OnBeforeURLRequest_StaticRedirectWork(
net::URLRequest* request,
GURL* new_url,
const ResponseCallback& next_callback,
std::shared_ptr<OnBeforeURLRequestContext> ctx) {
URLPattern geoPattern(URLPattern::SCHEME_HTTPS,
"https://www.googleapis.com/geolocation/v1/geolocate?key=*");
if (geoPattern.MatchesURL(request->url())) {
*new_url = GURL(GOOGLEAPIS_ENDPOINT GOOGLEAPIS_API_KEY);
}
return net::OK;
}

} // namespace brave
27 changes: 27 additions & 0 deletions browser/net/brave_static_redirect_network_delegate_helper.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef BRAVE_BROWSER_NET_BRAVE_STATIC_REDIRECT_NETWORK_DELEGATE_H_
#define BRAVE_BROWSER_NET_BRAVE_STATIC_REDIRECT_NETWORK_DELEGATE_H_

#include "chrome/browser/net/chrome_network_delegate.h"
#include "brave/browser/net/url_context.h"

struct OnBeforeURLRequestContext;

namespace net {
class URLRequest;
}

namespace brave {

int OnBeforeURLRequest_StaticRedirectWork(
net::URLRequest* request,
GURL* new_url,
const ResponseCallback& next_callback,
std::shared_ptr<OnBeforeURLRequestContext> ctx);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we must be missing lint checking?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we still don't have lint checking

} // namespace brave

#endif // BRAVE_BROWSER_NET_BRAVE_STATIC_REDIRECT_NETWORK_DELEGATE_H_
21 changes: 21 additions & 0 deletions browser/net/brave_system_network_delegate.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/browser/net/brave_system_network_delegate.h"

#include "brave/browser/net/brave_static_redirect_network_delegate_helper.h"


BraveSystemNetworkDelegate::BraveSystemNetworkDelegate(
extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers) :
BraveNetworkDelegateBase(event_router, enable_referrers) {
brave::OnBeforeURLRequestCallback callback =
base::Bind(
brave::OnBeforeURLRequest_StaticRedirectWork);
before_url_request_callbacks_.push_back(callback);
}

BraveSystemNetworkDelegate::~BraveSystemNetworkDelegate() {
}
20 changes: 20 additions & 0 deletions browser/net/brave_system_network_delegate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_
#define BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_

#include "brave/browser/net/brave_network_delegate_base.h"


class BraveSystemNetworkDelegate : public BraveNetworkDelegateBase {
public:
BraveSystemNetworkDelegate(extensions::EventRouterForwarder* event_router,
BooleanPrefMember* enable_referrers);
~BraveSystemNetworkDelegate() override;

DISALLOW_COPY_AND_ASSIGN(BraveSystemNetworkDelegate);
};

#endif // BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_
11 changes: 11 additions & 0 deletions build/geolocation/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
declare_args() {
antimuon_google_api_key = ""
antimuon_google_api_endpoint = ""
}

config("geolocation") {
defines = [
"GOOGLEAPIS_API_KEY=\"$antimuon_google_api_key\"",
"GOOGLEAPIS_ENDPOINT=\"$antimuon_google_api_endpoint\""
]
}
21 changes: 21 additions & 0 deletions patches/chrome-browser-io_thread.cc.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
index 7e840669571cb041bd20aa33b2801dc255a9f19f..d5c6e35efcb062ac14b849452548f873d68798ee 100644
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -30,6 +30,7 @@
#include "base/threading/thread.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
+#include "brave/browser/net/brave_system_network_delegate.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/data_usage/tab_id_annotator.h"
@@ -755,7 +756,7 @@ void IOThread::ConstructSystemRequestContext() {

builder->set_user_agent(GetUserAgent());
std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate(
- new ChromeNetworkDelegate(extension_event_router_forwarder(),
+ new BraveSystemNetworkDelegate(extension_event_router_forwarder(),
&system_enable_referrers_));
// By default, data usage is considered off the record.
chrome_network_delegate->set_data_use_aggregator(
4 changes: 2 additions & 2 deletions patches/chrome-browser-net-chrome_network_delegate.h.patch
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h
index e055ef156da9ea78b1dee96ee04f9c061267c775..5ffcecf64f39f3ff593cd30d9c1ef551be5f1a27 100644
index e055ef156da9ea78b1dee96ee04f9c061267c775..1177d422a0f0d8a6f51ff4b8f429997de9cc3272 100644
--- a/chrome/browser/net/chrome_network_delegate.h
+++ b/chrome/browser/net/chrome_network_delegate.h
@@ -144,6 +144,8 @@ class ChromeNetworkDelegate : public net::NetworkDelegateImpl {
static void EnableAccessToAllFilesForTesting(bool enabled);

private:
+ friend class BraveNetworkDelegate;
+ friend class BraveNetworkDelegateBase;
+
// NetworkDelegate implementation.
int OnBeforeURLRequest(net::URLRequest* request,
Expand Down
6 changes: 3 additions & 3 deletions patches/chrome-browser-profiles-profile_io_data.cc.patch
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index 7bcc72f67676bf1bd388109e94bd0739cd588957..cd1cfd7930ace33eb1c6e72b39133c815a656be2 100644
index 7bcc72f67676bf1bd388109e94bd0739cd588957..279794b6c6b52fd792f21b227ffdeb5850e3e700 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -25,6 +25,7 @@
#include "base/strings/string_util.h"
#include "base/task_scheduler/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "brave/browser/net/brave_network_delegate.h"
+#include "brave/browser/net/brave_profile_network_delegate.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
Expand All @@ -15,7 +15,7 @@ index 7bcc72f67676bf1bd388109e94bd0739cd588957..cd1cfd7930ace33eb1c6e72b39133c81

std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate(
- new ChromeNetworkDelegate(
+ new BraveNetworkDelegate(
+ new BraveProfileNetworkDelegate(
#if BUILDFLAG(ENABLE_EXTENSIONS)
io_thread_globals->extension_event_router_forwarder.get(),
#else