summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources
diff options
context:
space:
mode:
authorlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 03:13:17 +0000
committerlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 03:13:17 +0000
commit0d2f55e921ce214656cc43643509a98209f0c853 (patch)
tree3e5cefdc8ffa6d7ad33a36eb3332eb9517216d4b /chrome/renderer/resources
parent2221fcb127eb041ee2dac0d132024586d87098ab (diff)
downloadchromium_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.js3
-rw-r--r--chrome/renderer/resources/extensions/web_view_experimental.js39
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);
+ };
};