Merge pull request #3537 from etiktin/make_BrowserWindow_options_optional
Make BrowserWindow options argument optional
This commit is contained in:
commit
634fef2508
4 changed files with 79 additions and 48 deletions
|
@ -261,13 +261,23 @@ void Window::OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) {
|
|||
#endif
|
||||
|
||||
// static
|
||||
mate::Wrappable* Window::New(v8::Isolate* isolate,
|
||||
const mate::Dictionary& options) {
|
||||
mate::Wrappable* Window::New(v8::Isolate* isolate, mate::Arguments* args) {
|
||||
if (!Browser::Get()->is_ready()) {
|
||||
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
|
||||
isolate, "Cannot create BrowserWindow before app is ready")));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (args->Length() > 1) {
|
||||
args->ThrowError();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
mate::Dictionary options;
|
||||
if (!(args->Length() == 1 && args->GetNext(&options))) {
|
||||
options = mate::Dictionary::CreateEmpty(isolate);
|
||||
}
|
||||
|
||||
return new Window(isolate, options);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,8 +38,7 @@ class WebContents;
|
|||
class Window : public mate::TrackableObject<Window>,
|
||||
public NativeWindowObserver {
|
||||
public:
|
||||
static mate::Wrappable* New(v8::Isolate* isolate,
|
||||
const mate::Dictionary& options);
|
||||
static mate::Wrappable* New(v8::Isolate* isolate, mate::Arguments* args);
|
||||
|
||||
static void BuildPrototype(v8::Isolate* isolate,
|
||||
v8::Local<v8::ObjectTemplate> prototype);
|
||||
|
|
|
@ -25,49 +25,58 @@ You can also create a window without chrome by using
|
|||
|
||||
It creates a new `BrowserWindow` with native properties as set by the `options`.
|
||||
|
||||
### `new BrowserWindow(options)`
|
||||
### `new BrowserWindow([options])`
|
||||
|
||||
`options` Object, properties:
|
||||
`options` Object (optional), properties:
|
||||
|
||||
* `width` Integer - Window's width.
|
||||
* `height` Integer - Window's height.
|
||||
* `x` Integer - Window's left offset from screen.
|
||||
* `y` Integer - Window's top offset from screen.
|
||||
* `width` Integer - Window's width in pixels. Default is `800`.
|
||||
* `height` Integer - Window's height in pixels. Default is `600`.
|
||||
* `x` Integer - Window's left offset from screen. Default is to center the
|
||||
window.
|
||||
* `y` Integer - Window's top offset from screen. Default is to center the
|
||||
window.
|
||||
* `useContentSize` Boolean - The `width` and `height` would be used as web
|
||||
page's size, which means the actual window's size will include window
|
||||
frame's size and be slightly larger.
|
||||
frame's size and be slightly larger. Default is `false`.
|
||||
* `center` Boolean - Show window in the center of the screen.
|
||||
* `minWidth` Integer - Window's minimum width.
|
||||
* `minHeight` Integer - Window's minimum height.
|
||||
* `maxWidth` Integer - Window's maximum width.
|
||||
* `maxHeight` Integer - Window's maximum height.
|
||||
* `resizable` Boolean - Whether window is resizable.
|
||||
* `minWidth` Integer - Window's minimum width. Default is `0`.
|
||||
* `minHeight` Integer - Window's minimum height. Default is `0`.
|
||||
* `maxWidth` Integer - Window's maximum width. Default is no limit.
|
||||
* `maxHeight` Integer - Window's maximum height. Default is no limit.
|
||||
* `resizable` Boolean - Whether window is resizable. Default is `true`.
|
||||
* `alwaysOnTop` Boolean - Whether the window should always stay on top of
|
||||
other windows.
|
||||
other windows. Default is `false`.
|
||||
* `fullscreen` Boolean - Whether the window should show in fullscreen. When
|
||||
set to `false` the fullscreen button will be hidden or disabled on OS X.
|
||||
* `skipTaskbar` Boolean - Whether to show the window in taskbar.
|
||||
* `kiosk` Boolean - The kiosk mode.
|
||||
* `title` String - Default window title.
|
||||
Default is `false`.
|
||||
* `skipTaskbar` Boolean - Whether to show the window in taskbar. Default is
|
||||
`false`.
|
||||
* `kiosk` Boolean - The kiosk mode. Default is `false`.
|
||||
* `title` String - Default window title. Default is `"Electron"`.
|
||||
* `icon` [NativeImage](native-image.md) - The window icon, when omitted on
|
||||
Windows the executable's icon would be used as window icon.
|
||||
* `show` Boolean - Whether window should be shown when created.
|
||||
* `show` Boolean - Whether window should be shown when created. Default is
|
||||
`true`.
|
||||
* `frame` Boolean - Specify `false` to create a
|
||||
[Frameless Window](frameless-window.md).
|
||||
[Frameless Window](frameless-window.md). Default is `true`.
|
||||
* `acceptFirstMouse` Boolean - Whether the web view accepts a single
|
||||
mouse-down event that simultaneously activates the window.
|
||||
* `disableAutoHideCursor` Boolean - Whether to hide cursor when typing.
|
||||
mouse-down event that simultaneously activates the window. Default is `false`.
|
||||
* `disableAutoHideCursor` Boolean - Whether to hide cursor when typing. Default
|
||||
is `false`.
|
||||
* `autoHideMenuBar` Boolean - Auto hide the menu bar unless the `Alt`
|
||||
key is pressed.
|
||||
key is pressed. Default is `false`.
|
||||
* `enableLargerThanScreen` Boolean - Enable the window to be resized larger
|
||||
than screen.
|
||||
than screen. Default is `false`.
|
||||
* `backgroundColor` String - Window's background color as Hexadecimal value,
|
||||
like `#66CD00` or `#FFF`. This is only implemented on Linux and Windows.
|
||||
Default is `#000` (black).
|
||||
* `darkTheme` Boolean - Forces using dark theme for the window, only works on
|
||||
some GTK+3 desktop environments.
|
||||
some GTK+3 desktop environments. Default is `false`.
|
||||
* `transparent` Boolean - Makes the window [transparent](frameless-window.md).
|
||||
Default is `false`.
|
||||
* `type` String - Specifies the type of the window, which applies
|
||||
additional platform-specific properties.
|
||||
additional platform-specific properties. By default it's undefined and you'll
|
||||
get a regular app window. Supported values:
|
||||
* On Linux, possible types are `desktop`, `dock`, `toolbar`, `splash`,
|
||||
`notification`.
|
||||
* On OS X, possible types are `desktop`, `textured`. The `textured` type adds
|
||||
|
@ -79,7 +88,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
|
|||
* `titleBarStyle` String, OS X - specifies the style of window title bar.
|
||||
This option is supported on OS X 10.10 Yosemite and newer. There are three
|
||||
possible values:
|
||||
* `default` or not specified results in the standard gray opaque Mac title
|
||||
* `default` or not specified, results in the standard gray opaque Mac title
|
||||
bar.
|
||||
* `hidden` results in a hidden title bar and a full size content window, yet
|
||||
the title bar still has the standard window controls ("traffic lights") in
|
||||
|
@ -104,33 +113,38 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
|
|||
`partition`, multiple pages can share the same session. If the `partition`
|
||||
is unset then default session of the app will be used.
|
||||
* `zoomFactor` Number - The default zoom factor of the page, `3.0` represents
|
||||
`300%`.
|
||||
* `javascript` Boolean
|
||||
`300%`. Default is `1.0`.
|
||||
* `javascript` Boolean - Enables JavaScript support. Default is `true`.
|
||||
* `webSecurity` Boolean - When setting `false`, it will disable the
|
||||
same-origin policy (Usually using testing websites by people), and set
|
||||
`allowDisplayingInsecureContent` and `allowRunningInsecureContent` to
|
||||
`true` if these two options are not set by user.
|
||||
`true` if these two options are not set by user. Default is `true`.
|
||||
* `allowDisplayingInsecureContent` Boolean - Allow an https page to display
|
||||
content like images from http URLs.
|
||||
content like images from http URLs. Default is `false`.
|
||||
* `allowRunningInsecureContent` Boolean - Allow a https page to run
|
||||
JavaScript, CSS or plugins from http URLs.
|
||||
* `images` Boolean
|
||||
* `java` Boolean
|
||||
* `textAreasAreResizable` Boolean
|
||||
* `webgl` Boolean
|
||||
* `webaudio` Boolean
|
||||
* `plugins` Boolean - Whether plugins should be enabled.
|
||||
* `experimentalFeatures` Boolean
|
||||
* `experimentalCanvasFeatures` Boolean
|
||||
* `overlayScrollbars` Boolean
|
||||
* `overlayFullscreenVideo` Boolean
|
||||
* `sharedWorker` Boolean
|
||||
* `directWrite` Boolean - Whether the DirectWrite font rendering system on
|
||||
Windows is enabled.
|
||||
JavaScript, CSS or plugins from http URLs. Default is `false`.
|
||||
* `images` Boolean - Enables image support. Default is `true`.
|
||||
* `java` Boolean - Enables Java support. Default is `false`.
|
||||
* `textAreasAreResizable` Boolean - Make TextArea elements resizable. Default
|
||||
is `true`.
|
||||
* `webgl` Boolean - Enables WebGL support. Default is `true`.
|
||||
* `webaudio` Boolean - Enables WebAudio support. Default is `true`.
|
||||
* `plugins` Boolean - Whether plugins should be enabled. Default is `false`.
|
||||
* `experimentalFeatures` Boolean - Enables Chromium's experimental features.
|
||||
Default is `false`.
|
||||
* `experimentalCanvasFeatures` Boolean - Enables Chromium's experimental
|
||||
canvas features. Default is `false`.
|
||||
* `overlayScrollbars` Boolean - Enables overlay scrollbars. Default is
|
||||
`false`.
|
||||
* `overlayFullscreenVideo` Boolean - Enables overlay fullscreen video. Default
|
||||
is `false`
|
||||
* `sharedWorker` Boolean - Enables Shared Worker support. Default is `false`.
|
||||
* `directWrite` Boolean - Enables DirectWrite font rendering system on
|
||||
Windows. Default is `true`.
|
||||
* `pageVisibility` Boolean - Page would be forced to be always in visible
|
||||
or hidden state once set, instead of reflecting current window's
|
||||
visibility. Users can set it to `true` to prevent throttling of DOM
|
||||
timers.
|
||||
timers. Default is `false`.
|
||||
|
||||
## Events
|
||||
|
||||
|
|
|
@ -322,3 +322,11 @@ describe 'browser-window module', ->
|
|||
done()
|
||||
|
||||
w.loadURL "file://#{fixtures}/pages/save_page/index.html"
|
||||
|
||||
describe 'BrowserWindow options argument is optional', ->
|
||||
it 'should create a window with default size (800x600)', ->
|
||||
w.destroy()
|
||||
w = new BrowserWindow()
|
||||
size = w.getSize()
|
||||
assert.equal size[0], 800
|
||||
assert.equal size[1], 600
|
||||
|
|
Loading…
Reference in a new issue