Merge pull request #8041 from electron/webview-zoom-factor

Add new method to set layout-based zoom level limit
This commit is contained in:
Kevin Sawicki 2016-11-22 09:08:00 -08:00 committed by GitHub
commit 95ab4815de
8 changed files with 86 additions and 6 deletions

View file

@ -88,10 +88,14 @@ double WebFrame::GetZoomFactor() const {
return blink::WebView::zoomLevelToZoomFactor(GetZoomLevel()); 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); 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<v8::Value> WebFrame::RegisterEmbedderCustomElement( v8::Local<v8::Value> WebFrame::RegisterEmbedderCustomElement(
const base::string16& name, v8::Local<v8::Object> options) { const base::string16& name, v8::Local<v8::Object> options) {
blink::WebExceptionCode c = 0; blink::WebExceptionCode c = 0;
@ -227,7 +231,10 @@ void WebFrame::BuildPrototype(
.SetMethod("getZoomLevel", &WebFrame::GetZoomLevel) .SetMethod("getZoomLevel", &WebFrame::GetZoomLevel)
.SetMethod("setZoomFactor", &WebFrame::SetZoomFactor) .SetMethod("setZoomFactor", &WebFrame::SetZoomFactor)
.SetMethod("getZoomFactor", &WebFrame::GetZoomFactor) .SetMethod("getZoomFactor", &WebFrame::GetZoomFactor)
.SetMethod("setZoomLevelLimits", &WebFrame::SetZoomLevelLimits) .SetMethod("setVisualZoomLevelLimits",
&WebFrame::SetVisualZoomLevelLimits)
.SetMethod("setLayoutZoomLevelLimits",
&WebFrame::SetLayoutZoomLevelLimits)
.SetMethod("registerEmbedderCustomElement", .SetMethod("registerEmbedderCustomElement",
&WebFrame::RegisterEmbedderCustomElement) &WebFrame::RegisterEmbedderCustomElement)
.SetMethod("registerElementResizeCallback", .SetMethod("registerElementResizeCallback",
@ -244,7 +251,9 @@ void WebFrame::BuildPrototype(
.SetMethod("insertText", &WebFrame::InsertText) .SetMethod("insertText", &WebFrame::InsertText)
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript) .SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
.SetMethod("getResourceUsage", &WebFrame::GetResourceUsage) .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 } // namespace api

View file

@ -45,7 +45,8 @@ class WebFrame : public mate::Wrappable<WebFrame> {
double SetZoomFactor(double factor); double SetZoomFactor(double factor);
double GetZoomFactor() const; 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<v8::Value> RegisterEmbedderCustomElement( v8::Local<v8::Value> RegisterEmbedderCustomElement(
const base::string16& name, v8::Local<v8::Object> options); const base::string16& name, v8::Local<v8::Object> options);

View file

@ -691,7 +691,22 @@ Sends a request to get current zoom level, the `callback` will be called with
* `minimumLevel` Number * `minimumLevel` Number
* `maximumLevel` 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()` #### `contents.undo()`

View file

@ -44,7 +44,22 @@ Returns `Number` - The current zoom level.
* `minimumLevel` Number * `minimumLevel` Number
* `maximumLevel` 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)` ### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)`

View file

@ -86,6 +86,31 @@ webContents.openDevTools({detach: true})
webContents.openDevTools({mode: 'detach'}) 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)
```
## `<webview>`
```js
// Deprecated
webview.setZoomLevelLimits(1, 2)
// Replace with
webview.setVisualZoomLevelLimits(1, 2)
```
## Node Headers URL ## Node Headers URL
This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url` This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url`

View file

@ -100,8 +100,11 @@ WebContents.prototype.sendToAll = function (channel, ...args) {
// Following methods are mapped to webFrame. // Following methods are mapped to webFrame.
const webFrameMethods = [ const webFrameMethods = [
'insertText', 'insertText',
'setLayoutZoomLevelLimits',
'setVisualZoomLevelLimits',
'setZoomFactor', 'setZoomFactor',
'setZoomLevel', 'setZoomLevel',
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
'setZoomLevelLimits' 'setZoomLevelLimits'
] ]
const webFrameMethodsWithResult = [ const webFrameMethodsWithResult = [

View file

@ -390,8 +390,11 @@ var registerWebViewElement = function () {
'insertText', 'insertText',
'send', 'send',
'sendInputEvent', 'sendInputEvent',
'setLayoutZoomLevelLimits',
'setVisualZoomLevelLimits',
'setZoomFactor', 'setZoomFactor',
'setZoomLevel', 'setZoomLevel',
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
'setZoomLevelLimits' 'setZoomLevelLimits'
] ]

View file

@ -6,6 +6,7 @@ const {BrowserWindow, protocol, ipcMain} = remote
describe('webFrame module', function () { describe('webFrame module', function () {
var fixtures = path.resolve(__dirname, 'fixtures') var fixtures = path.resolve(__dirname, 'fixtures')
describe('webFrame.registerURLSchemeAsPrivileged', function () { describe('webFrame.registerURLSchemeAsPrivileged', function () {
it('supports fetch api by default', function (done) { it('supports fetch api by default', function (done) {
webFrame.registerURLSchemeAsPrivileged('file') 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)
})
})
}) })