129 lines
4.9 KiB
C++
129 lines
4.9 KiB
C++
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
|
|
* 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_BRAVE_CONTENT_BROWSER_CLIENT_H_
|
|
#define BRAVE_BROWSER_BRAVE_CONTENT_BROWSER_CLIENT_H_
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/optional.h"
|
|
#include "chrome/browser/chrome_content_browser_client.h"
|
|
#include "content/public/browser/browser_thread.h"
|
|
#include "content/public/browser/content_browser_client.h"
|
|
#include "mojo/public/cpp/bindings/pending_remote.h"
|
|
#include "services/metrics/public/cpp/ukm_source_id.h"
|
|
#include "third_party/blink/public/mojom/loader/referrer.mojom.h"
|
|
|
|
class BraveNavigatorUserAgentFarblingBrowserTest;
|
|
class PrefChangeRegistrar;
|
|
|
|
namespace content {
|
|
class BrowserContext;
|
|
class RenderProcessHost;
|
|
}
|
|
|
|
class BraveContentBrowserClient : public ChromeContentBrowserClient {
|
|
public:
|
|
BraveContentBrowserClient();
|
|
~BraveContentBrowserClient() override;
|
|
|
|
// Overridden from ChromeContentBrowserClient:
|
|
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
|
|
const content::MainFunctionParams& parameters) override;
|
|
void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) override;
|
|
void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
|
|
|
|
bool HandleExternalProtocol(
|
|
const GURL& url,
|
|
content::WebContents::OnceGetter web_contents_getter,
|
|
int child_id,
|
|
content::NavigationUIData* navigation_data,
|
|
bool is_main_frame,
|
|
ui::PageTransition page_transition,
|
|
bool has_user_gesture,
|
|
const base::Optional<url::Origin>& initiating_origin,
|
|
mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory)
|
|
override;
|
|
|
|
content::ContentBrowserClient::AllowWebBluetoothResult AllowWebBluetooth(
|
|
content::BrowserContext* browser_context,
|
|
const url::Origin& requesting_origin,
|
|
const url::Origin& embedding_origin) override;
|
|
|
|
void RegisterBrowserInterfaceBindersForFrame(
|
|
content::RenderFrameHost* render_frame_host,
|
|
mojo::BinderMapWithContext<content::RenderFrameHost*>* map) override;
|
|
|
|
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
|
|
int child_process_id) override;
|
|
|
|
std::vector<std::unique_ptr<blink::URLLoaderThrottle>>
|
|
CreateURLLoaderThrottles(
|
|
const network::ResourceRequest& request,
|
|
content::BrowserContext* browser_context,
|
|
const base::RepeatingCallback<content::WebContents*()>& wc_getter,
|
|
content::NavigationUIData* navigation_ui_data,
|
|
int frame_tree_node_id) override;
|
|
|
|
bool WillCreateURLLoaderFactory(
|
|
content::BrowserContext* browser_context,
|
|
content::RenderFrameHost* frame,
|
|
int render_process_id,
|
|
URLLoaderFactoryType type,
|
|
const url::Origin& request_initiator,
|
|
base::Optional<int64_t> navigation_id,
|
|
ukm::SourceIdObj ukm_source_id,
|
|
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
|
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
|
header_client,
|
|
bool* bypass_redirect_checks,
|
|
bool* disable_secure_dns,
|
|
network::mojom::URLLoaderFactoryOverridePtr* factory_override) override;
|
|
|
|
bool WillInterceptWebSocket(content::RenderFrameHost* frame) override;
|
|
void CreateWebSocket(
|
|
content::RenderFrameHost* frame,
|
|
content::ContentBrowserClient::WebSocketFactory factory,
|
|
const GURL& url,
|
|
const net::SiteForCookies& site_for_cookies,
|
|
const base::Optional<std::string>& user_agent,
|
|
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
|
|
handshake_client) override;
|
|
|
|
void MaybeHideReferrer(content::BrowserContext* browser_context,
|
|
const GURL& request_url,
|
|
const GURL& document_url,
|
|
blink::mojom::ReferrerPtr* referrer) override;
|
|
|
|
GURL GetEffectiveURL(content::BrowserContext* browser_context,
|
|
const GURL& url) override;
|
|
static bool HandleURLOverrideRewrite(
|
|
GURL* url,
|
|
content::BrowserContext* browser_context);
|
|
std::vector<std::unique_ptr<content::NavigationThrottle>>
|
|
CreateThrottlesForNavigation(content::NavigationHandle* handle) override;
|
|
|
|
std::string GetEffectiveUserAgent(content::BrowserContext* browser_context,
|
|
const GURL& url) override;
|
|
|
|
private:
|
|
friend class ::BraveNavigatorUserAgentFarblingBrowserTest;
|
|
|
|
uint64_t session_token_;
|
|
uint64_t incognito_session_token_;
|
|
|
|
void OnAllowGoogleAuthChanged();
|
|
std::string GetMinimalUserAgent();
|
|
|
|
std::unique_ptr<PrefChangeRegistrar, content::BrowserThread::DeleteOnUIThread>
|
|
pref_change_registrar_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(BraveContentBrowserClient);
|
|
};
|
|
|
|
#endif // BRAVE_BROWSER_BRAVE_CONTENT_BROWSER_CLIENT_H_
|