Don't show supervised user as "already on this device" while they're being imported.
[chromium-blink-merge.git] / extensions / renderer / resources / guest_view / web_view / web_view_api_methods.js
blobe939e5dcf5df5a26bab6414aa45ecb49dbb03768
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This module implements the public-facing API functions for the <webview> tag.
7 var WebViewInternal = require('webViewInternal').WebViewInternal;
8 var WebViewImpl = require('webView').WebViewImpl;
10 // An array of <webview>'s public-facing API methods. Methods without custom
11 // implementations will be given default implementations. Default
12 // implementations come from createDefaultApiMethod() in web_view.js.
13 var WEB_VIEW_API_METHODS = [
14   // Add content scripts for the guest page.
15   'addContentScripts',
17   // Navigates to the previous history entry.
18   'back',
20   // Returns whether there is a previous history entry to navigate to.
21   'canGoBack',
23   // Returns whether there is a subsequent history entry to navigate to.
24   'canGoForward',
26   // Clears browsing data for the WebView partition.
27   'clearData',
29   // Injects JavaScript code into the guest page.
30   'executeScript',
32   // Initiates a find-in-page request.
33   'find',
35   // Navigates to the subsequent history entry.
36   'forward',
38   // Returns Chrome's internal process ID for the guest web page's current
39   // process.
40   'getProcessId',
42   // Returns the user agent string used by the webview for guest page requests.
43   'getUserAgent',
45   // Gets the current zoom factor.
46   'getZoom',
48   // Gets the current zoom mode of the webview.
49   'getZoomMode',
51   // Navigates to a history entry using a history index relative to the current
52   // navigation.
53   'go',
55   // Injects CSS into the guest page.
56   'insertCSS',
58   // Indicates whether or not the webview's user agent string has been
59   // overridden.
60   'isUserAgentOverridden',
62   // Loads a data URL with a specified base URL used for relative links.
63   // Optionally, a virtual URL can be provided to be shown to the user instead
64   // of the data URL.
65   'loadDataWithBaseUrl',
67   // Prints the contents of the webview.
68   'print',
70   // Removes content scripts for the guest page.
71   'removeContentScripts',
73   // Reloads the current top-level page.
74   'reload',
76   // Override the user agent string used by the webview for guest page requests.
77   'setUserAgentOverride',
79   // Changes the zoom factor of the page.
80   'setZoom',
82   // Changes the zoom mode of the webview.
83   'setZoomMode',
85   // Stops loading the current navigation if one is in progress.
86   'stop',
88   // Ends the current find session.
89   'stopFinding',
91   // Forcibly kills the guest web page's renderer process.
92   'terminate'
95 // -----------------------------------------------------------------------------
96 // Custom API method implementations.
98 WebViewImpl.prototype.addContentScripts = function(rules) {
99   return WebViewInternal.addContentScripts(this.viewInstanceId, rules);
102 WebViewImpl.prototype.back = function(callback) {
103   return this.go(-1, callback);
106 WebViewImpl.prototype.canGoBack = function() {
107   return this.entryCount > 1 && this.currentEntryIndex > 0;
110 WebViewImpl.prototype.canGoForward = function() {
111   return this.currentEntryIndex >= 0 &&
112       this.currentEntryIndex < (this.entryCount - 1);
115 WebViewImpl.prototype.executeScript = function(var_args) {
116   return this.executeCode(WebViewInternal.executeScript,
117                           $Array.slice(arguments));
120 WebViewImpl.prototype.forward = function(callback) {
121   return this.go(1, callback);
124 WebViewImpl.prototype.getProcessId = function() {
125   return this.processId;
128 WebViewImpl.prototype.getUserAgent = function() {
129   return this.userAgentOverride || navigator.userAgent;
132 WebViewImpl.prototype.insertCSS = function(var_args) {
133   return this.executeCode(WebViewInternal.insertCSS, $Array.slice(arguments));
136 WebViewImpl.prototype.isUserAgentOverridden = function() {
137   return !!this.userAgentOverride &&
138       this.userAgentOverride != navigator.userAgent;
141 WebViewImpl.prototype.loadDataWithBaseUrl = function(
142     dataUrl, baseUrl, virtualUrl) {
143   if (!this.guest.getId()) {
144     return;
145   }
146   WebViewInternal.loadDataWithBaseUrl(
147       this.guest.getId(), dataUrl, baseUrl, virtualUrl, function() {
148         // Report any errors.
149         if (chrome.runtime.lastError != undefined) {
150           window.console.error(
151               'Error while running webview.loadDataWithBaseUrl: ' +
152                   chrome.runtime.lastError.message);
153         }
154       });
157 WebViewImpl.prototype.print = function() {
158   return this.executeScript({code: 'window.print();'});
161 WebViewImpl.prototype.removeContentScripts = function(names) {
162   return WebViewInternal.removeContentScripts(this.viewInstanceId, names);
165 WebViewImpl.prototype.setUserAgentOverride = function(userAgentOverride) {
166   this.userAgentOverride = userAgentOverride;
167   if (!this.guest.getId()) {
168     // If we are not attached yet, then we will pick up the user agent on
169     // attachment.
170     return false;
171   }
172   WebViewInternal.overrideUserAgent(this.guest.getId(), userAgentOverride);
173   return true;
176 WebViewImpl.prototype.setZoom = function(zoomFactor, callback) {
177   if (!this.guest.getId()) {
178     this.cachedZoomFactor = zoomFactor;
179     return false;
180   }
181   this.cachedZoomFactor = 1;
182   WebViewInternal.setZoom(this.guest.getId(), zoomFactor, callback);
183   return true;
186 // -----------------------------------------------------------------------------
188 WebViewImpl.getApiMethods = function() {
189   return WEB_VIEW_API_METHODS;