diff options
author | lazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 03:13:17 +0000 |
---|---|---|
committer | lazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 03:13:17 +0000 |
commit | 0d2f55e921ce214656cc43643509a98209f0c853 (patch) | |
tree | 3e5cefdc8ffa6d7ad33a36eb3332eb9517216d4b /chrome/renderer/resources | |
parent | 2221fcb127eb041ee2dac0d132024586d87098ab (diff) | |
download | chromium_src-0d2f55e921ce214656cc43643509a98209f0c853.zip chromium_src-0d2f55e921ce214656cc43643509a98209f0c853.tar.gz chromium_src-0d2f55e921ce214656cc43643509a98209f0c853.tar.bz2 |
Support userAgent overriding for guests.
Following methods are implemented:
<webview>.setUserAgentOverride(string);
<webview>.getUserAgent();
bool <webview>.isUserAgentOverridden();
Usage:
webviewElement.setUserAgentOverride('...');
webviewElement.setAttribute('src', '...);
BUG=275949
Test=Added WebViewTest.UserAgent, for use case, see Usage above.
Review URL: https://codereview.chromium.org/19267003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225301 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources')
-rw-r--r-- | chrome/renderer/resources/extensions/web_view.js | 3 | ||||
-rw-r--r-- | chrome/renderer/resources/extensions/web_view_experimental.js | 39 |
2 files changed, 39 insertions, 3 deletions
diff --git a/chrome/renderer/resources/extensions/web_view.js b/chrome/renderer/resources/extensions/web_view.js index ff785e9..a14c351 100644 --- a/chrome/renderer/resources/extensions/web_view.js +++ b/chrome/renderer/resources/extensions/web_view.js @@ -558,6 +558,9 @@ WebViewInternal.prototype.setupWebviewNodeEvents_ = function() { 'api': 'webview', 'instanceId': self.viewInstanceId_ }; + if (self.userAgentOverride_) { + params['userAgentOverride'] = self.userAgentOverride_; + } self.browserPluginNode_['-internal-attach'](params); var events = self.getEvents_(); diff --git a/chrome/renderer/resources/extensions/web_view_experimental.js b/chrome/renderer/resources/extensions/web_view_experimental.js index afa20b11..ee8f089 100644 --- a/chrome/renderer/resources/extensions/web_view_experimental.js +++ b/chrome/renderer/resources/extensions/web_view_experimental.js @@ -113,13 +113,12 @@ WebViewInternal.prototype.handleDialogEvent_ = } }; -/** - * @private - */ +/** @private */ WebViewInternal.prototype.maybeGetExperimentalEvents_ = function() { return WEB_VIEW_EXPERIMENTAL_EVENTS; }; +/** @private */ WebViewInternal.prototype.clearData_ = function(var_args) { if (!this.instanceId_) { return; @@ -128,9 +127,43 @@ WebViewInternal.prototype.clearData_ = function(var_args) { $Function.apply(WebView.clearData, null, args); }; +/** @private */ +WebViewInternal.prototype.getUserAgent_ = function() { + return this.userAgentOverride_ || navigator.userAgent; +}; + +/** @private */ +WebViewInternal.prototype.isUserAgentOverridden_ = function() { + return !!this.userAgentOverride_ && + this.userAgentOverride_ != navigator.userAgent; +}; + +/** @private */ +WebViewInternal.prototype.setUserAgentOverride_ = function(userAgentOverride) { + this.userAgentOverride_ = userAgentOverride; + if (!this.instanceId_) { + // If we are not attached yet, then we will pick up the user agent on + // attachment. + return; + } + WebView.overrideUserAgent(this.instanceId_, userAgentOverride); +}; + WebViewInternal.maybeRegisterExperimentalAPIs = function(proto, secret) { proto.clearData = function(var_args) { var internal = this.internal_(secret); $Function.apply(internal.clearData_, internal, arguments); }; + + proto.getUserAgent = function() { + return this.internal_(secret).getUserAgent_(); + }; + + proto.isUserAgentOverridden = function() { + return this.internal_(secret).isUserAgentOverridden_(); + }; + + proto.setUserAgentOverride = function(userAgentOverride) { + this.internal_(secret).setUserAgentOverride_(userAgentOverride); + }; }; |