Skip to content

Commit

Permalink
feat: allow setting of global fallback user agent
Browse files Browse the repository at this point in the history
  • Loading branch information
MarshallOfSound committed Apr 28, 2019
1 parent fe61863 commit 3b39b6e
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 4 deletions.
10 changes: 10 additions & 0 deletions atom/browser/api/atom_api_app.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1271,6 +1271,14 @@ void App::EnableSandbox(mate::Arguments* args) {
command_line->AppendSwitch(switches::kEnableSandbox);
}

void App::SetUserAgentFallback(const std::string& user_agent) {
AtomBrowserClient::Get()->SetUserAgent(user_agent);
}

std::string App::GetUserAgentFallback() {
return AtomBrowserClient::Get()->GetUserAgent();
}

#if defined(OS_MACOSX)
bool App::MoveToApplicationsFolder(mate::Arguments* args) {
return ui::cocoa::AtomBundleMover::Move(args);
Expand Down Expand Up @@ -1448,6 +1456,8 @@ void App::BuildPrototype(v8::Isolate* isolate,
#if defined(OS_MACOSX)
.SetProperty("dock", &App::GetDockAPI)
#endif
.SetMethod("setUserAgentFallback", &App::SetUserAgentFallback)
.SetMethod("getUserAgentFallback", &App::GetUserAgentFallback)
.SetMethod("enableSandbox", &App::EnableSandbox);
}

Expand Down
2 changes: 2 additions & 0 deletions atom/browser/api/atom_api_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,8 @@ class App : public AtomBrowserClient::Delegate,
v8::Local<v8::Promise> GetGPUInfo(v8::Isolate* isolate,
const std::string& info_type);
void EnableSandbox(mate::Arguments* args);
void SetUserAgentFallback(const std::string& user_agent);
std::string GetUserAgentFallback();

#if defined(OS_MACOSX)
bool MoveToApplicationsFolder(mate::Arguments* args);
Expand Down
8 changes: 7 additions & 1 deletion atom/browser/atom_browser_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -924,7 +924,13 @@ std::string AtomBrowserClient::GetProduct() const {
}

std::string AtomBrowserClient::GetUserAgent() const {
return GetApplicationUserAgent();
if (user_agent_override_.empty())
return GetApplicationUserAgent();
return user_agent_override_;
}

void AtomBrowserClient::SetUserAgent(const std::string& user_agent) {
user_agent_override_ = user_agent;
}

void AtomBrowserClient::RegisterNonNetworkNavigationURLLoaderFactories(
Expand Down
6 changes: 5 additions & 1 deletion atom/browser/atom_browser_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ class AtomBrowserClient : public content::ContentBrowserClient,
// content::ContentBrowserClient:
bool ShouldEnableStrictSiteIsolation() override;

std::string GetUserAgent() const override;
void SetUserAgent(const std::string& user_agent);

protected:
void RenderProcessWillLaunch(
content::RenderProcessHost* host,
Expand Down Expand Up @@ -157,7 +160,6 @@ class AtomBrowserClient : public content::ContentBrowserClient,
std::vector<base::FilePath> GetNetworkContextsParentDirectory() override;
bool ShouldBypassCORB(int render_process_id) const override;
std::string GetProduct() const override;
std::string GetUserAgent() const override;
void RegisterNonNetworkNavigationURLLoaderFactories(
int frame_tree_node_id,
NonNetworkURLLoaderFactoryMap* factories) override;
Expand Down Expand Up @@ -236,6 +238,8 @@ class AtomBrowserClient : public content::ContentBrowserClient,
mutable base::Lock process_preferences_lock_;
std::map<int, ProcessPreferences> process_preferences_;

std::string user_agent_override_ = "";

DISALLOW_COPY_AND_ASSIGN(AtomBrowserClient);
};

Expand Down
3 changes: 2 additions & 1 deletion atom/browser/atom_browser_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <utility>

#include "atom/browser/atom_blob_reader.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_download_manager_delegate.h"
#include "atom/browser/atom_paths.h"
Expand Down Expand Up @@ -67,7 +68,7 @@ AtomBrowserContext::AtomBrowserContext(const std::string& partition,
storage_policy_(new SpecialStoragePolicy),
in_memory_(in_memory),
weak_factory_(this) {
user_agent_ = GetApplicationUserAgent();
user_agent_ = AtomBrowserClient::Get()->GetUserAgent();

// Read options.
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
Expand Down
4 changes: 3 additions & 1 deletion atom/browser/net/system_network_context_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <string>
#include <utility>

#include "atom/browser/atom_browser_client.h"
#include "atom/browser/io_thread.h"
#include "atom/common/application_info.h"
#include "atom/common/options_switches.h"
Expand Down Expand Up @@ -245,7 +246,8 @@ SystemNetworkContextManager::CreateNetworkContextParams() {

network_context_params->context_name = std::string("system");

network_context_params->user_agent = atom::GetApplicationUserAgent();
network_context_params->user_agent =
atom::AtomBrowserClient::Get()->GetUserAgent();

network_context_params->http_cache_enabled = false;

Expand Down

0 comments on commit 3b39b6e

Please sign in to comment.