diff --git a/atom/renderer/api/atom_api_web_frame.cc b/atom/renderer/api/atom_api_web_frame.cc index d4cf54b684a69..fcfc50cf7f134 100644 --- a/atom/renderer/api/atom_api_web_frame.cc +++ b/atom/renderer/api/atom_api_web_frame.cc @@ -88,10 +88,14 @@ double WebFrame::GetZoomFactor() const { return blink::WebView::zoomLevelToZoomFactor(GetZoomLevel()); } -void WebFrame::SetZoomLevelLimits(double min_level, double max_level) { +void WebFrame::SetVisualZoomLevelLimits(double min_level, double max_level) { web_frame_->view()->setDefaultPageScaleLimits(min_level, max_level); } +void WebFrame::SetLayoutZoomLevelLimits(double min_level, double max_level) { + web_frame_->view()->zoomLimitsChanged(min_level, max_level); +} + v8::Local WebFrame::RegisterEmbedderCustomElement( const base::string16& name, v8::Local options) { blink::WebExceptionCode c = 0; @@ -227,7 +231,10 @@ void WebFrame::BuildPrototype( .SetMethod("getZoomLevel", &WebFrame::GetZoomLevel) .SetMethod("setZoomFactor", &WebFrame::SetZoomFactor) .SetMethod("getZoomFactor", &WebFrame::GetZoomFactor) - .SetMethod("setZoomLevelLimits", &WebFrame::SetZoomLevelLimits) + .SetMethod("setVisualZoomLevelLimits", + &WebFrame::SetVisualZoomLevelLimits) + .SetMethod("setLayoutZoomLevelLimits", + &WebFrame::SetLayoutZoomLevelLimits) .SetMethod("registerEmbedderCustomElement", &WebFrame::RegisterEmbedderCustomElement) .SetMethod("registerElementResizeCallback", @@ -244,7 +251,9 @@ void WebFrame::BuildPrototype( .SetMethod("insertText", &WebFrame::InsertText) .SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript) .SetMethod("getResourceUsage", &WebFrame::GetResourceUsage) - .SetMethod("clearCache", &WebFrame::ClearCache); + .SetMethod("clearCache", &WebFrame::ClearCache) + // TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings + .SetMethod("setZoomLevelLimits", &WebFrame::SetVisualZoomLevelLimits); } } // namespace api diff --git a/atom/renderer/api/atom_api_web_frame.h b/atom/renderer/api/atom_api_web_frame.h index f530612a4840c..4b5610cd149bc 100644 --- a/atom/renderer/api/atom_api_web_frame.h +++ b/atom/renderer/api/atom_api_web_frame.h @@ -45,7 +45,8 @@ class WebFrame : public mate::Wrappable { double SetZoomFactor(double factor); double GetZoomFactor() const; - void SetZoomLevelLimits(double min_level, double max_level); + void SetVisualZoomLevelLimits(double min_level, double max_level); + void SetLayoutZoomLevelLimits(double min_level, double max_level); v8::Local RegisterEmbedderCustomElement( const base::string16& name, v8::Local options); diff --git a/docs/api/web-contents.md b/docs/api/web-contents.md index eed5468510c08..ba0dcdfec29a9 100644 --- a/docs/api/web-contents.md +++ b/docs/api/web-contents.md @@ -691,7 +691,22 @@ Sends a request to get current zoom level, the `callback` will be called with * `minimumLevel` Number * `maximumLevel` Number -Sets the maximum and minimum zoom level. +**Deprecated:** Call `setVisualZoomLevelLimits` instead to set the visual zoom +level limits. This method will be removed in Electron 2.0. + +#### `contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)` + +* `minimumLevel` Number +* `maximumLevel` Number + +Sets the maximum and minimum pinch-to-zoom level. + +#### `contents.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)` + +* `minimumLevel` Number +* `maximumLevel` Number + +Sets the maximum and minimum layout-based (i.e. non-visual) zoom level. #### `contents.undo()` diff --git a/docs/api/web-frame.md b/docs/api/web-frame.md index f35ea3eed3862..12d9167bc7c54 100644 --- a/docs/api/web-frame.md +++ b/docs/api/web-frame.md @@ -44,7 +44,22 @@ Returns `Number` - The current zoom level. * `minimumLevel` Number * `maximumLevel` Number -Sets the maximum and minimum zoom level. +**Deprecated:** Call `setVisualZoomLevelLimits` instead to set the visual zoom +level limits. This method will be removed in Electron 2.0. + +### `webFrame.setVisualZoomLevelLimits(minimumLevel, maximumLevel)` + +* `minimumLevel` Number +* `maximumLevel` Number + +Sets the maximum and minimum pinch-to-zoom level. + +### `webFrame.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)` + +* `minimumLevel` Number +* `maximumLevel` Number + +Sets the maximum and minimum layout-based (i.e. non-visual) zoom level. ### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)` diff --git a/docs/tutorial/planned-breaking-changes.md b/docs/tutorial/planned-breaking-changes.md index ad1243414c107..ed3606f123c2f 100644 --- a/docs/tutorial/planned-breaking-changes.md +++ b/docs/tutorial/planned-breaking-changes.md @@ -86,6 +86,31 @@ webContents.openDevTools({detach: true}) webContents.openDevTools({mode: 'detach'}) ``` +```js +// Deprecated +webContents.setZoomLevelLimits(1, 2) +// Replace with +webContents.setVisualZoomLevelLimits(1, 2) +``` + +## `webFrame` + +```js +// Deprecated +webFrame.setZoomLevelLimits(1, 2) +// Replace with +webFrame.setVisualZoomLevelLimits(1, 2) +``` + +## `` + +```js +// Deprecated +webview.setZoomLevelLimits(1, 2) +// Replace with +webview.setVisualZoomLevelLimits(1, 2) +``` + ## Node Headers URL This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url` diff --git a/lib/browser/api/web-contents.js b/lib/browser/api/web-contents.js index d363bb051b8ba..a02fddb7d0a23 100644 --- a/lib/browser/api/web-contents.js +++ b/lib/browser/api/web-contents.js @@ -100,8 +100,11 @@ WebContents.prototype.sendToAll = function (channel, ...args) { // Following methods are mapped to webFrame. const webFrameMethods = [ 'insertText', + 'setLayoutZoomLevelLimits', + 'setVisualZoomLevelLimits', 'setZoomFactor', 'setZoomLevel', + // TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings 'setZoomLevelLimits' ] const webFrameMethodsWithResult = [ diff --git a/lib/renderer/web-view/web-view.js b/lib/renderer/web-view/web-view.js index c8033bea0468f..ba8ae32d46d54 100644 --- a/lib/renderer/web-view/web-view.js +++ b/lib/renderer/web-view/web-view.js @@ -390,8 +390,11 @@ var registerWebViewElement = function () { 'insertText', 'send', 'sendInputEvent', + 'setLayoutZoomLevelLimits', + 'setVisualZoomLevelLimits', 'setZoomFactor', 'setZoomLevel', + // TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings 'setZoomLevelLimits' ] diff --git a/spec/api-web-frame-spec.js b/spec/api-web-frame-spec.js index 09e6b63a64998..4ef6fdd387da8 100644 --- a/spec/api-web-frame-spec.js +++ b/spec/api-web-frame-spec.js @@ -6,6 +6,7 @@ const {BrowserWindow, protocol, ipcMain} = remote describe('webFrame module', function () { var fixtures = path.resolve(__dirname, 'fixtures') + describe('webFrame.registerURLSchemeAsPrivileged', function () { it('supports fetch api by default', function (done) { webFrame.registerURLSchemeAsPrivileged('file') @@ -126,4 +127,12 @@ describe('webFrame module', function () { }) } }) + + it('supports setting the visual and layout zoom level limits', function () { + assert.doesNotThrow(function () { + webFrame.setZoomLevelLimits(1, 100) + webFrame.setVisualZoomLevelLimits(1, 50) + webFrame.setLayoutZoomLevelLimits(0, 25) + }) + }) })