2323#include " base/command_line.h"
2424#include " base/file_path.h"
2525#include " base/file_util.h"
26+ #include " base/string_util.h"
2627#include " base/threading/thread_restrictions.h"
2728#include " base/values.h"
2829#include " content/public/browser/browser_url_handler.h"
2930#include " content/public/browser/resource_dispatcher_host.h"
31+ #include " content/public/browser/web_contents.h"
32+ #include " content/public/common/renderer_preferences.h"
3033#include " content/nw/src/api/dispatcher_host.h"
3134#include " content/nw/src/common/shell_switches.h"
3235#include " content/nw/src/browser/shell_devtools_delegate.h"
3336#include " content/nw/src/browser/shell_resource_dispatcher_host_delegate.h"
3437#include " content/nw/src/media/media_internals.h"
3538#include " content/nw/src/nw_package.h"
3639#include " content/nw/src/nw_shell.h"
40+ #include " content/nw/src/nw_version.h"
3741#include " content/nw/src/shell_browser_context.h"
3842#include " content/nw/src/shell_browser_main_parts.h"
3943#include " geolocation/shell_access_token_store.h"
@@ -57,6 +61,25 @@ BrowserMainParts* ShellContentBrowserClient::CreateBrowserMainParts(
5761 return shell_browser_main_parts_;
5862}
5963
64+ WebContentsView* ShellContentBrowserClient::OverrideCreateWebContentsView (
65+ WebContents* web_contents,
66+ RenderViewHostDelegateView** render_view_host_delegate_view) {
67+ std::string user_agent;
68+ nw::Package* package = shell_browser_main_parts ()->package ();
69+ if (package->root ()->GetString (switches::kmUserAgent, &user_agent)) {
70+ std::string name, version;
71+ package->root ()->GetString (switches::kmName, &name);
72+ package->root ()->GetString (" version" , &version);
73+ ReplaceSubstringsAfterOffset (&user_agent, 0 , " %name" , name);
74+ ReplaceSubstringsAfterOffset (&user_agent, 0 , " %ver" , version);
75+ ReplaceSubstringsAfterOffset (&user_agent, 0 , " %nwver" , NW_VERSION_STRING );
76+ content::RendererPreferences* prefs =
77+ web_contents->GetMutableRendererPrefs ();
78+ prefs->user_agent_override = user_agent;
79+ }
80+ return NULL ;
81+ }
82+
6083void ShellContentBrowserClient::RenderViewHostCreated (
6184 RenderViewHost* render_view_host) {
6285 new api::DispatcherHost (render_view_host);
0 commit comments