Compare commits

..

2782 Commits

Author SHA1 Message Date
Cheng Zhao
903bf444d9 Bump v1.4.1 2016-09-22 19:05:58 +09:00
Cheng Zhao
3dad8734a0 Do not copy api.json on Windows 2016-09-22 19:05:58 +09:00
Cheng Zhao
d3a175cea8 Merge pull request #7303 from electron/fix-out-dir
electron-api.json is under out/ instead of out/R/
2016-09-22 14:39:33 +09:00
Cheng Zhao
4e0f810148 electron-api.json is under out/ instead of out/R/ 2016-09-22 14:31:28 +09:00
Cheng Zhao
32543997d4 Merge pull request #7297 from electron/clean-docs
Mention build cleaning on all three platforms
2016-09-22 14:14:36 +09:00
Cheng Zhao
c9a3ab3a81 Merge pull request #7295 from electron/native-image-bad-path-docs
Mention createFromPath bad path return value
2016-09-22 14:14:15 +09:00
Cheng Zhao
3b4a071723 Merge pull request #7294 from electron/mutate-remote-array-docs
Mention mutating remote arrays and buffers
2016-09-22 14:13:49 +09:00
Cheng Zhao
de9b01409b Merge pull request #7293 from electron/bookmark-windows-docs
Mention using fallback text when writing bookmarks on Windows
2016-09-22 14:13:28 +09:00
Cheng Zhao
296a53536d Merge pull request #7292 from electron/ct-log-verifiers
Upgrade Brigthray for CT log verifier fix
2016-09-22 14:11:20 +09:00
Kevin Sawicki
696e5e73bc Upgrade Brigthray for CT log verifier fix 2016-09-21 11:29:09 -07:00
Kevin Sawicki
a723d17f49 Mention cleaning on all three platforms 2016-09-21 11:10:52 -07:00
Kevin Sawicki
f8236c1a65 Add more failure asserts for nativeImage.createFromPath 2016-09-21 10:48:24 -07:00
Kevin Sawicki
546c0e7822 Mention createFromPath failure cases 2016-09-21 10:48:01 -07:00
Kevin Sawicki
e7c4d2523b Mention mutating remote arrays and buffers 2016-09-21 10:44:54 -07:00
Kevin Sawicki
cae15ad6b5 Mention using fallback text when writing bookmarks on Windows 2016-09-21 10:31:01 -07:00
Kevin Sawicki
c2c48c4079 Merge pull request #7290 from tinydew4/translate-ko
Translate tutorial/about.md
2016-09-21 09:04:20 -07:00
Kevin Sawicki
dc7d2dab68 Merge pull request #7287 from tinydew4/translate-update
Update windows-store-guide.md in ko-KR docs
2016-09-21 09:03:48 -07:00
arus
146970d29d Add missing sample codes 2016-09-22 00:35:27 +09:00
arus
ba2cb42f0d Remove incorrect letters 2016-09-22 00:30:20 +09:00
arus
7dfe1a59b1 Translate remains in about.md 2016-09-22 00:18:28 +09:00
arus
4343f762ac Translate some in about.md 2016-09-22 00:15:57 +09:00
arus
e2f53c6bcc Translate some in about.md 2016-09-22 00:13:44 +09:00
arus
5c22f2ca5d Translate some in about.md 2016-09-22 00:05:26 +09:00
arus
b6d4014bd5 Translate some in about.md 2016-09-22 00:04:24 +09:00
arus
6b8f5f5b7f Translate some in about.md 2016-09-22 00:01:21 +09:00
arus
b7e2f819a3 Translate Core Philosophy in about.md 2016-09-21 23:55:16 +09:00
arus
a8e0e8d7fd Translate LTS in about.md 2016-09-21 23:42:07 +09:00
arus
beea9a7c36 Translate Update dependencies and Versioning in about.md 2016-09-21 23:35:19 +09:00
arus
a44d7a3bc6 Translate some in aboud.md 2016-09-21 23:11:29 +09:00
arus
b45db70d21 Translate Releases in about.md 2016-09-21 23:08:32 +09:00
arus
8feff471ce Modify some in about.md 2016-09-21 23:04:41 +09:00
arus
00dec166e9 Translate Core Team and Contributors in about.md 2016-09-21 23:03:23 +09:00
arus
ebbbaf1ab0 Translate Core Team and Contributors in about.md 2016-09-21 23:03:02 +09:00
arus
29312186de Translate about/about electron in Korean 2016-09-21 22:38:17 +09:00
arus
e1d9e4ffcb Merge branch 'translate-update' of https://github.com/tinydew4/electron into translate-update 2016-09-21 22:01:54 +09:00
arus
b6c04c9e35 Update windows-store-guide.md in ko-KR docs 2016-09-21 22:00:48 +09:00
arus
405b411a29 Merge branch 'translate-update' of https://github.com/tinydew4/electron into translate-update 2016-09-21 21:44:07 +09:00
arus
582fc50cf6 Update windows-store-guide.md in ko-KR docs 2016-09-21 21:43:18 +09:00
arus
b74cfda7b9 Update windows-store-guide.md in ko-KR docs 2016-09-21 21:35:35 +09:00
Cheng Zhao
805ce0dee9 Merge pull request #7276 from electron/google-api-key-env2
allow GOOGLE_API_KEY to be set
2016-09-21 15:16:29 +09:00
Zeke Sikelianos
f4a8fb9eb4 🎨 standard 2016-09-20 14:55:45 -07:00
Kevin Sawicki
85702604c3 Merge pull request #7277 from electron/dictionary-to-object
Set parameter type to Object instead of Dictionary
2016-09-20 14:48:48 -07:00
Kevin Sawicki
98999f4850 Add missing s in progress 2016-09-20 14:46:17 -07:00
Kevin Sawicki
b5e1571204 Set parameter type to Object 2016-09-20 14:26:55 -07:00
Zeke Sikelianos
d7934e7525 add link to chromium API keys doc 2016-09-20 14:13:30 -07:00
Zeke Sikelianos
7fcba6ba0f document the GOOGLE_API_KEY env var 2016-09-20 13:58:39 -07:00
Kevin Sawicki
ea1927f428 Store api_key_ on TokenLoadingJob 2016-09-20 13:24:45 -07:00
Zeke Sikelianos
fa2aaa48b1 allow GOOGLE_API_KEY to be set in environment 2016-09-20 12:01:59 -07:00
Kevin Sawicki
dee383db07 Merge pull request #7273 from tinydew4/fix-links
Fix some bronken links
2016-09-20 09:00:08 -07:00
Kevin Sawicki
04a1dc8e1e Merge pull request #7272 from tinydew4/translate-ko
Translate "offscreen rendering" in Korean
2016-09-20 08:59:53 -07:00
Kevin Sawicki
ae31ded165 Merge pull request #7265 from octref/patch-1
Add instruction for debugging main process in VSCode
2016-09-20 08:59:37 -07:00
arus
402e977b40 Fix some bronken links 2016-09-20 23:36:20 +09:00
arus
a65c8cae63 modify some 2016-09-20 23:30:46 +09:00
arus
47a03d3ca1 modify some 2016-09-20 23:29:34 +09:00
arus
b4a13fda3a Translate offscreen rendering in Korean 2016-09-20 23:19:15 +09:00
Cheng Zhao
e11672d42b Merge pull request #7262 from tinydew4/patch-1
Update browser-window.md
2016-09-20 16:04:25 +09:00
Cheng Zhao
30a6b597a5 Merge pull request #7239 from darkdh/6873
Emit scroll-touch-edge event instead of changing the behavior of scrollll-touch-begin/end
2016-09-20 14:51:10 +09:00
Pine
c45ca254e3 Add instruction for debugging main process in VSCode
I hope you don't mind me putting the VSCode part before `node-inspector`, because VSCode seems easier to setup, and VSCode could inspect `process` without crashing.
2016-09-19 22:43:05 -07:00
Cheng Zhao
143d7ab98f Merge pull request #7264 from electron/docs-readme
Docs Readme
2016-09-20 14:31:31 +09:00
Cheng Zhao
e3e450613d Merge pull request #7157 from Mossop/moveguest
Allow moving a webcontents to a different webview
2016-09-20 14:28:42 +09:00
Cheng Zhao
77fdc67235 Merge pull request #7173 from electron/windows-system-color
Add an app API method to fetch the system ColorizationColor
2016-09-20 14:06:21 +09:00
Zeke Sikelianos
61e50046bd link to the documentation styleguide 2016-09-19 21:10:36 -07:00
Zeke Sikelianos
1cdf8bbc10 break up run-on sentence 2016-09-19 21:09:31 -07:00
Zeke Sikelianos
a3d2cdaa2c website doesn't display docs for old versions any more 2016-09-19 21:09:02 -07:00
Arus
159e2f2dab Update browser-window.md 2016-09-20 11:26:04 +09:00
Kevin Sawicki
e8f3cf164b Merge pull request #7227 from electron/felix-cmd-strings
Ensure correct types for commandLine
2016-09-19 10:22:28 -07:00
Samuel Attard
456f102cdc Fix k typo 2016-09-20 02:42:41 +10:00
Samuel Attard
ba98109d33 Remove semicolons from spec 2016-09-20 02:41:26 +10:00
Samuel Attard
9f94652792 Add basic spec for getAccentColor 2016-09-20 02:41:26 +10:00
Samuel Attard
1454510549 Alphabetical method ordering 2016-09-20 02:41:26 +10:00
Samuel Attard
c0f8b4895d Update docs 2016-09-20 02:41:26 +10:00
Samuel Attard
5dd5dbb3d8 Add a systemPreferences API method to fetch the system ColorizationColor
This is useful for automatical app theming

* Fetches the color from the registry
* Returns an empty string if the fetch fails (a falsey value)
2016-09-20 02:41:26 +10:00
Kevin Sawicki
48fd2bd35f binding -> bindings 2016-09-19 09:31:59 -07:00
Felix Rieseberg
29fa48d8c3 🔧 Ensure correct types for commandLine
This commit ensures that arguments passed to `appendSwitch` and `appendArgument` are turned into strings before passing them over to the binding.
2016-09-19 09:31:59 -07:00
Felix Rieseberg
90bff4d9de 🔧 Ensure correct types for commandLine
This commit ensures that arguments passed to `appendSwitch` and `appendArgument` are turned into strings before passing them over to the binding.
2016-09-19 09:31:59 -07:00
Cheng Zhao
b05254807b Merge pull request #7253 from electron/osr-crash
Unsubscribe observer when OffScreenRenderWidgetHostView is destroyed
2016-09-19 17:54:31 +09:00
Cheng Zhao
e504d82554 spec: Suppress the download.pdf test on AppVeyor 2016-09-19 17:12:33 +09:00
Cheng Zhao
5bf746700e Unsubscribe observer when OffScreenRenderWidgetHostView is destroyed 2016-09-19 16:51:03 +09:00
Cheng Zhao
07a08077a2 Revert electron/brightray#246 2016-09-19 16:31:00 +09:00
Cheng Zhao
26004f1a66 Merge pull request #7241 from miniak/crashed-killed
Add killed argument for webContents.on("crashed") and app.on("gpu-process-crashed") events
2016-09-19 16:02:52 +09:00
Cheng Zhao
1c6586c4b9 Merge pull request #7238 from electron/felix-windows-store-docs
Update Windows Store Language
2016-09-19 15:54:23 +09:00
Cheng Zhao
0ac4b89a0a Merge pull request #7236 from yuya-oc/accelerator-for-redo
Use Ctrl+Y as the accelerator of redo on Windows
2016-09-19 15:53:44 +09:00
Cheng Zhao
6de1eef078 Merge pull request #7234 from Mossop/testhistoryreplace
 Test that replacement history entries don't break forward navigation.
2016-09-19 15:47:30 +09:00
Cheng Zhao
1fd819e500 Merge pull request #7231 from miniak/default-error-mode
Fix ELECTRON_DEFAULT_ERROR_MODE
2016-09-19 15:44:52 +09:00
Cheng Zhao
a260647b4f Merge pull request #7062 from MaxWhere/osr-sizing-fix
Offscreen invalidate and sizing fix
2016-09-19 15:38:11 +09:00
Cheng Zhao
ffe931bde7 Merge pull request #7226 from electron/power-monitor-error
Rethrow caught errors from process.binding
2016-09-19 15:25:18 +09:00
Cheng Zhao
27bc6c7883 Merge pull request #7233 from electron/deprecate-atom-shell-version
Deprecate process.versions['atom-shell']
2016-09-19 15:24:10 +09:00
Cheng Zhao
6c340cece8 Merge pull request #7229 from electron/update-clang
Update clang to r274142.
2016-09-19 15:23:57 +09:00
Cheng Zhao
64718173ef Merge pull request #7230 from electron/windows-x64-link-crypt32
Link against crypt32.lib
2016-09-19 15:23:41 +09:00
Yuya Ochiai
43f955194e 🏁 Use Ctrl+Y as the accelerator of redo on Windows 2016-09-18 17:07:34 +09:00
Milan Burda
8567f79e67 Add killed argument for webContents.on("crashed") and app.on("gpu-process-crashed") events 2016-09-17 17:02:36 -07:00
Anthony Tseng
269a87b26f Emit scroll-touch-edge event instead of changing the behavior of scroll-touch-begin/end
fix #6873
2016-09-17 22:50:10 +08:00
Felix Rieseberg
084110c56f 📝 Update Windows Store Language 2016-09-17 04:19:55 -07:00
Dave Townsend
47df447e4f Test that replacement history entries don't break forward navigation.
This is a test for #7175
2016-09-16 17:08:54 -07:00
Kevin Sawicki
1072519488 Mark atom-shell version as deprecated 2016-09-16 15:59:00 -07:00
gellert
37de2301f7 moves setsize call to osr renderwidgethostview 2016-09-16 23:28:51 +02:00
gellert
fec5a7d67a removes extra header 2016-09-16 23:27:51 +02:00
gellert
8baaad4e0d cleanup and adds docs 2016-09-16 23:27:51 +02:00
gellert
10ea0268e5 calling setsize only on osr windows 2016-09-16 23:27:11 +02:00
gellert
b4c220613f adds invalidate method and proper resizing 2016-09-16 23:27:11 +02:00
Zeke Sikelianos
d4b204799d Merge pull request #7120 from electron/lint-docs
Publish the public API as a JSON object
2016-09-16 14:05:32 -07:00
Milan Burda
12a2b144f3 Only drop the SEM_NOGPFAULTERRORBOX flag when calling SetErrorMode (ELECTRON_DEFAULT_ERROR_MODE) 2016-09-16 14:01:33 -07:00
Kevin Sawicki
7df86c48fa Link against crypt32.lib 2016-09-16 13:17:58 -07:00
Kevin Sawicki
0c3ad527e3 initialize -> require 2016-09-16 13:09:06 -07:00
Haojian Wu
37e30cef60 Update clang to r274142. 2016-09-16 21:59:25 +02:00
Kevin Sawicki
0fda86f79a Mention not requiring module until app is ready 2016-09-16 11:42:02 -07:00
Kevin Sawicki
e77d7e7f62 🎨 2016-09-16 11:41:53 -07:00
Kevin Sawicki
5d0f3534eb Rethrow binding errors 2016-09-16 11:34:52 -07:00
Kevin Sawicki
577394442b power-monitor -> powerMonitor 2016-09-16 09:58:27 -07:00
Cheng Zhao
d1274bb79f Update brightray for #7073 2016-09-16 21:28:24 +09:00
Cheng Zhao
da677b683b Merge pull request #7163 from MaxWhere/frame-sub-scale-fix
Frame subscriber improvements
2016-09-16 21:24:53 +09:00
Cheng Zhao
9dad9478fa Merge pull request #7169 from deepak1556/download_defaultname_patch
browser: provide a default filename when unable to generate from download data
2016-09-16 21:19:21 +09:00
Cheng Zhao
ea244a5188 Merge pull request #7209 from electron/remote-function-missing-properties
Guard against missing remote function properties
2016-09-16 21:11:12 +09:00
Cheng Zhao
69d4cac760 Merge branch 'release' 2016-09-16 21:03:54 +09:00
deepak1556
e7f1265b64 add save-to-disk disposition for new-window event 2016-09-16 16:30:26 +05:30
deepak1556
94faaf7d58 provide a default file name for downloads 2016-09-16 16:02:57 +05:30
deepak1556
d426d4ad90 add failing spec 2016-09-16 16:02:57 +05:30
gellert
64e53a17bd reverts subscriber api 2016-09-16 11:18:15 +02:00
Cheng Zhao
20d5a50ac9 Merge pull request #7178 from aichingm/master
🐧 Add support for different trash implementations
2016-09-16 17:43:09 +09:00
Cheng Zhao
9714348260 Merge pull request #6941 from deepak1556/blob_data_patch
protocol: provide blob uuid with uploadData
2016-09-16 17:01:15 +09:00
Plusb Preco
787bc85703 docs: Update Korean docs as upstream (#7211)
* 📝 Update `README-ko.md`

* Remove Korean readme specified header.
* Add Indonesia community link.

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Mark untranslated docs

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Add untranslated files

[ci skip]

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Update Korean docs as upstream

* 📝 Update `README-ko.md`

* Remove Korean readme specified header.
* Add Indonesia community link.

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Update Korean docs as upstream

* 📝 Mark untranslated docs

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Add untranslated files

[ci skip]

* 📝 Update Korean docs as upstream

[ci skip]

* 📝 Update Korean docs as upstream

* 📝 Correct readme name

[ci skip]

* 📝 Update Korean docs as upstream

[ci skip]
2016-09-15 09:27:10 -07:00
Cheng Zhao
e62e62292a Bump v1.4.0 2016-09-15 14:44:38 +09:00
Cheng Zhao
b84d29fb32 Merge pull request #7213 from electron/chrome-update
Update to Chrome 53.0.2785.113
2016-09-15 14:44:10 +09:00
Cheng Zhao
5be8104104 Update to Chrome 53.0.2785.113 2016-09-15 14:27:56 +09:00
Kevin Sawicki
eef42770c6 Don't load remote properties until they are accessed 2016-09-14 13:29:49 -07:00
Kevin Sawicki
f792c720f4 Allow spec to be run multiple times in same runner 2016-09-14 11:16:44 -07:00
Kevin Sawicki
359ab2f9b3 Only set members when members exist 2016-09-14 10:54:23 -07:00
Kevin Sawicki
bc13536208 Add failing spec for missing remote properties 2016-09-14 10:53:25 -07:00
Kevin Sawicki
0d4872755c Merge pull request #7195 from Joshua-Anderson/update-node-req
Update nodejs requirement for building on linux
2016-09-14 09:52:23 -07:00
Cheng Zhao
4627311c34 Merge pull request #7104 from electron/chrome53
Upgrade to Chrome 53 and Node 6.5.0
2016-09-14 22:18:08 +09:00
Cheng Zhao
dc2ced14b8 Node module version should be 50 2016-09-14 17:08:13 +09:00
deepak1556
eafb6307d5 fix crash when using geolocation api with enableHighAccuracy option 2016-09-14 16:23:01 +09:00
Cheng Zhao
fbac635687 Only emit finalUpdate found-in-page events
Since Chrome 53 all meaningful results of found-in-page are finalUpdate.
2016-09-14 16:23:01 +09:00
Cheng Zhao
5ccd0a24e9 Fix compatibility with canScroll 2016-09-14 16:23:01 +09:00
Cheng Zhao
f8bdc7437d module search paths have changed 2016-09-14 16:23:01 +09:00
Cheng Zhao
1de2b77ee4 Update to Node 6.5.0 2016-09-14 16:23:00 +09:00
Cheng Zhao
18fd3e0329 Fix js linting error 2016-09-14 16:23:00 +09:00
Cheng Zhao
a510642a25 finalUpdate can be false 2016-09-14 16:23:00 +09:00
Cheng Zhao
30dd65e3a9 Fix failing spec when refreshing test window 2016-09-14 16:23:00 +09:00
Cheng Zhao
5708e86a05 Fix API change of findInPage API 2016-09-14 16:23:00 +09:00
Cheng Zhao
937ae7ef8f Fix crash caused by new network parameters 2016-09-14 16:23:00 +09:00
Cheng Zhao
4c56c1c2b2 Fix crash in offscreen renderer 2016-09-14 16:22:59 +09:00
Cheng Zhao
6d8f900916 Fix building on Windows 2016-09-14 16:22:43 +09:00
Cheng Zhao
4aa292c7cd Fix building on Linux 2016-09-14 16:22:43 +09:00
Cheng Zhao
f28e8d7168 Fix API changes of Chrome 53 2016-09-14 16:22:43 +09:00
Cheng Zhao
2e0a1a8a64 Upgrade to Chrome 53 2016-09-14 16:22:41 +09:00
Cheng Zhao
cfe7bfd7eb Bump v1.3.6 2016-09-14 14:36:11 +09:00
Cheng Zhao
7086bb8973 Merge pull request #7189 from electron/both-arm-names
Upload ARM assets with and without v7l suffix
2016-09-14 14:31:10 +09:00
Cheng Zhao
23ae57fe79 Merge pull request #7188 from electron/app-is-ready-public
Mark app.isReady() as public
2016-09-14 14:30:46 +09:00
Joshua Anderson
56b40ae6d2 Update nodejs requirement for building on linux 2016-09-13 19:41:53 -07:00
Kevin Sawicki
34b9ba2edc Upload ARM assets without v7l suffix 2016-09-13 10:06:09 -07:00
Kevin Sawicki
4c4d585b84 initialization -> initializing 2016-09-13 09:37:03 -07:00
Kevin Sawicki
f373f2ae15 Mark app.isReady() as public 2016-09-13 09:35:39 -07:00
Cheng Zhao
b13bab6fae Merge pull request #7182 from electron/shell-return-values
Return booleans from more shell APIs
2016-09-13 16:46:05 +09:00
Cheng Zhao
4eba8094d4 Merge pull request #7096 from minggo/add-option-to-disable-devtools
add option to disable devtools
2016-09-13 16:01:56 +09:00
Cheng Zhao
df3f0a4516 Merge pull request #7175 from bsuh/fix-twitch-navigation
Fix navigation controller
2016-09-13 16:01:00 +09:00
Cheng Zhao
036a35ab64 Merge pull request #7160 from PierBover/patch-1
added clarification for common Windows pitfalls
2016-09-13 15:09:04 +09:00
Kevin Sawicki
07304e5950 Add missing return value 2016-09-12 14:33:22 -07:00
Kevin Sawicki
00d0887cab Document shell.moveItemToTrash return value 2016-09-12 14:30:01 -07:00
Kevin Sawicki
55eab8e385 Return boolean from shell.openItem 2016-09-12 14:29:06 -07:00
Kevin Sawicki
72558654ef Return boolean from shell.showItemInFolder 2016-09-12 14:22:29 -07:00
Zeke Sikelianos
9e8b0953f3 fix indentation 2016-09-12 10:47:36 -07:00
Kevin Sawicki
05043432dd Merge pull request #7162 from electron/network-entitlements
Document com.apple.security.network entitlements
2016-09-12 09:31:11 -07:00
Mario Aichinger
893fc2cd53 🐧 Add support for different trash implementations
Make the trash implemantation in MoveItemToTrash selectable via an environment variable
2016-09-12 10:41:23 +02:00
Cheng Zhao
9a56959647 Merge pull request #7140 from liusy182/url-fix
fix a bug in navigation-controller where string is used as object
2016-09-12 14:46:05 +09:00
Brian Suh
5fc1f57fb5 Fix navigation controller
In-page navigation has not actually started if the current entry is
being replaced. Do not set inPageIndex if replaceEntry is true.
2016-09-11 14:46:17 -07:00
gellert
2435f1b660 lint fix 2016-09-09 23:50:01 +02:00
gellert
afb551e94a updates tests 2016-09-09 23:40:10 +02:00
gellert
5754f3aea0 update docs 2016-09-09 23:26:14 +02:00
gellert
d3dc66e308 adds scale factor check and simplifies frame subscription 2016-09-09 23:17:17 +02:00
Kevin Sawicki
b128264ae4 Document com.apple.security.network entitlements 2016-09-09 13:55:32 -07:00
Pier Bover
70c1d194ef added clarification for common Windows pitfalls 2016-09-09 13:51:42 -05:00
Dave Townsend
313b2faa3c Add a guestinstance attribute to webviews reflecting their current guest
instance ID and allowing moving a guest instance to a new webview.
2016-09-09 10:32:05 -07:00
Zeke Sikelianos
18585204b7 wrap line to stay under 80 chars 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
3d40c720dd fix indentation and rename function 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
8d201ae1ad generate electron-api.json and upload with release 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
67c89b68d3 use new electron-docs-linter with node 4 support 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
5937d37fc5 move linting work to electron-docs-linter's new CLI 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
56a644d49f move electron.json to docs/api.json 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
0c54700b16 add electron.json (compiled to target 1.2.7 release) 2016-09-09 10:07:22 -07:00
Zeke Sikelianos
3a5bf51d1d add lint-docs script 2016-09-09 10:07:22 -07:00
Kevin Sawicki
01fa9827b4 Merge pull request #7153 from VarunAgw/patch-1
SSL issue in links
2016-09-09 08:05:38 -07:00
Phil Haack
cadbd7beb1 Merge pull request #7145 from electron/device-scale-factor-failures
Get specs passing on displays using certain device scale factors
2016-09-09 07:38:23 -07:00
Cheng Zhao
e189132176 Merge pull request #7123 from deepak1556/asar_range_patch
protocol: respect range header when reading from asar
2016-09-09 20:59:12 +09:00
Varun Agrawal
95206682a0 SSL issue in links 2016-09-09 17:27:27 +05:30
Cheng Zhao
7ed33dfbee Merge pull request #7077 from miniak/title-bar-style
Add support for titleBarStyle: 'hidden-inset' on OS X 10.9
2016-09-09 20:27:26 +09:00
Cheng Zhao
b6079ff90b Merge pull request #7053 from electron/launch-from-notification
Send notification info to app.ready, on macOS
2016-09-09 20:01:39 +09:00
Cheng Zhao
693ba1375b Merge pull request #7146 from electron/resolve-empty-url-values
Tweak how empty URLs are resolved
2016-09-09 19:58:41 +09:00
Cheng Zhao
932b6dc0cf Merge pull request #7142 from electron/require-buffer
Require Buffer explicitly instead of relying on global
2016-09-09 19:52:53 +09:00
Kevin Sawicki
64d436682c Verify resolving URL via console-message event 2016-09-08 17:38:40 -07:00
Kevin Sawicki
7c26fe46b8 === -> !== 2016-09-08 17:12:53 -07:00
Kevin Sawicki
daf1eec5ec Use === for string comparison 2016-09-08 17:11:10 -07:00
Kevin Sawicki
7d24df34fc Place resolve specs in correct outer block 2016-09-08 17:08:49 -07:00
Kevin Sawicki
bfd48fe2ad Add specs for resolving attribute URLs 2016-09-08 16:56:29 -07:00
Kevin Sawicki
1dbaf4987e Don't resolve empty src/preload attribute values 2016-09-08 16:48:30 -07:00
Kevin Sawicki
ea069805d1 Add failing specs for empty preload/src attribute 2016-09-08 16:40:31 -07:00
Kevin Sawicki
68c67b64c5 Use delta when scale factor is above 2 and odd 2016-09-08 16:24:11 -07:00
Charlie Hess
32e0e8a151 Use smart pointers in a couple places. 2016-09-08 16:23:55 -07:00
Kevin Sawicki
59a49f6f96 Use bounds helper in failing specs 2016-09-08 16:20:46 -07:00
Kevin Sawicki
7494e286d9 Put actual value first 2016-09-08 16:20:45 -07:00
Kevin Sawicki
d88f70caa2 Use single assert bounds helper 2016-09-08 16:20:45 -07:00
Kevin Sawicki
71fac07a93 Add scale factor assert helpers 2016-09-08 16:20:45 -07:00
Kevin Sawicki
de6f405d98 Merge pull request #7143 from electron/windows-spec-failures
Fix windows spec failures
2016-09-08 16:13:16 -07:00
Kevin Sawicki
9829baed46 Open about:blank when window.open is called with no URL 2016-09-08 16:10:21 -07:00
Kevin Sawicki
e4e4e8b2eb Add missing {} 2016-09-08 13:12:00 -07:00
Kevin Sawicki
4d20c4f3fd Update productName default in docs 2016-09-08 11:52:29 -07:00
Kevin Sawicki
d407eab0ff Set crashReporter productName in specs 2016-09-08 11:52:29 -07:00
Kevin Sawicki
63e9bc4804 Assert isTTY is undefined on Windows 2016-09-08 11:52:29 -07:00
Kevin Sawicki
638c96345d Merge pull request #7133 from electron/update-travis-node-versions
Upgrade Travis node version
2016-09-08 11:13:00 -07:00
Kevin Sawicki
74bb4bacd7 Add section about Buffer global 2016-09-08 10:42:43 -07:00
Kevin Sawicki
aaf2bb2751 Add spec for deleting Buffer global in preload 2016-09-08 10:34:09 -07:00
Kevin Sawicki
d476227e16 Remove unneeded return 2016-09-08 10:20:39 -07:00
Kevin Sawicki
902bd0564e Require Buffer explicitly instead of relying on global 2016-09-08 10:17:06 -07:00
Kevin Sawicki
24da3d181f Merge pull request #7129 from adamkidder/override_libchromium
Allow LIBCHROMIUMCONTENT_COMMIT to be overridden from the environment
2016-09-08 09:37:05 -07:00
Kevin Sawicki
e8fcdebf6d Update Travis config to build on node 4.5.0 2016-09-08 09:24:59 -07:00
Kevin Sawicki
803943bff8 Merge pull request #7128 from electron/api-breakage-list
Document what APIs will break in Electron 2.0
2016-09-08 09:21:26 -07:00
Kevin Sawicki
ae933140af Add variables to options example 2016-09-08 09:15:05 -07:00
Kevin Sawicki
d1876aa313 Add headings for each module 2016-09-08 09:09:49 -07:00
Kevin Sawicki
25f5135134 Move breaking changes doc to /docs 2016-09-08 09:07:58 -07:00
Kevin Sawicki
2aa64853f4 Add planned 2.0 API breakage 2016-09-08 09:05:49 -07:00
Kevin Sawicki
224d3aef3e Mark detach option for 2.0 removal 2016-09-08 09:05:49 -07:00
liusy182
2c7690be45 simplify logic 2016-09-08 21:36:39 +08:00
liusy182
180a77e671 fix a minor bug in navigation-controller where a string is used as an object 2016-09-08 21:31:42 +08:00
Cheng Zhao
2885e980a5 Merge pull request #7131 from electron/end-sheet-on-close
End sheet in parent when closing modal window
2016-09-08 15:53:07 +09:00
deepak1556
c003c3e28f increase spec timeout 2016-09-08 11:38:24 +05:30
Cheng Zhao
a0eccdfe1e Merge pull request #7130 from electron/windows-stdin-renderer
Add EOF process.stdin in  render process
2016-09-08 15:04:10 +09:00
deepak1556
bd291b9601 protocol: respect range header when reading from asar 2016-09-08 10:14:49 +05:30
deepak1556
1ae7b2fcbc update 2016-09-08 10:12:23 +05:30
deepak1556
7e6cba1482 add failing spec 2016-09-08 09:37:06 +05:30
Kevin Sawicki
45e8c40ae8 Merge pull request #7132 from electron/lint-python-via-npm-run-lint
Run pylint as part of main lint task
2016-09-07 16:49:21 -07:00
Kevin Sawicki
d6b1d61438 Run pylint as part of main lint task 2016-09-07 16:23:59 -07:00
Kevin Sawicki
8652888e27 End sheet in parent when closing modal window 2016-09-07 15:24:37 -07:00
Kevin Sawicki
d76c970da6 Assert read value instead of exception 2016-09-07 14:51:05 -07:00
Kevin Sawicki
28b33074cf Setup stdin in both processes on Windows 2016-09-07 14:45:56 -07:00
Kevin Sawicki
b5e9bb9e6a Add spec for accessing process.stdin 2016-09-07 14:40:18 -07:00
Adam Kidder
8ec49fe57c Allow LIBCHROMIUMCONTENT_COMMIT to be overridden from the environment 2016-09-07 12:06:06 -07:00
Kevin Sawicki
691aec701f Merge pull request #7119 from electron/arrange-project-translations
Arrange meta docs translations
2016-09-07 08:46:37 -07:00
Cheng Zhao
e561608c0d Merge pull request #7116 from electron/restore-no-asar
Restore process.noAsar in finally block
2016-09-07 16:50:26 +09:00
Cheng Zhao
ade60ed482 Merge pull request #7110 from electron/circular-menu-require
Prevent circular Menu require
2016-09-07 16:32:23 +09:00
minggo
3fdc99c3c6 change the option name to devTools 2016-09-07 10:16:52 +08:00
minggo
7d712b77ba remove duplicate comment 2016-09-07 09:43:06 +08:00
Kevin Sawicki
0686908461 Link to translations 2016-09-06 14:58:50 -07:00
Kevin Sawicki
22368d0f06 Move translated project docs to docs-translations folder 2016-09-06 14:54:17 -07:00
Kevin Sawicki
076d957ab9 Merge pull request #7068 from duncup/master
Create translate docs.
2016-09-06 14:47:18 -07:00
Kevin Sawicki
540b1960a8 Merge pull request #7113 from electron/const-default-app
Use const instead of var in default app
2016-09-06 13:42:36 -07:00
Kevin Sawicki
46fbb6ed61 Reset process.noAsar in finally block 2016-09-06 13:40:25 -07:00
Kevin Sawicki
b186d752da Add failing spec for restoring noAsar value 2016-09-06 13:40:15 -07:00
Kevin Sawicki
7bc45c328b Use const instead of var 2016-09-06 11:58:06 -07:00
Kevin Sawicki
b54b74c310 Prevent missing Menu.buildFromTemplate function 2016-09-06 11:31:14 -07:00
minggo
91fb85947d WebContents::InspectElement and WebContents::InspenctServiceWorker return immediately if DevTools is disabled 2016-09-06 17:53:42 +08:00
minggo
2db5aa8294 update browser-window.md to add disableDevTools option 2016-09-06 17:46:55 +08:00
minggo
baa55caf83 remove unneeded whitespace 2016-09-06 11:48:48 +08:00
minggo
19f6811312 initialize disable_devtools_ 2016-09-06 11:08:50 +08:00
minggo
1f1180f857 use webPreferences to disable devtools 2016-09-05 18:25:57 +08:00
minggo
0d7e7be748 add option to disable devtools 2016-09-05 16:27:56 +08:00
Charlie Hess
80f046c8df Update docs. 2016-09-03 12:03:58 -07:00
Milan Burda
9911e60f5b Add support for titleBarStyle: 'hidden-inset' on OS X 10.9 2016-09-03 01:33:20 +02:00
duncup
742a498f13 Create translate docs. 2016-09-02 14:25:56 +08:00
Cheng Zhao
02ce727ff6 Bump v1.3.5 2016-09-02 13:59:28 +09:00
Cheng Zhao
cdfcca147a Fix warning when compiling for win32 ia32 build 2016-09-02 13:59:28 +09:00
Cheng Zhao
8471f647a1 Fix arm's zip name 2016-09-02 13:57:56 +09:00
Kevin Sawicki
0c2da5dcea Merge pull request #7059 from malept/docs-typos
Fix documentation typos
2016-09-01 17:37:28 -07:00
Mark Lee
38e1a24304 📝 Make arch references more consistent
[ci skip]
2016-09-01 07:53:32 -07:00
Mark Lee
00154c7f9c 📝 Add missing words
[ci skip]
2016-09-01 07:49:36 -07:00
Cheng Zhao
249777721c Fix symbols zip's name 2016-09-01 19:18:19 +09:00
Cheng Zhao
31e947a9f7 Update brightray submodule 2016-09-01 19:12:44 +09:00
Cheng Zhao
308f3bb77b Update libchromiumcontent for #5665 2016-09-01 16:38:52 +09:00
Cheng Zhao
14f625d61b Merge pull request #6826 from enlight/set-jump-list
Extend the custom Jump List API provided by Electron
2016-09-01 15:35:21 +09:00
deepak1556
7b85ca0301 create helper class to read blob data 2016-09-01 08:52:44 +05:30
Vadim Macagon
c64294cf60 Extend the custom Jump List API
Add `app.getJumpListSettings()` and `app.setJumpList(callback)` that
make it possible to fully customize the Jump List of an Electron app.
It is now possible to:
- Add tasks to the standard `Tasks` category.
- Add separators to the standard `Tasks` category.
- Add custom categories containing tasks and file links.
- Add system managed Recent/Frequent categories.
- Remove the custom Jump List.
2016-09-01 09:56:14 +07:00
Charlie Hess
f0517812b1 Linter fascism. 2016-08-31 18:12:35 -07:00
Charlie Hess
cd25066c9f Fix oops on Windows / Linux. 2016-08-31 17:26:25 -07:00
Charlie Hess
af9e010162 Send notification userInfo to app.ready, on macOS.
Check if the user launched the app from a notification and send the notification args across if so.
2016-08-31 17:17:44 -07:00
deepak1556
5cbc8d5c71 fix ambiguous constructor call 2016-09-01 01:01:52 +05:30
deepak1556
be4bc6b7ef fix docs and update specs 2016-09-01 01:01:52 +05:30
deepak1556
d2e40d4fc1 update api to work on public url and uuid 2016-09-01 01:01:52 +05:30
deepak1556
a23e7ecf8f add docs 2016-09-01 01:01:52 +05:30
deepak1556
0fb2339e3d session: api to retrieve blob data from uuid 2016-09-01 01:01:52 +05:30
deepak1556
2b0f632d51 provide blob uuid from upload data 2016-09-01 01:01:52 +05:30
Cheng Zhao
a37544cef4 Merge pull request #7041 from Ikana/document-webcontents-fromId
documents webContents.fromId
2016-08-31 21:01:49 +09:00
Cheng Zhao
4833c4800e Merge pull request #6998 from electron/ipc-v8-converter-crash
Don't serialize external values over IPC
2016-08-31 20:45:25 +09:00
Cheng Zhao
5c051c9941 Merge pull request #6986 from electron/arm-release-asset-name
Add v7l to ARM release assets
2016-08-31 20:35:59 +09:00
Cheng Zhao
f854b27bfb Merge pull request #6867 from electron/remote-function-properties
Allow accessing remote function properties
2016-08-31 17:28:09 +09:00
roderik
1ff58a6066 documents webContents.fromId 2016-08-30 22:25:04 -05:00
Kevin Sawicki
3e7a0e4b43 Test external value as send argument 2016-08-30 09:27:12 -07:00
Kevin Sawicki
8a9776b227 Move IsExternal check to FromV8ValueImpl 2016-08-30 08:51:22 -07:00
Cheng Zhao
e2d70fb92b Merge pull request #7028 from electron/default-exit-code
Default app exit code to 0
2016-08-30 19:36:03 +09:00
Cheng Zhao
f30ebc6839 Merge pull request #7026 from Menci/master
Add guide for force new page in print / printToPDF
2016-08-30 19:31:31 +09:00
Cheng Zhao
572f58bc34 Merge pull request #7018 from HanaeKae/jpfont-in-flash
Japanese font rendering in flash.
2016-08-30 17:52:05 +09:00
Cheng Zhao
46b2579441 Merge pull request #7029 from electron/revert-7003-exit-tab-fullscreen
Revert "exit tab fullscreen on destroy"
2016-08-30 17:09:37 +09:00
Cheng Zhao
ee1571e556 Revert "exit tab fullscreen on destroy" 2016-08-30 17:08:51 +09:00
Samuel Attard
adf9acc468 Default app exit code to 0 2016-08-30 13:30:56 +10:00
Menci
ec60c149f5 Add guide for force new page in print / printToPDF 2016-08-30 08:45:39 +08:00
Kevin Sawicki
679ee95e8a Explicitly mention external objects 2016-08-29 10:38:17 -07:00
Kevin Sawicki
625bfe53f7 🎨 2016-08-29 10:38:17 -07:00
Kevin Sawicki
558ee08be9 Add explicit test for IPC cycle detection 2016-08-29 10:38:16 -07:00
Kevin Sawicki
434e7cb5e9 Add test for sending webContents instance over IPC 2016-08-29 10:38:16 -07:00
Kevin Sawicki
0f7e43aa47 Re-enable DOM object over IPC asserts 2016-08-29 10:38:16 -07:00
Kevin Sawicki
58fc1b7933 Ignore external values when serializing 2016-08-29 10:38:16 -07:00
Kevin Sawicki
b17a2874f8 Add empty request error handler 2016-08-29 10:38:16 -07:00
Kevin Sawicki
e38bc17a7b Add regression spec for HTTP request over IPC 2016-08-29 10:38:16 -07:00
Kevin Sawicki
3f4af3a2ba Convert specs to expect empty objects 2016-08-29 10:38:16 -07:00
Kevin Sawicki
4579ec6094 Don't convert values with internal fields 2016-08-29 10:38:16 -07:00
Cheng Zhao
b5dec9990e Merge pull request #7003 from brave/exit-tab-fullscreen
exit tab fullscreen on destroy
2016-08-29 16:36:44 +09:00
Hanae Kae
6ea5e50179 Japanese font rendering in flash. 2016-08-29 16:02:09 +09:00
Cheng Zhao
4e800e7fef Merge pull request #7002 from electron/include-alpha
Enable alphabetical include order cpplint rule
2016-08-29 15:19:05 +09:00
Cheng Zhao
ac9e64cfd4 Merge pull request #7001 from electron/debug-wait-connect
Port --debug-brk support to Node 6.3.0
2016-08-29 15:15:14 +09:00
Kevin Sawicki
9965423c4d Merge pull request #7006 from electron/fix-optional-param-spacing
fix optional param spacing
2016-08-27 12:18:45 -07:00
Zeke Sikelianos
7ff5649965 fix optional param spacing 2016-08-26 23:47:04 -07:00
Kevin Sawicki
3dd5628ded Include windows.h first 2016-08-26 16:00:05 -07:00
bridiver
4532114965 exit tab fullscreen on destroy 2016-08-26 15:52:15 -07:00
Kevin Sawicki
6285500cdc Sort includes alphabetically 2016-08-26 15:30:02 -07:00
Kevin Sawicki
56c17ae516 Enable alphabetical include order lint filter 2016-08-26 15:29:53 -07:00
Kevin Sawicki
307b504eb4 Merge pull request #6925 from BraveNewMath/patch-1
fix windows command prompt error
2016-08-26 14:17:55 -07:00
Kevin Sawicki
8d194691fe Add separate platform examples for running electron 2016-08-26 14:16:30 -07:00
Kevin Sawicki
7dd1a7e6f4 Only set _debugWaitConnect in main process 2016-08-26 12:30:27 -07:00
Kevin Sawicki
a2f0111205 Remove v8debug flag no longer supported by node 2016-08-26 12:08:18 -07:00
Kevin Sawicki
056e5b951b Set process._debugWaitConnect with --debug-brk is specified 2016-08-26 12:06:15 -07:00
Cheng Zhao
723c74ace6 Merge pull request #6989 from Menci/master
[doc] Add support for titleBarStyle hidden on macOS 10.9
2016-08-26 20:57:26 +09:00
Cheng Zhao
c5ece2bfb1 Merge pull request #6984 from electron/zoom-webview
Document <webview>.setZoomFactor/Level as public
2016-08-26 20:56:47 +09:00
Cheng Zhao
cd469b5f31 Merge pull request #6983 from electron/download-item-prompt
Check DownloadItem save path before prompting
2016-08-26 20:41:03 +09:00
Cheng Zhao
d35613b5ad Merge pull request #6977 from electron/ipc-cycle-detection
Improve cycle detection in IPC arguments
2016-08-26 20:26:00 +09:00
Menci
a9eb6b7238 Add support for titleBarStyle hidden on macOS 10.9
"titleBarStyle: 'hidden'" supports macOS 10.9 now. See https://github.com/electron/electron/pull/6848 and ab8fd49c72 for more info.
2016-08-26 12:06:56 +08:00
Kevin Sawicki
fd38cfd88c Remove unused imports 2016-08-25 17:57:14 -07:00
Kevin Sawicki
d0b95e9298 Add v7l suffix to ARM build assets 2016-08-25 17:51:37 -07:00
Kevin Sawicki
87e60466d3 Add helper for generating zip file names 2016-08-25 17:50:12 -07:00
Zeke Sikelianos
34e0f8c644 Merge pull request #6985 from electron/more-parameter-fixes
More parameter fixes
2016-08-25 17:28:36 -07:00
Zeke Sikelianos
e91dc83b2c capitalize 2016-08-25 17:26:57 -07:00
Zeke Sikelianos
0ba9564629 use the right bullet 2016-08-25 17:26:52 -07:00
Zeke Sikelianos
ab1238d8fd add a description for BrowserWindowProxy 2016-08-25 15:20:05 -07:00
Kevin Sawicki
bdaea02d8a Document <webview>.setZoomFactor/Level as public 2016-08-25 14:55:01 -07:00
Zeke Sikelianos
5619558689 document some missing parameters 2016-08-25 14:43:06 -07:00
Zeke Sikelianos
0e4e60625f fix method heading level 2016-08-25 14:42:53 -07:00
Kevin Sawicki
3108b8aacd Use path to non-existent file 2016-08-25 14:40:15 -07:00
Kevin Sawicki
cf93e3e713 Check download item save path before prompting 2016-08-25 14:34:48 -07:00
Kevin Sawicki
1de8a0dcf9 Add failing spec for unwanted save dialog 2016-08-25 14:27:37 -07:00
Kevin Sawicki
e14e92147d Merge pull request #6981 from electron/typo-in-method-name
Correct misspelling of destroy in method name
2016-08-25 13:45:42 -07:00
Kevin Sawicki
7a0129bbc7 Correct misspelling of destroy in method name 2016-08-25 12:28:57 -07:00
Zeke Sikelianos
9548184b15 Merge pull request #6980 from electron/method-params-take-2
Document all Method Parameters
2016-08-25 11:25:01 -07:00
Zeke Sikelianos
28d42ba35b document missing method parameters 2016-08-25 10:52:19 -07:00
Kevin Sawicki
50e2e26e4f Improve cycle detection in V8ValueConverter 2016-08-25 09:26:07 -07:00
Kevin Sawicki
10d39f673a Add failing spec for duplicate references over IPC 2016-08-25 09:25:13 -07:00
Cheng Zhao
97a004a357 Merge pull request #6963 from electron/remote-buffers
Serialize ArrayBuffers as Buffers instead of Arrays over remote
2016-08-25 17:29:12 +09:00
Cheng Zhao
764c84f569 Merge pull request #6952 from deepak1556/custom_scheme_filesystem_patch
protocol: allow standard schemes to support filesystem api
2016-08-25 09:28:34 +09:00
Cheng Zhao
6e75e8e2bf Merge pull request #6961 from electron/fullscreen-linux
Only change window state when fullscreen is true
2016-08-25 09:23:02 +09:00
Kevin Sawicki
b688539fe9 🎨 Use const 2016-08-24 17:00:03 -07:00
Kevin Sawicki
e1cf61f0cb Add spec for Int16Array remote parameter 2016-08-24 16:47:14 -07:00
Kevin Sawicki
a1a7b1779c Add missing space after comma 2016-08-24 16:41:59 -07:00
Kevin Sawicki
01e69353d5 Don't serialize ArrayBuffer as Array 2016-08-24 15:18:42 -07:00
Kevin Sawicki
363a02b82d Add more remote Buffer specs 2016-08-24 15:01:52 -07:00
Kevin Sawicki
554e944105 Add test of sending Buffer 2016-08-24 14:49:25 -07:00
Zeke Sikelianos
a97b40eff5 Install node 4 on GitHub CI (#6948) 2016-08-24 14:37:19 -07:00
Kevin Sawicki
459c80da4e Only change window state when fullscreen is true 2016-08-24 14:30:29 -07:00
Kevin Sawicki
4ce2c221c9 Minor doc edits and link to MDN page 2016-08-24 09:03:44 -07:00
deepak1556
62cb8428fb use schemes from global instead of commandline 2016-08-24 20:22:35 +05:30
Cheng Zhao
7bdce52290 Merge pull request #6944 from electron/check-window-from-native-view
Access native window through native view
2016-08-24 16:25:27 +09:00
Cheng Zhao
dc73a5afea Merge pull request #6896 from malept/fix-checksum-format
The checksum file needs to indicate that the files should be opened in binary mode
2016-08-24 16:15:22 +09:00
deepak1556
ae297760af add spec and docs 2016-08-24 06:53:14 +05:30
deepak1556
ad0c86db7a register custom schemes to access files through filesystem api 2016-08-24 05:46:54 +05:30
Kevin Sawicki
21de91d6e2 Don't open dev tools if already initialized 2016-08-23 15:26:13 -07:00
Kevin Sawicki
1276587ebe Merge pull request #6934 from electron/add-missing-class-descriptions
Give every class a description
2016-08-23 10:16:29 -07:00
Kevin Sawicki
463b3de199 Use correct GetToplevelWindow signature 2016-08-23 10:12:55 -07:00
Kevin Sawicki
399470e281 Add spec for detached window crash 2016-08-23 10:06:05 -07:00
Kevin Sawicki
dd5ee28b2f Access window through native view 2016-08-23 09:51:54 -07:00
Jessica Lord
bb7599cddd Merge pull request #6938 from electron/add-accessibility-doc
Add accessibility doc
2016-08-23 09:30:02 -07:00
Cheng Zhao
88979a9844 Bump v1.3.4 2016-08-23 17:03:07 +09:00
Cheng Zhao
4ca6587660 Merge pull request #6935 from electron/default-network-conditions
Default network conditions to 0.0
2016-08-23 16:40:36 +09:00
Zeke Sikelianos
098d4dc0ca improve wording about class instantiation 2016-08-22 21:45:25 -07:00
Kevin Sawicki
ec44a5d198 Add tests for setting remote function properties 2016-08-22 17:07:18 -07:00
Kevin Sawicki
666a668d91 Support remote function keys and property descriptors 2016-08-22 17:07:18 -07:00
Kevin Sawicki
d226b7bc6c Use Proxy for accessing properties of remote function 2016-08-22 17:07:18 -07:00
Kevin Sawicki
8b38018ab4 Add helper for including function properties 2016-08-22 17:07:17 -07:00
Kevin Sawicki
3245bb99b2 Only register methods with members 2016-08-22 17:07:17 -07:00
Kevin Sawicki
600076b46d Remove lint from fixtures 2016-08-22 17:07:17 -07:00
Kevin Sawicki
d333cc5e38 Support remote function properties 2016-08-22 17:07:17 -07:00
Kevin Sawicki
9e4665fbc4 Add failing spec for remote static members 2016-08-22 17:07:17 -07:00
Kevin Sawicki
5cc61089d9 Add failing spec for remote function with properties 2016-08-22 17:07:17 -07:00
Jessica Lord
d2ad88978a Add accessibility doc 2016-08-22 16:27:33 -07:00
Kevin Sawicki
0485e9eb36 🎨 Go back to single line declaration 2016-08-22 16:26:31 -07:00
Kevin Sawicki
0955c2fd4d Merge pull request #6936 from electron/add-missing-require
add missing require to win.loadURL doc
2016-08-22 15:49:48 -07:00
Zeke Sikelianos
84fc1d022f add missing require to win.loadURL doc 2016-08-22 14:25:48 -07:00
Kevin Sawicki
4fc6cf48b0 Document enableNetworkEmulation defaults 2016-08-22 14:25:42 -07:00
Kevin Sawicki
ad3dc3766e Default network values to 0.0 2016-08-22 14:19:09 -07:00
Zeke Sikelianos
3d371e09b7 add a blockquote for every class 2016-08-22 14:11:03 -07:00
Kevin Sawicki
e84d0ebb7e Merge pull request #6932 from electron/fix-power-save-blocker-doc-bug
Fix some invalid docs
2016-08-22 12:30:00 -07:00
Zeke Sikelianos
8c0a551d25 fix linting errors in docs 2016-08-22 11:47:55 -07:00
Zeke Sikelianos
ee44ab7ecd wrap MenuItem constructor in backticks 2016-08-22 11:29:15 -07:00
Zeke Sikelianos
39c5ff2077 missing space in doc 2016-08-22 11:17:05 -07:00
Cheng Zhao
d6a63855c4 Merge pull request #6926 from electron/fix-fetch
Use scoped policy for micro tasks
2016-08-22 20:08:08 +09:00
Cheng Zhao
103fea5cdf Use scoped policy for micro tasks 2016-08-22 19:34:59 +09:00
Cheng Zhao
9bc6302aea spec: Add test case for fetch 2016-08-22 19:26:07 +09:00
Cheng Zhao
374e23fc37 Merge pull request #6922 from TomKaltz/patch-1
Update devtools-extension.md
2016-08-22 16:52:18 +09:00
Elias
1fe3b70a23 fix windows command prompt error
path to electron needs to be wrapped in quotes or else windows command prompt will error out
2016-08-22 00:29:33 -07:00
Cheng Zhao
c1989fb794 Merge pull request #6913 from markwylde/bugfix-spelling-fix
Fix spelling mistake from registred to registered
2016-08-22 11:19:09 +09:00
Cheng Zhao
be9fa3c9d3 Merge pull request #6923 from electron/fix-path-compatibility
Do not add extra space when args is empty
2016-08-22 11:00:07 +09:00
Cheng Zhao
23ca9fcd02 Merge pull request #6900 from electron/loadurl-example
Improve doc for loadURL
2016-08-22 10:46:03 +09:00
Cheng Zhao
31b82731ac Cleanup the usages of std::wstring 2016-08-22 09:57:52 +09:00
Cheng Zhao
77dfd3a76c Do not add extra space when args is empty 2016-08-22 09:50:58 +09:00
Cheng Zhao
8b9fd8a76e Merge pull request #6858 from electron/default-protocol-launch-args
Allow settings of launch args when using defaultProtocol
2016-08-22 09:32:54 +09:00
Thomas Kaltz III
77dc700c51 Update devtools-extension.md
Cerebral Debugger is now supported under Electron
2016-08-21 17:36:26 -04:00
Mark Wylde
c55b1e87ed Fix spelling mistake from registred to registered 2016-08-20 14:25:13 +01:00
Zeke Sikelianos
1985432e8e recommend url.format for file URLs 2016-08-19 13:31:57 -07:00
Zeke Sikelianos
d9901e62b6 improve doc for loadURL 2016-08-18 22:20:55 -07:00
Will Eccles
488fe53276 fixed grammar for 32bit 2016-08-18 08:56:12 -07:00
Mark Lee
aaf9c5327c The checksum file needs to indicate that the files should be opened in binary mode 2016-08-18 08:35:54 -07:00
Samuel Attard
ab7899d0fb Fix linting issues 2016-08-18 20:42:06 +10:00
Samuel Attard
73246112d2 Use base::string16 and base::JoinString instead of custom methods 2016-08-18 20:35:57 +10:00
Samuel Attard
ca971e978e Return boolean instead of empty string when error occurs. Update docs 2016-08-18 18:02:13 +10:00
Cheng Zhao
293ba4230d Merge pull request #6888 from electron/show-spec-runner-initially
Show spec window initially when not on CI
2016-08-18 15:27:09 +09:00
Cheng Zhao
b9b6fc238e docs: Correctly fomart titleBarStyle line 2016-08-18 14:42:10 +09:00
Cheng Zhao
105597c7e8 Merge pull request #6848 from miniak/titlebar-style-hidden
Add support for titleBarStyle: 'hidden' on OS X 10.9
2016-08-18 14:40:54 +09:00
Cheng Zhao
06d2dfe119 Merge pull request #6788 from electron/felix-progress-enum
Use enum to declare ProgressState
2016-08-18 14:35:00 +09:00
Cheng Zhao
56d17a1449 Merge pull request #6829 from electron/fix-thumbar-buttons-vanishing
Save the thumbar buttons when setting them to restore later
2016-08-18 14:34:26 +09:00
Cheng Zhao
9b00e3f432 Merge pull request #6882 from duncup/patch-1
Fix typos
2016-08-18 11:51:43 +09:00
Kevin Sawicki
dfb6a9b07d Show window when not on CI 2016-08-17 14:25:42 -07:00
Kevin Sawicki
6813c03f30 Merge pull request #6853 from electron/about-documentation
Add About Electron documentation
2016-08-17 08:53:33 -07:00
Kevin Sawicki
b8971ae185 Merge pull request #6871 from electron/update-docs-for-electron-npm
Update docs re: electron module update
2016-08-17 08:52:42 -07:00
Kevin Sawicki
09adffe48f Merge pull request #6870 from electron/more-permissive-standard-markdown
Use a more permissive version of standard-markdown
2016-08-17 08:52:06 -07:00
Kevin Sawicki
bc3d2cfc34 Merge pull request #6875 from electron/remove-styleguide-rule-about-endlines
source files DO have newlines at the end
2016-08-17 08:51:20 -07:00
wolf
e9b5833ed4 Fix typos
Fix typos,`当前也` change to `当前页`
修正错别字,`当前也`改为`当前页`
2016-08-17 22:16:28 +08:00
Cheng Zhao
0b7b6b38c0 Merge pull request #6872 from electron/only-show-extension-button-on-save-dialog
Only call setCanSelectHiddenExtension on save dialogs
2016-08-17 22:35:15 +09:00
Cheng Zhao
faebe5259d Merge pull request #6861 from megahertz/bug_window_location
Apply resolveURL when set a location of a window opened by window.open()
2016-08-17 22:04:46 +09:00
Cheng Zhao
fc57201406 Merge pull request #6857 from brave/object-registry
clear the storage for the webContentsId when the render view is deleted
2016-08-17 21:47:39 +09:00
Cheng Zhao
79f35fa475 Merge pull request #6850 from electron/disable-resize-when-changing-style-mask
Disable all resizes when changing the window's style mask
2016-08-17 21:19:35 +09:00
Cheng Zhao
2e8d7cd6db Merge pull request #6881 from electron/data-string
Certificate data is now a string
2016-08-17 21:13:31 +09:00
Cheng Zhao
8f9a0100e3 Certificate data is now a string 2016-08-17 20:48:09 +09:00
Cheng Zhao
47c37d6f51 Merge pull request #6814 from brave/net-converter-fix
don't convert a string to an array buffer
2016-08-17 20:44:13 +09:00
Cheng Zhao
bd03ae53f2 Merge pull request #6832 from hammerandchisel/bug/remote_object_freer_crash
fix intermittent crash in RemoteObjectFreer
2016-08-17 20:31:06 +09:00
Cheng Zhao
4e355355a9 Merge pull request #6851 from electron/focused-web-contents-from-hidden-windows
Prevent web contents in hidden windows from reporting as focused
2016-08-17 20:15:37 +09:00
Zeke Sikelianos
515e25b749 source files DO have newlines at the end 2016-08-16 21:24:53 -07:00
Kevin Sawicki
4fc4f0ae53 Only call setCanSelectHiddenExtension for save dialogs 2016-08-16 17:22:44 -07:00
Kevin Sawicki
925fb27b1e Merge pull request #6874 from electron/tweak-flaky-web-contents-spec
Tweak flaky web contents spec
2016-08-16 16:42:01 -07:00
Kevin Sawicki
6cca62788d Assert first and last web contents types 2016-08-16 16:19:32 -07:00
Jessica Lord
3ebd5fbd8f Update docs re: electron module update 2016-08-16 15:57:07 -07:00
Zeke Sikelianos
cc2b95fac3 js → javascript 2016-08-16 14:50:21 -07:00
Zeke Sikelianos
e71280f31c restore js label to orphan code blocks 2016-08-16 14:49:42 -07:00
Zeke Sikelianos
8527bc360a bump standard-markdown for orphan array support 2016-08-16 14:48:35 -07:00
Zeke Sikelianos
6b298213ab update standard-markdown to 1.2.0 2016-08-16 14:07:50 -07:00
Jessica Lord
8d9aaf1d5e Fix date 2016-08-16 11:34:20 -07:00
Kevin Sawicki
959613bb04 Merge pull request #6865 from electron/test-for-request-headers-without-path-expansion
Add test for header with . characters
2016-08-16 10:05:48 -07:00
Kevin Sawicki
1f46574efe Add test for header with . characters 2016-08-16 09:08:36 -07:00
Kevin Sawicki
c93a8fb4ea Merge pull request #6856 from brave/nested-header-fix
don't convert header names to nested values
2016-08-16 08:54:26 -07:00
Alexey Prokhorov
16f2702495 Apply resolveURL when set a location of a window opened by window.open() 2016-08-16 16:24:49 +05:00
Samuel Attard
88bf089504 Pass args through correctly 2016-08-16 17:40:44 +10:00
Samuel Attard
14154e374a Fix cpp linting issues 2016-08-16 15:54:30 +10:00
Samuel Attard
ce986590cf Clarify defaults 2016-08-16 15:39:36 +10:00
Samuel Attard
db27da5db0 Document the optional params 2016-08-16 15:38:35 +10:00
Samuel Attard
e5daf63b0e Allow client to specify EXE file and args to set as default handler
* Optional path param to setAsDefaultProtocolClient
* Optional args param to setAsDefaultProtocolClient
2016-08-16 15:35:33 +10:00
bridiver
3b11bf5e41 clear the storage for the webContentsId when the render view is deleted 2016-08-15 21:53:58 -07:00
bridiver
ca4cbe34a0 don't convert header names to nested values
fixes #6855
2016-08-15 17:21:14 -07:00
Jessica Lord
fd9a032839 Add About Electron documentation 2016-08-15 16:26:30 -07:00
Kevin Sawicki
0755349e70 Ensure hidden windows don't have focused webContents 2016-08-15 14:13:24 -07:00
Kevin Sawicki
cc7fe82b74 Add failing webContents.isFocused spec 2016-08-15 14:11:08 -07:00
Kevin Sawicki
86e5bd3552 Disable resize during any stylemask change 2016-08-15 13:18:22 -07:00
Milan Burda
ab8fd49c72 Add support for titleBarStyle: 'hidden' on OS X 10.9 (hidden-inset falls back to hidden) 2016-08-15 22:10:38 +02:00
Kevin Sawicki
c754b5efdc Add failing spec for state changes resizing frameless window 2016-08-15 12:30:26 -07:00
Kevin Sawicki
420f756c47 Merge pull request #6846 from ysagal/patch-1
Added `title` to `page-title-updated` return args
2016-08-15 10:11:16 -07:00
Stan
c9f80dfc7b Added title to page-title-updated return args 2016-08-15 13:06:29 -04:00
Kevin Sawicki
2a67b05fcf Merge pull request #6838 from Gerhut/master
📝 Rename `electron-prebuilt` to `electron` when install [ci skip]
2016-08-15 08:53:45 -07:00
程启翔
91ed01df26 📝 Rename electron-prebuilt to electron when install [ci skip]
ref electron-userland/electron-prebuilt#160
2016-08-14 12:42:26 +08:00
bridiver
94c60379d1 don't convert a string to an array buffer 2016-08-13 13:35:23 -07:00
Andy Dill
704561b255 use MSG_ROUTING_NONE to initialize routing_id_ rather than 0 2016-08-12 13:03:31 -07:00
Haojian Wu
6a9801b82c Remove an extra space in front of #. 2016-08-12 22:01:30 +02:00
Andy Dill
a3bd54a41a 👕 fix lint line length error in remote_object_freer 2016-08-12 09:38:49 -07:00
Andy Dill
067aa3dbef cache routing_id so we can look up the render_view in RunDestructor with no v8 calls 2016-08-12 09:16:10 -07:00
Samuel Attard
2fa7aa3c71 Save the thumbar buttons when setting them
Then restore the buttons when restoring the taskbar icon
2016-08-13 01:55:42 +10:00
Cheng Zhao
05518ccd52 Merge pull request #6817 from deepak1556/context_menu_image_patch
webContents: fix value of contextMenu hasImageContents property
2016-08-12 17:51:40 +09:00
Cheng Zhao
d84098c4c1 Merge pull request #6816 from deepak1556/webframe_scheme_patch
webFrame: enable privileged schemes to send CORS requests
2016-08-12 17:48:50 +09:00
Cheng Zhao
620847d2fd Merge pull request #6755 from electron/upgrade-clang
Upgrade clang
2016-08-12 17:38:03 +09:00
Cheng Zhao
c41183302b Update brightray for #6755 2016-08-12 17:37:38 +09:00
Cheng Zhao
f30fe5643a Merge pull request #6812 from electron/bootstrap-defines
Support build variable setting during bootstrap
2016-08-12 17:11:22 +09:00
Cheng Zhao
6a7c6cae3a Merge pull request #6810 from electron/iframe-ismainpage-event
Send isMainFrame as argument to did-navigate-in-page event
2016-08-12 17:10:47 +09:00
deepak1556
ee298ea0e3 webContents: fix value of contextMenu hasImageContents property 2016-08-12 00:55:20 +05:30
Haojian Wu
fc36048d78 Move project-specific flags to common.gypi. 2016-08-11 21:08:12 +02:00
Haojian Wu
42a5b1f5bc Don't show -Wvarargs warning in libuv. 2016-08-11 20:59:06 +02:00
Haojian Wu
2e5eeef70e Pass compilation on mac. 2016-08-11 20:59:06 +02:00
Haojian Wu
cd169f933e Upgrade clang to r269902. 2016-08-11 20:59:06 +02:00
deepak1556
77173be1c6 webFrame: enable privileged schemes to send CORS requests 2016-08-11 23:01:10 +05:30
Kevin Sawicki
d07e40b415 Support build variable setting during bootstrap 2016-08-11 09:50:40 -07:00
Samuel Attard
0b624315b2 Fix attribute typo in docs 2016-08-12 01:49:56 +10:00
Samuel Attard
5b07e8dd5b Send isMainFrame as argument to did-navigate-in-page event 2016-08-12 01:27:50 +10:00
Cheng Zhao
58b391cb77 Merge pull request #6801 from electron/libchromiumcontent-packages
Add gperf and bison to package install commands
2016-08-11 17:23:33 +09:00
Cheng Zhao
b285b22b07 Update native_mate 2016-08-11 17:23:03 +09:00
Cheng Zhao
919571a5fc Merge pull request #6804 from electron/clean-libchromiumcontent-src
Clean libchromiumcontent/src
2016-08-11 17:20:44 +09:00
Cheng Zhao
e491b7932f Merge pull request #6789 from electron/felix-ignore-vscode
Gitignore Visual Studio Files
2016-08-11 17:16:41 +09:00
Kevin Sawicki
bc28f8d3cc Add clean npm run script 2016-08-10 17:36:58 -07:00
Kevin Sawicki
321e953a1d Clean libchromiumcontent/src 2016-08-10 17:36:57 -07:00
Kevin Sawicki
252aca8834 Add gperf and bison to package install commands 2016-08-10 17:34:58 -07:00
Kevin Sawicki
e290d51412 Merge pull request #6796 from electron/disable-global-shortcut-spec-on-windows-ci
Disable globalShortcut spec on Windows CI
2016-08-10 09:57:51 -07:00
Felix Rieseberg
8b85ee8a20 🔧 Use enum to declare ProgressState
As recommended in #6768, this commit adds an enum for progress states for windows.
2016-08-10 08:56:26 -07:00
Felix Rieseberg
96632370b2 Gitignore Visual Studio Files
Adds Visual Studio and Visual Studio Code configuration files (auto-generated) to .gitignore.
2016-08-10 08:54:50 -07:00
Kevin Sawicki
b017d2d324 Disable globalShortcut spec on Windows CI 2016-08-10 08:52:50 -07:00
Cheng Zhao
912c7716b3 Bump v1.3.3 2016-08-10 16:00:24 +09:00
Cheng Zhao
d9b872b073 Merge pull request #6787 from electron/api-specs
Add initial specs for untested modules
2016-08-10 15:55:23 +09:00
Kevin Sawicki
2a0eb72334 Add asserts for crash report APIs 2016-08-09 15:44:04 -07:00
Kevin Sawicki
ce0165367c Add spec for invalid capture options 2016-08-09 15:31:24 -07:00
Kevin Sawicki
a6353eb98f Add initial global shortcut spec 2016-08-09 15:13:05 -07:00
Kevin Sawicki
39e1541a7e Add initial power save blocker spec 2016-08-09 15:05:56 -07:00
Kevin Sawicki
ab0d726594 Merge pull request #6782 from electron/dip-thumbnail-clip
Convert DIP to screen rect for thumbnail clip
2016-08-09 09:16:10 -07:00
Kevin Sawicki
2802d2f3f9 Use gfx::Rect::ToRECT 2016-08-09 08:50:06 -07:00
Kevin Sawicki
5f2a13d01b Convert dip to screen rect for thumbnail clip 2016-08-09 08:40:38 -07:00
Cheng Zhao
6cd99ebf6b Merge pull request #6752 from lgalabru/feature/macos-native-notifications
Send events as native macOS notifications
2016-08-09 21:34:52 +09:00
Cheng Zhao
dd79c71302 Style fixes for SetProgressBar 2016-08-09 21:02:14 +09:00
Cheng Zhao
81244c2221 Merge pull request #6768 from electron/felix-set-progress
Enable mode indication for setProgressBar
2016-08-09 20:58:07 +09:00
Cheng Zhao
01f92a83ab Merge pull request #6780 from electron/update-available-check
Mark update available until restart
2016-08-09 20:44:26 +09:00
Cheng Zhao
25f29e30f5 Merge pull request #6776 from electron/remove-has-real-name-callback-property-check
Remove HasRealNamedCallbackProperty check when converting objects
2016-08-09 20:26:26 +09:00
Cheng Zhao
4a9bb87f31 Merge pull request #6777 from electron/zoom-roles
Add zoom menu item roles
2016-08-09 20:24:06 +09:00
Ludovic Galabru
a5351407c5 Fixing indentation 2016-08-09 05:57:02 -04:00
Felix Rieseberg
73c91dae9e 🔧 Enable mode indication for setProgressBar
This commit enables setting a mode for the setProgressBar method.
Old behavior is kept intact, usage is entirely optional.
2016-08-08 15:52:20 -07:00
Kevin Sawicki
0747957919 Add spec for quitAndInstall with no update on Windows 2016-08-08 13:13:08 -07:00
Kevin Sawicki
dd6c69c90b Use const instead of var 2016-08-08 13:07:01 -07:00
Kevin Sawicki
49908fd818 Keep update available flag set until restart 2016-08-08 13:03:02 -07:00
Kevin Sawicki
11b14f7621 Add zoom items to menu template 2016-08-08 11:09:30 -07:00
Kevin Sawicki
af607f8b67 🎨 function -> => 2016-08-08 11:09:30 -07:00
Kevin Sawicki
bcc372568f Add zoom menu item roles 2016-08-08 11:09:30 -07:00
Kevin Sawicki
59ffe35781 Merge pull request #6765 from miniak/menu-speaking-roles
Add macOS specific speaking roles for MenuItem
2016-08-08 11:06:45 -07:00
Kevin Sawicki
e767d3c131 Add spec for executeJavaScript DOM class prototype 2016-08-08 09:42:43 -07:00
Kevin Sawicki
42a1136c88 Remove HasRealNamedCallbackProperty check 2016-08-08 09:35:40 -07:00
Kevin Sawicki
8b3aa4dbb4 Add spec for sending document.location over IPC 2016-08-08 09:35:30 -07:00
Cheng Zhao
872fbe8ba0 Merge pull request #6762 from miniak/set-thumbnail-clip
Add BrowserWindow.prototype.setThumbnailToolTip
2016-08-08 20:27:15 +09:00
Cheng Zhao
3dd57d1171 Update brightray and libchromiumcontent to latest for #6769 2016-08-08 20:17:41 +09:00
Cheng Zhao
f5abae31a3 Code cleanup for native_window_mac
Method definitions should matche sequence of declarations.
2016-08-08 20:15:45 +09:00
Milan Burda
a6125c538e Add BrowserWindow.prototype.setThumbnailToolTip 2016-08-08 12:05:47 +02:00
Cheng Zhao
a432fb0c34 Merge pull request #6766 from miniak/set-user-tasks-result
Report app.setUserTasks success/failure
2016-08-08 17:43:08 +09:00
Cheng Zhao
850ea37abd Merge pull request #6761 from bbondy/master
Fix printing on Windows when sandbox is enabled
2016-08-08 16:52:07 +09:00
Cheng Zhao
d1b9d03c74 Merge pull request #6754 from darkdh/swipe_conflict
Fix scroll conflict
2016-08-08 16:23:52 +09:00
Cheng Zhao
b6becdeae7 Merge pull request #6741 from MaxWhere/native-window-widget-mac
Offscreen rendering fixes for macOS
2016-08-08 16:10:30 +09:00
Cheng Zhao
443761b047 Merge pull request #6745 from electron/remove-lint-ignore-files
Remove files from cpplint ignore list
2016-08-08 16:04:07 +09:00
Cheng Zhao
2137c42215 Merge pull request #6744 from sairoutine/jpdocs
Japanese: add build-instructions-linux.md
2016-08-08 16:03:30 +09:00
Cheng Zhao
fd461cdd27 Merge pull request #6743 from electron/recovery-suggestion
Add recovery suggestion to auto update failure string
2016-08-08 16:02:13 +09:00
Milan Burda
e84c82b4a7 Document boolean return value of app.setAsDefaultProtocolClient + app.removeAsDefaultProtocolClient 2016-08-08 02:26:27 +02:00
Milan Burda
a0cf013112 Report app.setUserTasks success/failure 2016-08-08 02:22:51 +02:00
Milan Burda
edc1a9614c Add macOS specific speaking roles for MenuItem 2016-08-08 00:02:32 +02:00
Brian R. Bondy
95d5de1444 Fix printing on Windows when sandbox is enabled
Auditors:  @bridiver

This makes it closer to how it works in Chromium and fixes the forever spooling problem on Windows.

The old way worked when the sandbox was disabled but failed on the call for shared_buf.CreateAndMapAnonymous when the sandbox was enabled

This also fixes a handle leak which Chromium already had fixed.
2016-08-07 10:46:08 -04:00
Ludovic Galabru
38cc56efee 🍎 Send events as native macOS notifications 2016-08-06 14:54:07 +02:00
Anthony Tseng
1aedccaeeb Fix scroll conflict 2016-08-06 14:02:40 +08:00
gellert
541116ff24 removes recycling of compositors on mac 2016-08-06 00:00:32 +02:00
Kevin Sawicki
a9c6ee997f Remove ignore files that are lint free 2016-08-05 10:53:10 -07:00
Kevin Sawicki
fdc666708f Use ATOM_COMMON_ATOM_VERSION_H_ as ifdef guar 2016-08-05 10:52:56 -07:00
sairoutine
c8369c8890 📝 Japanese: add build-instructions-linux.md [ci skip] 2016-08-06 02:03:15 +09:00
Kevin Sawicki
0c5b49c402 Add recovery suggestion to failure string 2016-08-05 09:24:13 -07:00
gellert
f29dc3402b reverts AcceleratedWidgetMacNSView into offscreen class 2016-08-05 15:23:36 +02:00
Cheng Zhao
5eeadb0ad4 Merge pull request #6737 from MaxWhere/setpainting-fix
Fix for transparent frames when offscreen window restarted painting
2016-08-05 20:47:35 +09:00
Cheng Zhao
d23418728f Merge pull request #6721 from electron/osr-refactor
Emit NativeImage objects in paint event
2016-08-05 20:44:40 +09:00
Heilig Benedek
29f30aa6ba added checks for painting_ when setting the outputdevice to active state and removed show/hide from start/stoppainting since during testing they caused transparent frames to appear when a window was set to paint again after stopping 2016-08-05 12:30:47 +02:00
gellert
795753286b moves AcceleratedWidgetMacNSView to NativeWindowMac 2016-08-05 12:29:35 +02:00
Cheng Zhao
7173d8b01b Use getBitmap in docs 2016-08-05 18:08:36 +09:00
Cheng Zhao
1be253e1aa Cleanup the code of getBitmap 2016-08-05 18:05:44 +09:00
Heilig Benedek
b5c19a9c6d update docs 2016-08-05 17:40:42 +09:00
Heilig Benedek
37f5ef5712 add getBitmap to NativeImage 2016-08-05 17:40:42 +09:00
Cheng Zhao
736fbd46c6 docs: Show how to use bitmap data directly 2016-08-05 17:40:42 +09:00
Cheng Zhao
8c4ebdc88e Emit NativeImage objects in paint event 2016-08-05 17:40:42 +09:00
Cheng Zhao
3be68ba136 Merge pull request #6736 from electron/maximizable-state
Always restore maximizable state after changing window behavior/style
2016-08-05 17:25:22 +09:00
Cheng Zhao
8a33464d41 Merge pull request #6654 from electron/content-bounds
Add BrowserWindow.get/setContentBounds()
2016-08-05 17:23:24 +09:00
Cheng Zhao
2ef33bc158 Merge pull request #6739 from electron/cookies-refactor
Remove AtomBrowserContext::SetCookieableSchemes
2016-08-05 16:46:40 +09:00
Cheng Zhao
a14b2c1cf8 Remove AtomBrowserContext::SetCookieableSchemes
The standard schemes are already stored, we don't have to duplicate the
list for every session.
2016-08-05 16:35:37 +09:00
Cheng Zhao
6cd1aa21af Merge pull request #6708 from deepak1556/cookieable_schemes_patch
protocol: custom standard schemes should support cookies
2016-08-05 16:25:23 +09:00
Cheng Zhao
ce5bdaf46f Update brightray for #6708 2016-08-05 16:23:59 +09:00
Kevin Sawicki
23203daf95 Non-resizable windows should only maximizable on Mac 2016-08-04 17:22:09 -07:00
Kevin Sawicki
b77a553de7 Always reset maximizable state 2016-08-04 16:50:22 -07:00
Kevin Sawicki
41a0a3fff2 Add failing spec 2016-08-04 16:46:40 -07:00
Kevin Sawicki
dbddf5028a Adjust y position if menu bar is visible 2016-08-04 13:18:58 -07:00
Kevin Sawicki
2a20630f2f Use same position as setPosition test 2016-08-04 13:02:41 -07:00
Kevin Sawicki
3a0ceb40b9 Assert new content bounds after resize event 2016-08-04 12:54:45 -07:00
Kevin Sawicki
3041fcc79e Add spec for BrowserWindow.setContentBounds 2016-08-04 12:34:09 -07:00
Kevin Sawicki
01f95c149a Doc BrowserWindow.setContentBounds 2016-08-04 12:15:29 -07:00
Kevin Sawicki
7bca105e15 Set max size on window constraints 2016-08-04 12:14:23 -07:00
Kevin Sawicki
7ae9c7616d Use empty origin when only adjusting size 2016-08-04 12:10:01 -07:00
Kevin Sawicki
52199a008d Add initial setContentBounds method 2016-08-04 12:02:24 -07:00
Kevin Sawicki
5681ee5220 Use current content position when adjusting content size 2016-08-04 11:41:32 -07:00
Kevin Sawicki
a190495df3 Use bounds for converting window/content sizes 2016-08-04 11:27:27 -07:00
Kevin Sawicki
4751f971e2 Use View::GetBoundsInScreen to compute content bounds 2016-08-04 09:58:36 -07:00
Kevin Sawicki
4f90abce23 Set bounds size to content size 2016-08-04 09:58:36 -07:00
Kevin Sawicki
a868bffd73 Document BrowserWindow.getContentBounds() 2016-08-04 09:58:36 -07:00
Kevin Sawicki
79eee0fdf1 Assert after size through getContentBounds() API 2016-08-04 09:58:35 -07:00
Kevin Sawicki
48cc13d009 Add BrowserWindow.getClientBounds API 2016-08-04 09:58:35 -07:00
Cheng Zhao
cdfbeb1a0a Merge pull request #6726 from MaxWhere/dummy-view-fix
Omits setMouseDownCanMoveWindow call for OffScreenView
2016-08-04 22:07:30 +09:00
gellert
0bb5dabf99 omits setMouseDownCanMoveWindow call for OffScreenView 2016-08-04 12:00:35 +02:00
Cheng Zhao
7624958cf2 Merge pull request #6723 from electron/dummy-view
Show a dummy view in the offscreen window
2016-08-04 17:04:32 +09:00
Cheng Zhao
c0c7b81aed Fix building on Linux 2016-08-04 16:43:30 +09:00
Cheng Zhao
31d8e1b9c9 Also show the text on Windows and Linux 2016-08-04 16:36:01 +09:00
deepak1556
2aa1c9e556 register cookieable schemes with browser context 2016-08-04 12:17:30 +05:30
Cheng Zhao
41df037f64 Show dummy view under offscreen mode 2016-08-04 15:35:08 +09:00
deepak1556
52431506ba protocol: custom standard schemes should support cookies 2016-08-04 11:06:21 +05:30
Cheng Zhao
64334fd40b Pass SkBitmap directly 2016-08-04 13:22:19 +09:00
Cheng Zhao
530fcc8de1 Pass OnPaint callback in constructor
This can catch the paint events happened before onload event.
2016-08-04 13:03:24 +09:00
Cheng Zhao
32d9382417 Merge pull request #6713 from MaxWhere/offscreen-rendering-fixes
Fixes buffer size in offscreen mode
2016-08-04 13:00:54 +09:00
Heilig Benedek
1b0af6f6f1 removed bpp (it can be calculated)
fixed buffer size calculation (we actually send the whole image, not just the dirty part)
removed the unnecessary resets and const
now we use Copy instead of New
2016-08-04 05:18:27 +02:00
Cheng Zhao
01d3f76f92 Merge pull request #6718 from electron/coverage
Add JavaScript code coverage reporting
2016-08-04 10:59:54 +09:00
Cheng Zhao
4a5a4729b4 Merge pull request #6720 from deepak1556/extension_scheme_patch
browser: register extension scheme as web safe scheme
2016-08-04 10:51:48 +09:00
Cheng Zhao
6e63ea7d91 Merge pull request #6719 from electron/is-destroyed-public
Mark isDestroyed as public on BrowserWindow/WebContents
2016-08-04 10:49:01 +09:00
Cheng Zhao
f9a3ed10b8 Merge pull request #6714 from sairoutine/jpdocs
Add: japanese build-instructions-osx.md
2016-08-04 10:26:00 +09:00
Cheng Zhao
28cb0c7f6b Merge pull request #6709 from saghul/uv-fixes
A couple of small libuv related fixes
2016-08-04 10:09:58 +09:00
Cheng Zhao
361161df0a Merge pull request #6711 from miniak/cleanup
isSwipeTrackingFromScrollEventsEnabled cleanup
2016-08-04 10:09:39 +09:00
Kevin Sawicki
1ee244c1b2 Upgrade to electabul@0.0.4 2016-08-03 16:37:53 -07:00
Kevin Sawicki
e1eef5f7ca Upgrade to electabul@0.0.3 2016-08-03 16:23:40 -07:00
Kevin Sawicki
a665cf1935 Remove unused spec modules 2016-08-03 16:23:40 -07:00
Kevin Sawicki
ad07a20d9a Use electabul to instrument and report coverage 2016-08-03 16:23:39 -07:00
Kevin Sawicki
2c0de93f06 Use once when calling done callback 2016-08-03 16:23:39 -07:00
Kevin Sawicki
0ebe142b2f Close windows instead of destroying them 2016-08-03 16:23:39 -07:00
Kevin Sawicki
cce6be1900 Only prevent unload the first time it is attempted 2016-08-03 16:23:39 -07:00
Kevin Sawicki
916920844e Use once instead of on 2016-08-03 16:23:39 -07:00
Kevin Sawicki
60e60d86d1 Send coverage from chrome extension iframe 2016-08-03 16:23:39 -07:00
Kevin Sawicki
9aec425ea8 Save dev tools coverage when available 2016-08-03 16:23:39 -07:00
Kevin Sawicki
e034bd05d3 Save type in coverage filename 2016-08-03 16:23:39 -07:00
Kevin Sawicki
88dc281242 Use web contents id when pid is unavailable 2016-08-03 16:23:38 -07:00
Kevin Sawicki
eaa567dd86 Ignore windows with no URLs 2016-08-03 16:23:38 -07:00
Kevin Sawicki
016faacf86 Save coverage on beforeunload event 2016-08-03 16:23:38 -07:00
Kevin Sawicki
300bf24241 Save coverage data when browser windows are destroyed 2016-08-03 16:23:38 -07:00
Kevin Sawicki
9299921ee9 Delete output lib folder before instrumenting 2016-08-03 16:23:38 -07:00
Kevin Sawicki
491f69df80 Add ability to run tests with coverage report 2016-08-03 16:23:38 -07:00
Kevin Sawicki
e17e195479 Add run script to generate instrumented code coverage .asar 2016-08-03 16:23:38 -07:00
Kevin Sawicki
5b5d51ecf4 Add helper to instrument electron.asar 2016-08-03 16:23:38 -07:00
Kevin Sawicki
afdff69482 Add initial code coverage reporting 2016-08-03 16:23:37 -07:00
deepak1556
835891b373 browser: register extension scheme as web safe scheme 2016-08-04 04:30:25 +05:30
Kevin Sawicki
05ab7d39ad Mark isDestroyed as public on BrowserWindow/WebContents 2016-08-03 14:58:22 -07:00
Kevin Sawicki
15e6028f38 Merge pull request #6710 from miniak/docs-fixes
docs: fix cwd description for shell.writeShortcutLink
2016-08-03 14:36:27 -07:00
gellert
ca16132268 renames to bytesPerPixel and use nullptr 2016-08-03 19:39:23 +02:00
Milan Burda
d8f79bf29b docs: fix cwd description for shell.writeShortcutLink 2016-08-03 18:27:15 +02:00
sairoutine
cedb3714a1 📝 delete no need text in japanese readme.md [ci skip] 2016-08-04 01:17:01 +09:00
sairoutine
ca0ac9c586 📝 build-instructions-osx.md [ci skip] 2016-08-04 01:13:57 +09:00
gellert
8a5e96056e adds resets to destructor 2016-08-03 17:38:56 +02:00
Milan Burda
136f10c4e8 Remove unnecessary comment + respondsToSelector for isSwipeTrackingFromScrollEventsEnabled implementation 2016-08-03 15:46:39 +02:00
Saúl Ibarra Corretgé
d6ff804b9a Remove unneeded flag check
stop_flag is only set if uv_stop was called, which is never the case, so
skipping the test should be harmless.
2016-08-03 12:52:17 +01:00
Saúl Ibarra Corretgé
0da72be8a9 Remove unneeded libuv callback 2016-08-03 12:48:58 +01:00
gellert
50485a28d3 fixes buffer size and adds pixel size to paint event 2016-08-03 13:28:19 +02:00
Cheng Zhao
3ea48a822e Merge pull request #6706 from sairoutine/jpdocs
Japanese: add atom-shell-vs-node-webkit.md
2016-08-03 20:06:03 +09:00
Cheng Zhao
230943d425 Merge pull request #6707 from electron/auto-run-micro-tasks
Revert Node's call of SetAutorunMicrotasks(false)
2016-08-03 18:14:01 +09:00
Cheng Zhao
1445ea8baf Revert Node's call of SetAutorunMicrotasks(false) 2016-08-03 17:57:10 +09:00
sairoutine
cdeef7c20a 📝 japanese: add atom-shell-vs-node-webkit.md [ci skip] 2016-08-03 17:21:30 +09:00
Cheng Zhao
617820dfc2 Merge pull request #6705 from electron/remove-view-painted
Remove the view-painted event
2016-08-03 16:55:48 +09:00
Cheng Zhao
5dabc47440 Remove the view-painted event 2016-08-03 16:20:55 +09:00
Cheng Zhao
1e4c83eb93 Cleanup atom_api_system_preferences_mac.mm 2016-08-03 16:13:51 +09:00
Cheng Zhao
322fb97d8d Merge pull request #6686 from darkdh/swipe_prefs
Swipe back/forward should respect system preferences
2016-08-03 16:10:29 +09:00
Cheng Zhao
b9bcba7abe docs: Do not repeat processes for multiple times in menu.md 2016-08-03 16:08:54 +09:00
Cheng Zhao
163a6bd5c5 Merge pull request #6700 from calidion/patch-1
Update menu.md
2016-08-03 16:00:52 +09:00
Cheng Zhao
53831d71e3 Merge pull request #6703 from electron/merge-offscreen
Merge #6691
2016-08-03 15:58:31 +09:00
Cheng Zhao
2e8ccfd8df Add Offscreen Rendering to guides 2016-08-03 15:38:24 +09:00
Cheng Zhao
1f41e22614 Put constants in annoymouse namespace 2016-08-03 14:09:38 +09:00
Cheng Zhao
82da3b6c66 Fix accidentally changed lines 2016-08-03 14:03:57 +09:00
Cheng Zhao
4d85c1a557 Refactor osr_render_widget_host_view 2016-08-03 13:53:11 +09:00
Cheng Zhao
ea8ea1543f Refactor osr_output_device 2016-08-03 13:06:38 +09:00
Cheng Zhao
9d8e510a55 Refactor the code in atom_api_web_contents 2016-08-03 13:06:34 +09:00
Cheng Zhao
921aaf9aa3 Move osr related files to atom/browser/osr 2016-08-03 13:05:47 +09:00
Anthony Tseng
e0c0e3e5f7 Add IsSwipeTrackingFromScrollEventsEnabled in system prefs 2016-08-03 10:27:56 +08:00
Eric
5ae112677b Update menu.md
1. add difference notice
2.  changed `render process` to `main process`
2016-08-03 10:10:56 +08:00
Cheng Zhao
b0e36ec93a Revert unnecessary changes 2016-08-03 10:48:07 +09:00
Cheng Zhao
aefd99ec7f Only enable kEnableBeginFrameScheduling for offscreen
It has effects on performance and only gets turned on after Chrome 54.
2016-08-03 10:40:12 +09:00
Cheng Zhao
63c34f3dcf docs: Use app.disableHardwareAcceleration() instead of --disable-gpu
The --disable-gpu switch does not work when passed with `appendSwitch`.
2016-08-03 10:32:29 +09:00
Cheng Zhao
c8b544ee1f spec: Remove duplicate code in tests 2016-08-03 10:27:55 +09:00
Cheng Zhao
ba9aa13bd8 Fix lint warnings in documentations 2016-08-03 10:15:38 +09:00
Cheng Zhao
d8a030fa9b Revert the change on default_app 2016-08-03 10:13:32 +09:00
Cheng Zhao
7b34b8d183 Update libchromiumcontent for offscreen patches 2016-08-03 10:12:41 +09:00
Cheng Zhao
c68e9cb595 Use electron/brightray 2016-08-03 10:10:58 +09:00
Cheng Zhao
363fabdcb4 Merge branch 'offscreen-rendering' of https://github.com/MaxWhere/electron into merge-offscreen 2016-08-03 10:09:48 +09:00
Cheng Zhao
1fa18aeba2 Merge pull request #6693 from sairoutine/jpdocs
Japanese: add coding-style.md
2016-08-03 08:30:32 +09:00
Cheng Zhao
549aa59d18 Merge pull request #6694 from ssdong/fixed_typo_in_chinese_doc_translation
fixed typo in simplified chinese doc translation
2016-08-03 08:30:18 +09:00
Cheng Zhao
59076711cb Bump v1.3.2 2016-08-03 07:18:31 +09:00
Susu Dong (LCL)
ddb7b5cff9 fixed typo in simplified chinese doc translation 2016-08-02 15:21:49 -04:00
sairoutine
93e37a92a2 📝 Japanese: add coding-style.md [ci skip] 2016-08-03 03:21:22 +09:00
gellert
1663a9cd13 fixes linendings 2016-08-02 19:31:30 +02:00
Kevin Sawicki
820f3968aa Merge pull request #6677 from miniak/default-app-menu
Add zooming commands to menu in default app
2016-08-02 10:27:56 -07:00
Milan Burda
87c9926fe8 Move Toggle Fullscreen to the bottom of the View menu 2016-08-02 18:08:41 +02:00
Milan Burda
2e043453c0 Add zooming commands to menu (default app) 2016-08-02 18:08:35 +02:00
gellert
362f3deb93 fixes linting 2016-08-02 16:39:07 +02:00
gellert
9872fa0f52 restoring default app 2016-08-02 15:17:50 +02:00
gellert
8eed91d87a Merge remote-tracking branch 'upstream/master' into speedup-gpu 2016-08-02 14:59:03 +02:00
Cheng Zhao
217156f76c Update libchromiumcontent: close #6668 2016-08-02 21:38:34 +09:00
Cheng Zhao
91169396f6 Merge pull request #6688 from electron/constructor-refactor
Use FunctionTemplate instead of ObjectTemplate for native classes
2016-08-02 21:37:56 +09:00
Cheng Zhao
8c0a033b6f Fix lint errors of using __proto__ 2016-08-02 21:02:28 +09:00
Cheng Zhao
edb573d69e Make WebContents inherit NavigationController 2016-08-02 20:55:56 +09:00
Cheng Zhao
025034127a Set JavaScript APIs on prototype of WebContents 2016-08-02 20:52:07 +09:00
Cheng Zhao
844f32aa36 Set prototype of constructor directly 2016-08-02 20:38:35 +09:00
Heilig Benedek
4088f0eb33 remove unneeded windows specific things 2016-08-02 12:57:23 +02:00
Heilig Benedek
9068182664 small fixes 2016-08-02 12:56:03 +02:00
Cheng Zhao
8c3232dc56 Every native class now gets a name 2016-08-02 19:28:12 +09:00
Cheng Zhao
cb19efe49c Pass FunctionTemplate in BuildPrototype 2016-08-02 18:08:12 +09:00
Cheng Zhao
895b8b47ee Save the prototype of EventEmitter 2016-08-02 18:07:58 +09:00
Cheng Zhao
892026458d Cleanup init.js 2016-08-02 17:45:46 +09:00
Cheng Zhao
8f62e79243 GetConstructor now returns FunctionTemplate 2016-08-02 17:20:58 +09:00
Cheng Zhao
6e0cde5b24 All native objects have prototype now 2016-08-02 17:12:17 +09:00
Cheng Zhao
8cd4612fe0 Get rid of Constructor class 2016-08-02 17:02:04 +09:00
Cheng Zhao
846ec5ba49 AttachAsUserData now can assume the existence of wrapper 2016-08-02 15:28:32 +09:00
Cheng Zhao
1505a46ed0 Do not rely on Constructor to call Init
This makes it deterministic when the JavaScript is initialized, which
can make our logic more clear.
2016-08-02 15:15:40 +09:00
Cheng Zhao
84bb82866d docs: the callbacks 2016-08-02 14:44:06 +09:00
Cheng Zhao
56b1abd64a Merge pull request #6685 from electron/document-contents-zoom
Implement and Document the zoom methods that are mapped to the webContents object
2016-08-02 14:41:09 +09:00
Cheng Zhao
7ac28b53e6 Merge pull request #6683 from gabriel/master
Add isVisible() to app.dock
2016-08-02 12:33:36 +09:00
Cheng Zhao
2330f927ed Merge pull request #6684 from electron/felix-debugging-link-fix
Fix link to macOS Debugging Instructions
2016-08-02 12:19:05 +09:00
Anthony Tseng
beca2d26f3 Swipe back/forward should respect system preferences 2016-08-02 11:18:46 +08:00
Samuel Attard
a498cf5b79 Fix linting issues 2016-08-02 13:13:17 +10:00
Samuel Attard
b59f37de98 Document the async versions of getZoomFactor and getZoomLevel 2016-08-02 13:04:21 +10:00
Samuel Attard
e4f6083753 Implement asynchronous versions of getZoomFactor and GetZoomLevel on the webContents object 2016-08-02 13:02:55 +10:00
Samuel Attard
a1f5ca1ad2 Document the zoom methods that are mapped to the webContents object 2016-08-02 12:28:13 +10:00
Felix Rieseberg
c36bcf47d3 📝 Fix link to macOS Debugging Instructions 2016-08-01 19:15:03 -07:00
Cheng Zhao
f8025d95b8 Merge pull request #6678 from sairoutine/jpdocs
Japanese: add system-preferences.md
2016-08-02 09:31:39 +09:00
Cheng Zhao
f7150228d8 Merge pull request #6675 from miniak/docs-ico-sizes
docs: Improve ICO size list
2016-08-02 09:31:19 +09:00
Gabriel Handford
7bde92deb9 Add isVisible() to app.dock 2016-08-01 15:22:37 -07:00
sairoutine
0e6c2f9971 📝 Japanese: add system-preferences.md [ci skip] 2016-08-01 23:43:07 +09:00
Cheng Zhao
eb73303f28 Merge pull request #6676 from electron/fix-upload
Fix a few errors when running the script to upload checksum files
2016-08-01 22:54:10 +09:00
Cheng Zhao
9765599b49 Must pass unicode to StringIO 2016-08-01 22:08:52 +09:00
Cheng Zhao
94a17bb494 Use spaces between checksum and filename 2016-08-01 22:08:52 +09:00
Cheng Zhao
217b639597 Fix filename when uploading to github 2016-08-01 22:08:52 +09:00
Cheng Zhao
c943e4a61f Fix error in run_boto_script 2016-08-01 22:08:52 +09:00
Cheng Zhao
d00bff4d94 Fix error of run_python_script 2016-08-01 21:41:55 +09:00
Cheng Zhao
079a7a1a1c Do not put the upload logic in make_zip 2016-08-01 21:16:16 +09:00
Cheng Zhao
8f75f10239 Merge pull request #6588 from malept/dist-checksums
Generate and upload checksums for released ZIPs to GitHub
2016-08-01 20:47:07 +09:00
Cheng Zhao
d56057b186 Merge pull request #6674 from electron/session-no-gc
Do not garbage collect sessions
2016-08-01 20:40:55 +09:00
gellert
935d47d83e Merge branch 'speedup-gpu' of https://github.com/MaxWhere/electron into speedup-gpu 2016-08-01 13:28:12 +02:00
gellert
56f5749675 adds transparency 2016-08-01 13:27:39 +02:00
Cheng Zhao
e1152ae96c Remove usages of linked_ptr
It is no longer needed since we now have move semantic.
2016-08-01 20:26:06 +09:00
Heilig Benedek
a4a2579423 brightray commit update 2016-08-01 13:22:16 +02:00
Milan Burda
e7322edb3a docs: Improve ICO size list 2016-08-01 13:13:40 +02:00
Cheng Zhao
ffed3e9c0c Move the code to native 2016-08-01 20:11:17 +09:00
Cheng Zhao
d23d9dcf01 Do not garbage collect sessions 2016-08-01 19:35:51 +09:00
gellert
36918250ec a possible fix for dragging 2016-08-01 12:06:46 +02:00
gellert
439ad94afe Merge remote-tracking branch 'upstream/master' into speedup-gpu 2016-08-01 12:00:34 +02:00
Mark Lee
59de146a9f Use S3 as an intermediary store & merge shasum files before uploading to GitHub 2016-07-31 19:25:26 -07:00
Mark Lee
5b07154b8e Generate and upload checksums for released ZIPs to GitHub
When generating an Electron release, create a `sha256sum`-compatible
file for each ZIP file, and upload them to the corresponding GitHub release.
This is primarily to confirm that the download of a given ZIP completed
successfully, as opposed to verifying that an Electron team member uploaded
the given ZIP files (which would require using a trusted GPG key).
2016-07-31 19:00:57 -07:00
Cheng Zhao
01ebc77228 Fix styling issues 2016-08-01 09:58:33 +09:00
Cheng Zhao
fb76aaac39 Merge pull request #6667 from liusy182/restore-issue
fix maximize restore issue caused by restore window size change
2016-08-01 09:56:08 +09:00
Cheng Zhao
1d33275374 Merge pull request #6661 from MaxWhere/minor-fixes
A minor fix for sendInputEvent and improvements related to cursor-changed event
2016-08-01 09:45:41 +09:00
Heilig Benedek
c39ded0481 Merge branch 'speedup-gpu' of https://github.com/MaxWhere/electron into speedup-gpu 2016-08-01 02:18:37 +02:00
Heilig Benedek
0eacee0058 add documentation for changes 2016-08-01 02:18:19 +02:00
Heilig Benedek
64f220fb50 fix UTF character sending as suggested by @zcbenz 2016-08-01 02:18:07 +02:00
Heilig Benedek
bc9adcd5ca fix toBUFFER naming issue and cursor-changed parameter order 2016-08-01 02:17:49 +02:00
Heilig Benedek
2b05be64b4 add documentation for changes 2016-08-01 02:14:45 +02:00
Heilig Benedek
7a471e1ab7 fix UTF character sending as suggested by @zcbenz 2016-08-01 02:14:11 +02:00
Heilig Benedek
bc7c5c567c fix toBUFFER naming issue and cursor-changed parameter order 2016-08-01 02:13:31 +02:00
Cheng Zhao
3d47ab20c2 Merge pull request #6663 from simonmysun/patch-1
Typo fix
2016-08-01 08:45:15 +09:00
Cheng Zhao
feb8a4b905 Merge pull request #6662 from sairoutine/jpdocs
Japanese: add testing-on-headless-ci.md
2016-08-01 08:44:54 +09:00
gellert
8e1214fc3a paint toggling fix cleanup 2016-08-01 01:01:55 +02:00
gellert
aac5fb0377 fixes paint toggling, for real tho hopefully 2016-08-01 00:47:53 +02:00
gellert
690ca7ec2a filtering out offscreen webcontents in getAllWebcontents call 2016-07-31 22:06:34 +02:00
gellert
1cd1c5e01c fixes paint toggling 2016-07-31 22:05:36 +02:00
Heilig Benedek
0098d5bca7 Hide when not painting + cursor event fix 2016-07-31 18:40:35 +02:00
gellert
35ee99265e adds tests for osr 2016-07-31 17:10:53 +02:00
liusi
db671702df fix maximize restore issue caused by restore window size change 2016-07-31 21:49:54 +08:00
gellert
5525ac36b8 does linting 2016-07-31 12:19:56 +02:00
孙茂胤
1d5a126135 Typo fix 2016-07-31 16:11:03 +08:00
sairoutine
a77a83761f 📝 Japanese: add testing-on-headless-ci.md [ci skip] 2016-07-31 17:05:13 +09:00
Heilig Benedek
f3b723c9fa Send some more data with the cursor-changed event 2016-07-31 05:24:54 +02:00
Heilig Benedek
21962be60e Adds option to get raw data from NativeImage 2016-07-31 05:24:44 +02:00
Heilig Benedek
af80b9a7df Fixes not being able to send UTF8 characters anymore 2016-07-31 05:24:28 +02:00
Heilig Benedek
015516497c Merge pull request #13 from electron/master
update as upstream
2016-07-31 05:19:43 +02:00
Heilig Benedek
0a349ef16c remove fpscounter, can be enabled from node 2016-07-31 05:13:29 +02:00
Heilig Benedek
3e7ff466cd Merge branch 'speedup-gpu' of https://github.com/MaxWhere/electron into speedup-gpu 2016-07-31 05:12:34 +02:00
Heilig Benedek
3a1285aeac Send some more data with the cursor-changed event 2016-07-31 05:11:56 +02:00
Heilig Benedek
d0bda76a2d Adds option to get raw data from NativeImage 2016-07-31 05:11:18 +02:00
Heilig Benedek
94e52f0738 Fixes not being able to send UTF8 characters anymore 2016-07-31 05:10:14 +02:00
gellert
092fc92cb8 adds tutorial 2016-07-31 00:47:08 +02:00
gellert
f60d791fa8 adds docs for osr 2016-07-31 00:22:34 +02:00
gellert
e4000850cd head part updates 2016-07-30 21:35:14 +02:00
gellert
916063f370 handles destroyed renderer process 2016-07-30 21:25:49 +02:00
gellert
976277ffbf webcontentsview cleanup 2016-07-30 20:39:17 +02:00
gellert
6486d80f87 api impl + cleanups + stability improvements 2016-07-30 15:40:16 +02:00
Cheng Zhao
a769996b8d Merge pull request #6641 from electron/felix-macos-debugging
Add debugging instructions for macOS
2016-07-30 11:55:05 +09:00
gellert
2190c4dd8d adds destructors + more code cleanup 2016-07-30 00:51:19 +02:00
Heilig Benedek
70656dc991 revert framesubscription 2016-07-29 19:54:35 +02:00
Felix Rieseberg
ab69ae07b7 📝 Add debugging instructions for macOS
I already wrote up debugging instructions for Windows, but never got
around to writing them for macOS - until now! This adds a very basic
introduction to LLDB from the command line, which should empower people
to figure out what’s happening inside Electron when they call an
Electron method from JavaScript.
2016-07-29 10:19:58 -07:00
Cheng Zhao
67ef47104f Merge pull request #6649 from miniak/docs-fix
docs: fix argument types
2016-07-29 22:51:26 +09:00
gellert
6abf7475b8 cleaning up osr pt1 2016-07-29 14:50:27 +02:00
Milan Burda
e428d5db4f docs: fix argument types 2016-07-29 11:56:32 +02:00
Cheng Zhao
ea6e6dab8c Merge pull request #6644 from electron/webcontents-is-focused-crash
Check view before checking top level native window
2016-07-29 11:08:11 +09:00
Cheng Zhao
6bb342ef2a Merge pull request #6646 from electron/linux-200
Load 200 DPI resources on Linux
2016-07-29 11:07:23 +09:00
Cheng Zhao
5643feabc3 Load 200 DPI resources on Linux 2016-07-29 10:51:31 +09:00
Cheng Zhao
72612ed2f5 Merge pull request #6637 from electron/check-window-class
Check that window is an EventDispatchingWindow
2016-07-29 10:42:36 +09:00
Cheng Zhao
e5e4c53b1e Merge pull request #6645 from electron/ico-125
Update ico to include sizes for 125% DPI
2016-07-29 10:33:55 +09:00
Cheng Zhao
5e7ee675f7 Update ico to include sizes for 125% DPI 2016-07-29 10:32:48 +09:00
Cheng Zhao
8bf30ace4b Merge pull request #6636 from yuya-oc/docs-win32-icon
docs: Add recommended sizes for Windows ICO icons
2016-07-29 10:11:05 +09:00
Cheng Zhao
6d3120b05c Merge pull request #6626 from Starefossen/patch-1
docs: mention app ready event for DevTools Extension tutorial
2016-07-29 10:02:01 +09:00
Heilig Benedek
fdff60132c update brightray commit 2016-07-29 01:48:29 +02:00
Kevin Sawicki
5982e3a75e Fix typo in comment 2016-07-28 15:48:01 -07:00
Kevin Sawicki
bd2ce5327c Return early when render widget host view is null 2016-07-28 15:47:52 -07:00
Heilig Benedek
ab38e7700f brightray url update 2016-07-28 22:18:21 +02:00
Kevin Sawicki
5eaae8136e Check that window is an EventDispatchingWindow 2016-07-28 08:48:56 -07:00
Yuya Ochiai
29d66eb0d0 📝 Add recommended sizes for Windows ICO icons
For #6396
Please refer to https://msdn.microsoft.com/en-us/library/windows/desktop/dn742485(v=vs.85).aspx
[ci skip]
2016-07-28 23:22:41 +09:00
Heilig Benedek
7b61c5c9d0 removed some junk and added offscreen webcontents type 2016-07-28 12:10:56 +02:00
Cheng Zhao
b790ad6c1a Merge pull request #6631 from amor520/master
update Prerequisites
2016-07-28 18:07:33 +09:00
amor
46e707fd6d update Prerequisites 2016-07-28 15:01:36 +08:00
Cheng Zhao
e73bd00854 Merge pull request #6629 from electron/download-item-get-save-path
Set download item save path to selected path from dialog
2016-07-28 15:23:43 +09:00
Kevin Sawicki
55d6e0de1a Assert save path of download item 2016-07-27 17:52:36 -07:00
Kevin Sawicki
4e9b19074f Make downloadItem.getSavePath() public 2016-07-27 17:33:36 -07:00
Kevin Sawicki
0ad8c66b65 Use selected dialog path as item save path 2016-07-27 17:31:26 -07:00
Heilig Benedek
0dbe4bc417 api base 2016-07-28 01:58:23 +02:00
Cheng Zhao
bf20bbc247 Merge pull request #6623 from electron/shortcut
Add shell.writeShortcutLink/readShortcutLink APIs
2016-07-28 08:48:52 +09:00
Kevin Sawicki
34f33c3b45 Merge pull request #6627 from davej/patch-1
docs: Explain how to use highlightMode with BrowserWindow
2016-07-27 15:57:34 -07:00
DaveJ
42640b6170 docs: Add click handler to tray window example 2016-07-27 23:56:00 +01:00
DaveJ
322fe36dea docs: Fix undefined variables 2016-07-27 23:23:26 +01:00
Dave Jeffery
4823b5582f docs: Explain how to use highlightMode with BrowserWindow
As discussed on https://github.com/electron/electron/pull/6620
2016-07-27 21:35:13 +01:00
Hans Kristian Flaatten
ba2b8c8d3e docs: mention app ready event for DevTools Extension tutorial 2016-07-27 22:01:01 +02:00
gellert
c45d9555e7 cleans up class names 2016-07-27 20:31:03 +02:00
gellert
f90e62a7a5 apply fixes 2016-07-27 19:59:01 +02:00
gellert
6e1db86a77 fixes software output device rendering 2016-07-27 19:44:41 +02:00
Heilig Benedek
221714e141 added onpaint to software path 2016-07-27 19:19:53 +02:00
Heilig Benedek
783c9d9218 Merge branch 'speedup-gpu' of https://github.com/MaxWhere/electron into speedup-gpu 2016-07-27 18:25:28 +02:00
Heilig Benedek
da5c95710f software bump 2016-07-27 18:24:58 +02:00
gellert
d0bd4816cb adds tracing calls and osx fix 2016-07-27 18:02:54 +02:00
Heilig Benedek
a39bb35744 use electron nativewindow 2016-07-27 14:36:22 +02:00
Cheng Zhao
242ce4f818 Fix building on non-Windows 2016-07-27 19:55:05 +09:00
Cheng Zhao
ac8a490d56 Fix lint warnings 2016-07-27 19:51:16 +09:00
Cheng Zhao
eadffc6db8 docs: icon and iconIndex have to be set together 2016-07-27 19:49:17 +09:00
Cheng Zhao
57dbf284c1 spec: shell.writeShortcutLink/readShortcutLink 2016-07-27 19:43:11 +09:00
Cheng Zhao
d6234e11df docs: shell.writeShortcutLink/readShortcutLink 2016-07-27 16:47:24 +09:00
Cheng Zhao
ff5b8047a1 Throw exception when ReadShortcutLink failed 2016-07-27 16:32:32 +09:00
Cheng Zhao
25538fe7fb All fields are always returned 2016-07-27 16:23:35 +09:00
Cheng Zhao
60ba2d624e Initialize COM before using the API 2016-07-27 16:20:53 +09:00
Cheng Zhao
7f3443b138 Add shell.writeShortcutLink/readShortcutLink 2016-07-27 16:16:21 +09:00
Cheng Zhao
367f94aa76 Bump v1.3.1 2016-07-27 13:21:17 +09:00
Cheng Zhao
1e61743242 Merge pull request #6602 from electron/appusermodelid-remove-spaces
Remove all spaces from potential appUserModelID as it isn't allowed by the spec
2016-07-27 10:53:52 +09:00
Cheng Zhao
b8bafbc5a3 Merge pull request #6620 from electron/tray-highlight-toggle
Add option to always highlight the tray icon
2016-07-27 10:49:38 +09:00
Cheng Zhao
99b523176b Merge pull request #6619 from electron/web-contents-copy-image-at
Add webContents.copyImageAt(x, y)
2016-07-27 10:15:38 +09:00
Cheng Zhao
7994f087fb Merge pull request #6618 from electron/code-range-registration
Only register code range in Windows crash reporter once
2016-07-27 09:52:18 +09:00
Cheng Zhao
4dc8e90586 Merge pull request #6603 from electron/standard-markdown
Standardize JavaScript code snippets in the documentation
2016-07-27 09:36:44 +09:00
Cheng Zhao
0bfd31e7cb Update brightray for #6613 2016-07-27 08:53:55 +09:00
Cheng Zhao
b3530a55a9 Merge pull request #6613 from deepak1556/pref_init_patch
browser: initialize pref registry in brightray
2016-07-27 08:53:33 +09:00
Samuel Attard
9f0299cc31 Use better regex to match spaces 2016-07-27 09:38:49 +10:00
Kevin Sawicki
c4e743d207 Add TODO to deprecate boolean param 2016-07-26 14:18:15 -07:00
Kevin Sawicki
8e1de88512 Correct typo in variable name 2016-07-26 14:17:41 -07:00
Kevin Sawicki
0ff6b87f8c Update tray.setHighlightMode docs 2016-07-26 13:59:19 -07:00
Kevin Sawicki
b2f9cce297 Add option to always highlight the tray icon 2016-07-26 13:51:43 -07:00
Kevin Sawicki
31564f079f Document webContents.copyImageAt(x,y) 2016-07-26 12:08:05 -07:00
Kevin Sawicki
bde432b64d Add webContents.copyImageAt 2016-07-26 12:06:11 -07:00
Kevin Sawicki
7a1b796dd0 Change registered flag from InitBreakpad 2016-07-26 10:54:30 -07:00
Kevin Sawicki
3279f5c80a Add spec for starting crash reporter twice 2016-07-26 10:43:57 -07:00
Kevin Sawicki
8956388804 Only register code range once 2016-07-26 10:40:11 -07:00
Zeke Sikelianos
c3f26df577 standardize electron-capturer doc snippets 2016-07-26 09:49:02 -07:00
Zeke Sikelianos
c38f505001 update standard-markdown to use linux-friendly local require statements 2016-07-26 09:48:19 -07:00
Zeke Sikelianos
3a16a9b0bf update to standard-markdown with node 0.10 support 2016-07-26 09:48:19 -07:00
Zeke Sikelianos
784bee8faa update npm run lint to include docs 2016-07-26 09:48:19 -07:00
Zeke Sikelianos
06a354a2eb standardize all javascript blocks in English docs 2016-07-26 09:48:19 -07:00
Zeke Sikelianos
dd9935a9d7 add npm script to lint all javascript blocks in the docs using standard 2016-07-26 09:47:16 -07:00
gellert
8392ece321 updates impl to newer version of chromium 2016-07-26 16:52:43 +02:00
deepak1556
e65bc481a8 browser: initialize pref registry in brightray 2016-07-26 16:34:04 +05:30
Cheng Zhao
7c1f48808b Merge pull request #6612 from electron/cc-cxx
Do not overwrite CC and CXX in bootstrap
2016-07-26 19:55:25 +09:00
Cheng Zhao
7d11912a03 No more need to overwrite env when running update.py 2016-07-26 19:24:58 +09:00
Cheng Zhao
49181403ef Ignore CC and CXX in env 2016-07-26 19:24:28 +09:00
Cheng Zhao
0cdd764161 Merge pull request #6609 from electron/msvs
Add --msvs parameter to bootstrap.py
2016-07-26 19:03:25 +09:00
Cheng Zhao
89de791e9d docs: Mention the --msvs 2016-07-26 17:42:12 +09:00
Cheng Zhao
b34deb1d2f docs: x64 is the default build 2016-07-26 17:40:58 +09:00
Cheng Zhao
9bf3150237 Add --msvs parameter to bootstrap.py 2016-07-26 17:38:31 +09:00
Cheng Zhao
a4d983c236 Merge pull request #6607 from enlight/patch-4
Normalize string quotes in desktopCapturer docs
2016-07-26 16:29:01 +09:00
Cheng Zhao
61d16d5caa Merge pull request #6606 from electron/font-settings
Set page's font settings with system settings
2016-07-26 14:11:20 +09:00
Vadim Macagon
6cc68638e7 Normalize string quotes in desktopCapturer docs
Missed one string in my previous PR :(
2016-07-26 11:57:39 +07:00
Cheng Zhao
2b0cd97bb8 Merge pull request #6593 from enlight/improved-desktop-capturer-docs
Improve readability, and add a link to the navigator.getUserMedia API
2016-07-26 13:35:54 +09:00
Cheng Zhao
d2ce50e3dd c++11 styling 2016-07-26 13:32:17 +09:00
Cheng Zhao
0da1a772be Set page's font settings with system settings 2016-07-26 13:29:27 +09:00
Vadim Macagon
89309244b5 Improve the desktopCapturer docs
Made minor improvements to readability, and added a link to the
`navigator.getUserMedia` docs on MDN for convenience.
2016-07-26 10:48:38 +07:00
Cheng Zhao
8d941a6559 Merge pull request #6566 from electron/win-autoupdater-es6
Move autoUpdater to ES6
2016-07-26 12:46:00 +09:00
Cheng Zhao
b139d5ad1c Merge pull request #6598 from electron/fs-access-asar
Add asar implementation of fs.access/accessSync
2016-07-26 12:42:59 +09:00
Cheng Zhao
7b6d74fdc2 Merge pull request #6596 from liusy182/restore-issue
Window position doesn't restore correctly minimize and restore window
2016-07-26 11:21:59 +09:00
Cheng Zhao
c70ec47138 Merge pull request #6595 from lukeapage/patch-8
Clarify the default arguments for Menu popup
2016-07-26 11:16:57 +09:00
Samuel Attard
12dba2cb67 Remove all spaces from potential appUserModelID as it isn't allowed by the spec 2016-07-26 11:44:01 +10:00
Samuel Attard
20e26a9639 Move auto-updater-win to ES6 2016-07-26 11:40:55 +10:00
Kevin Sawicki
c730800f0c Merge pull request #6601 from feross/master
Fix test for PR #6600
2016-07-25 17:45:50 -07:00
Feross Aboukhadijeh
9bc144c880 Fix test for PR #6600
Just realized that the tests don't pass after my PR. This fixes that :)
2016-07-25 17:27:45 -07:00
Kevin Sawicki
8c7d28de27 Merge pull request #6600 from feross/master
MenuItem: Use 'Close Window' for 'close' role label
2016-07-25 15:21:05 -07:00
Feross Aboukhadijeh
d6a7ced32c MenuItem: Use 'Close Window' for 'close' role label
On OS X, the standard label that's used for the 'close' role is 'Close
Window'. You can see this in the default macOS apps from Apple.
2016-07-25 15:13:17 -07:00
gellert
9d83ce1676 resolves 2016-07-25 21:09:49 +02:00
Kevin Sawicki
b627b8711a Add spec for accessing normal files 2016-07-25 11:17:40 -07:00
Kevin Sawicki
8eca019157 Support paths as Buffers 2016-07-25 11:10:36 -07:00
Kevin Sawicki
30fbe92970 Add asar-supported fs.accessSync implementation 2016-07-25 11:05:18 -07:00
gellert
8fb7872b84 removes logs and adds webcontentsview init 2016-07-25 19:58:21 +02:00
gellert
0ad0c79202 adds beginframe scheduling 2016-07-25 19:58:14 +02:00
Kevin Sawicki
3ad5504194 Add asar-supported fs.access implementation 2016-07-25 10:50:30 -07:00
gellert
9e10f211d7 removes commented includes 2016-07-25 19:44:44 +02:00
gellert
8090278708 breaks down osr api to separate files 2016-07-25 19:44:44 +02:00
gellert
14836cef02 using damage_rect 2016-07-25 19:44:44 +02:00
gellert
96e1ba9c14 gpu acclereted osr added 2016-07-25 19:44:44 +02:00
Heilig Benedek
5371921f8a speed(up) bump 2016-07-25 19:44:44 +02:00
Heilig Benedek
4a0f0063a0 speedup base 2016-07-25 19:44:44 +02:00
Kevin Sawicki
a518c47f4c Use let/const instead of var 2016-07-25 10:43:38 -07:00
liusi
8129c27a4a Merge branch 'master' of https://github.com/electron/electron into restore-issue 2016-07-25 22:53:18 +08:00
liusi
2cc01eea30 issue 6574 - Window position doesn't restore correctly 2016-07-25 22:51:27 +08:00
gellert
6eba509d53 removes logs and adds webcontentsview init 2016-07-25 15:55:00 +02:00
Luke Page
c365aa85c2 Clarify the default arguments for popup
The null / -1 defaults weren't very helpful, so changed to follow other documentation and write the behaviour if that param is missing.
2016-07-25 13:57:38 +02:00
Cheng Zhao
729b84f2ca Merge pull request #6576 from electron/browser-window-proxy-docs
Fix BrowserWindowProxy documentation
2016-07-25 16:55:49 +09:00
Cheng Zhao
66086880e2 Merge pull request #6575 from electron/asar-doc-fixes
fix wording in asar doc
2016-07-25 16:55:20 +09:00
Cheng Zhao
a30997867f Merge pull request #6573 from electron/native-image-doc
Fix documentation for NativeImage
2016-07-25 16:55:09 +09:00
Cheng Zhao
72c4952907 Merge pull request #6590 from electron/reliable-typed-array
Use ArrayBuffer.isView to detect Buffer and ArrayBuffer
2016-07-25 16:54:54 +09:00
Cheng Zhao
7a61966423 Use deepEqual for comparing type arrays 2016-07-25 16:41:20 +09:00
Cheng Zhao
9ddb62c42a Use Buffer.from instead of deprecated new Buffer 2016-07-25 16:40:22 +09:00
Cheng Zhao
1c9421bc89 Use ArrayBuffer.isView to detect Buffer and ArrayBuffer 2016-07-25 16:39:09 +09:00
Cheng Zhao
eb51e080e5 spec: TypeArray should work in remote 2016-07-25 16:30:40 +09:00
Cheng Zhao
200d09cc70 Merge pull request #6572 from haadcode/master
Add support for TypedArrays in IPC.
2016-07-25 16:22:29 +09:00
Cheng Zhao
fb251ac09b Update brightray for #6156 2016-07-25 16:08:38 +09:00
Cheng Zhao
e95da6ad1b Merge pull request #6565 from TiagoDanin/Update-Doc
Update docs-translations
2016-07-25 16:05:04 +09:00
Cheng Zhao
fd8cc63ca9 Merge pull request #6558 from deepak1556/session_proxy_patch
session: add proxyBypassRules option to setProxy api
2016-07-25 16:03:50 +09:00
Cheng Zhao
c497765dea Merge pull request #6524 from liusy182/painted-event-6426
add "view-painted" event to WebContent.
2016-07-25 16:02:50 +09:00
Cheng Zhao
c0f81d14e4 Bump v1.3.0 2016-07-25 12:57:10 +09:00
Cheng Zhao
4af72617ee Merge pull request #6589 from electron/200-resources
Load a few resources pak added in Chrome 52
2016-07-25 12:54:45 +09:00
Cheng Zhao
b013abf829 Copy a few more files to out dir 2016-07-25 12:11:01 +09:00
Cheng Zhao
221f53ab08 Load a few more pak files 2016-07-25 11:10:53 +09:00
Cheng Zhao
f4207560f2 Update libchromiumcontent: fix linking error on Linux 2016-07-25 08:53:58 +09:00
Cheng Zhao
f09fc2f6e9 Merge pull request #6585 from electron/win-release
Do not export symbols of OpenSSL on Windows
2016-07-24 22:23:19 +09:00
Cheng Zhao
e8c03f2555 Do not export symbols of OpenSSL on Windows 2016-07-24 21:56:16 +09:00
Cheng Zhao
ed14f661dd Merge pull request #6584 from electron/fix-ci
Do not throw exception when channel name is "error"
2016-07-24 21:55:11 +09:00
Cheng Zhao
751ee53683 Do not throw exception when channel name is "error" 2016-07-24 21:08:25 +09:00
haad
fac330fb50 Fix TypedArray check, add check when instanceof doesn't work for TypedArrays. 2016-07-23 12:43:49 +01:00
haad
2757046e71 Add isTypedArray to Electron exports 2016-07-23 11:30:14 +01:00
Zeke Sikelianos
a2ffab40f9 use an instance-variable-style name for BrowserWindowProxy 2016-07-22 15:00:10 -07:00
Zeke Sikelianos
3a9c57231e fix wording in asar doc 2016-07-22 14:52:43 -07:00
Zeke Sikelianos
9432cb9170 use standard-style javascript in nativeImage doc 2016-07-22 13:47:05 -07:00
Zeke Sikelianos
9ca0fbaeb7 fix capitalization and headings for NativeImage class 2016-07-22 13:42:27 -07:00
haad
e6c8900a18 Fix linting 2016-07-22 20:20:24 +01:00
haad
c717cd9192 🐛 Add support for TypedArrays in IPC.
Fixes https://github.com/electron/electron/issues/2104.
2016-07-22 19:44:19 +01:00
Cheng Zhao
99ec841a8e Merge pull request #6342 from electron/chrome52
Upgrade to Chrome 52
2016-07-22 08:53:33 -06:00
Cheng Zhao
0c1d91a895 display.h needs to be used together with screen.h 2016-07-22 23:37:20 +09:00
gellert
81be0bc123 adds beginframe scheduling 2016-07-22 13:55:58 +02:00
TiagoDanin
c7c6dda122 Replace OSX to macOS and Update references 2016-07-21 16:07:03 -05:00
Cheng Zhao
cf6f4708bc Fix building on Windows 2016-07-21 11:20:43 -06:00
Kevin Sawicki
7bcd76aa93 Merge pull request #6562 from liusy182/hasImageContents
fix documentation error pointed out in issue #6541
2016-07-21 10:38:22 -06:00
liusy182
6e83f454d7 documentation error pointed out in issue #6541 2016-07-21 22:46:46 +08:00
Cheng Zhao
6850500a65 Fix building on Linux 2016-07-21 07:09:01 -06:00
Cheng Zhao
0fa4e58557 Bump node module version 2016-07-21 06:32:29 -06:00
Cheng Zhao
d22dc6c7d3 Update to Chrome 52.0.2743.82 2016-07-21 06:07:05 -06:00
Cheng Zhao
f6f7b41f0a Fix compilation error after merge 2016-07-21 06:03:38 -06:00
Cheng Zhao
b57665330c Merge branch 'master' into chrome52 2016-07-21 05:34:36 -06:00
Cheng Zhao
50b6b500fd Merge pull request #6557 from LittleboyHarry/patch-1
Translate the comments
2016-07-21 04:55:56 -06:00
Cheng Zhao
9cdc74e431 Merge pull request #6559 from electron/node-6-3
Update to Node.js 6.3.0
2016-07-21 03:28:37 -06:00
Cheng Zhao
fbfae70803 spec: Fix exception when refreshing test window 2016-07-21 17:08:43 +09:00
Cheng Zhao
39bd2bee8e Avoid using CHECK in files using node headesr
Node has its own CHECK macro which requires linking with node::Assert.
2016-07-21 16:56:48 +09:00
Cheng Zhao
cef86f5257 Use node::FreeEnvironment 2016-07-21 16:43:21 +09:00
Cheng Zhao
334f03fc42 Fix compilation errors on Windows 2016-07-21 16:36:50 +09:00
Cheng Zhao
5fc0201ca1 There is no node_extern.h anymore 2016-07-21 16:36:31 +09:00
Cheng Zhao
8488b84b53 Update .node-version 2016-07-21 01:17:07 -06:00
Cheng Zhao
567714f07c Add a few new node defines 2016-07-21 00:57:34 -06:00
Cheng Zhao
39e39ae913 Make use of some new Node config flags 2016-07-21 00:57:34 -06:00
Cheng Zhao
7d42797c1f Update node headers including 2016-07-21 00:57:34 -06:00
Cheng Zhao
8f5bd4afaf Update to Node 6.3.0 2016-07-21 00:57:34 -06:00
Cheng Zhao
498e9089b3 Bump v1.2.8 2016-07-20 23:57:08 -06:00
deepak1556
aa6d79a3d8 session: add proxyBypassRules option to setProxy api 2016-07-21 10:14:54 +05:30
Harry
9b12cf75ec Translate the comments 2016-07-21 10:37:55 +08:00
Cheng Zhao
a0c5749ac1 Merge pull request #6547 from electron/update-web-view-docs
docs: Update nodeintegration of web-view-tag.md
2016-07-20 05:18:47 -06:00
Cheng Zhao
99524bf490 Merge pull request #6540 from mattslay/patch-1
Update file-object.md
2016-07-20 05:13:43 -06:00
Cheng Zhao
e9e67179c3 docs: Update nodeintegration of web-view-tag.md
webview is now disabled when nodeIntegration is off.
2016-07-20 05:13:05 -06:00
Cheng Zhao
81c790dfdb Merge pull request #6529 from darkdh/serial_number
serial number in hex string
2016-07-20 05:00:57 -06:00
gellert
504c79cae7 removes commented includes 2016-07-20 11:32:59 +02:00
gellert
84a5c50b62 breaks down osr api to separate files 2016-07-20 11:30:06 +02:00
Matt Slay
0e24d148fd Update file-object.md
Added a for loop to iterate over the array of files, which allows processing of multiple files being dropped over the "holder" div.
2016-07-19 23:51:58 -05:00
gellert
7fc9df4f8f using damage_rect 2016-07-19 23:50:49 +02:00
Anthony Tseng
9e6f623a5c Using base::HexEncode() 2016-07-19 11:06:56 +08:00
Anthony Tseng
42eb0c3eae serial number in hex string 2016-07-18 23:42:42 +08:00
Cheng Zhao
4081381700 Merge pull request #6527 from electron/mac-relaunch
Apply #6412 on macOS
2016-07-18 09:00:36 -06:00
Cheng Zhao
1a0199c2ad Merge pull request #6520 from MagiCarbon/master
error link
2016-07-18 08:49:13 -06:00
Cheng Zhao
2ed733fedc Redirect relaunch process's stdout to /dev/null 2016-07-18 08:46:01 -06:00
gellert
50dc71d1c2 gpu acclereted osr added 2016-07-18 16:16:23 +02:00
liusi
d335d7d706 add "view-painted" event to WebContent. 2016-07-18 14:54:52 +08:00
Moriarty!~~
d10323b057 error link
> `[security introduction](../tutorial/security.md)`.
it should be `[security introduction](tutorial/security.md)`
2016-07-17 09:22:53 +08:00
Cheng Zhao
08491e1ceb Merge pull request #6511 from electron/more-docs-cleanup
Clean up API Docs
2016-07-16 09:57:04 +09:00
Kevin Sawicki
12cb678562 Merge pull request #6510 from electron/reset-thumbnail-docs
Mention how to reset thumbnail to entire window
2016-07-15 10:40:32 -07:00
Kevin Sawicki
e24885b160 Mention how to reset thumbnail to entire window 2016-07-15 10:38:11 -07:00
Kevin Sawicki
efcdad2751 Merge pull request #6509 from electron/brightray-devtools-focus-fix
Upgrade brightray for undocked devtools focus fix
2016-07-15 10:17:59 -07:00
Kevin Sawicki
e15d7a1fd3 Upgrade brightray for undocked devtools focus fix 2016-07-15 09:21:08 -07:00
Cheng Zhao
4d46189928 Fix cpplint warnings 2016-07-15 22:47:40 +09:00
Cheng Zhao
43b5e655a4 Merge pull request #6502 from liusy182/optional-callback-6491
Make the callback of session.clearStorageData optional
2016-07-15 22:45:49 +09:00
liusi
154daa8d6a make Session::ClearStorageData's callback optional 2016-07-15 14:13:56 +08:00
Cheng Zhao
9eacd07eda Merge pull request #6489 from electron/webcontents-static-api
Document static methods on webContents
2016-07-15 11:02:00 +09:00
Cheng Zhao
2791f71c03 webContents is now a public module 2016-07-15 10:59:19 +09:00
Cheng Zhao
52808d5342 Merge pull request #6499 from electron/drop-vista
Remove implicit references to Vista in docs
2016-07-15 10:20:14 +09:00
Cheng Zhao
d186a01815 Merge pull request #6497 from electron/windows-thumbnail
Add setThumbnailClip API on Windows
2016-07-15 10:18:39 +09:00
Cheng Zhao
5db758297f Merge pull request #6486 from MarshallOfSound/master
Add a getFeedURL API for the autoUpdater
2016-07-15 10:02:05 +09:00
Kevin Sawicki
297365b4f0 Add require example for webContents 2016-07-14 17:54:18 -07:00
Kevin Sawicki
4de4774325 Update headings/sections to follow docs styleguide 2016-07-14 17:46:58 -07:00
Cheng Zhao
7c56169633 Merge pull request #6495 from electron/link-to-boilerplates
link to boilerplates
2016-07-15 09:44:29 +09:00
Cheng Zhao
c3ed4b5527 Merge pull request #6493 from electron/elecron-devtools-installer
mention electron-devtools-installer as an alternative
2016-07-15 09:44:01 +09:00
Kevin Sawicki
1aa645522a Remove implicit references to Vista 2016-07-14 17:33:48 -07:00
Cheng Zhao
16e43a7f15 Merge pull request #6490 from wilsonpage/add-drop-text-support
Add support for dropped text in osx
2016-07-15 09:12:35 +09:00
Cheng Zhao
3ace677b41 Merge pull request #6474 from darkdh/cert_detail
Add more detail attributes for certificate-error
2016-07-15 08:45:36 +09:00
Zeke Sikelianos
7700c5e249 denote return type on process memory info methods methods 2016-07-14 16:10:19 -07:00
Zeke Sikelianos
595b827a13 Use common style to denote OS-specific arguments 2016-07-14 16:09:29 -07:00
Kevin Sawicki
f4a160d0fb Add properties as sub-list 2016-07-14 16:02:06 -07:00
Kevin Sawicki
ccee3e1fc2 Document setThumbnailClip 2016-07-14 15:54:57 -07:00
Kevin Sawicki
86218fe773 win: Add setThumbnailClip window API 2016-07-14 15:50:31 -07:00
Samuel Attard
450c181da3 Add autoUpdater getFeedURL specs 2016-07-15 10:13:41 +12:00
Samuel Attard
d42e6b3c1f Fix casing issue on the windows update JS file 2016-07-15 10:05:36 +12:00
Zeke Sikelianos
ee677ea212 link to boilerplates 2016-07-14 14:57:06 -07:00
Zeke Sikelianos
52a2ed9205 fix typo 2016-07-14 14:16:02 -07:00
Zeke Sikelianos
f857be431a mention electron-devtools-installer as an automated alternative 2016-07-14 14:12:06 -07:00
Wilson Page
90f8a7e828 Add support for dropped text in osx 2016-07-14 18:25:58 +01:00
Kevin Sawicki
a4001fbc55 Sort contents by id for consistent ordering 2016-07-14 09:41:10 -07:00
Kevin Sawicki
34f454a0f5 Use let and const 2016-07-14 09:33:16 -07:00
Kevin Sawicki
d9e15151fb Use getCurrentWebContents() 2016-07-14 09:25:59 -07:00
Kevin Sawicki
446e3f06c9 Add spec for webContents.getFocusedWebContents() 2016-07-14 09:17:16 -07:00
Kevin Sawicki
ebdf8e1fa1 Add initial webContents spec 2016-07-14 09:10:40 -07:00
Kevin Sawicki
c680c0b85e Document static webContents methods 2016-07-14 09:00:29 -07:00
Kevin Sawicki
a7badd43d5 Expose getAllWebContents() API 2016-07-14 08:59:49 -07:00
Samuel Attard
84a8c393a8 Fix linting, removes additional semicolon 2016-07-15 00:29:53 +12:00
Samuel Attard
fa7526202b Remove unnecessary method 2016-07-15 00:13:04 +12:00
Samuel Attard
b367c65bcd Add docs for getFeedURL 2016-07-15 00:07:17 +12:00
Samuel Attard
51687e1bc9 Add the getFeedURL API for macOS and Windows 2016-07-15 00:04:48 +12:00
Anthony Tseng
02e89d60f1 Use CalculateFingerprint256() 2016-07-14 19:09:11 +08:00
Cheng Zhao
ba887dbde7 Merge pull request #6482 from deepak1556/webcontents_navigation_obs_patch
webcontents: replace deprecated navigation observers
2016-07-14 12:57:26 +09:00
Cheng Zhao
21a2feaf23 Merge pull request #6480 from electron/webcontents-focus
Execute role-based menu items on focused web contents
2016-07-14 12:47:07 +09:00
Cheng Zhao
183b599b9c Merge pull request #6470 from electron/session-options
Ad options for creating Session
2016-07-14 12:07:39 +09:00
deepak1556
c8bf6edcc6 webcontents: replace deprecated navigation observers 2016-07-14 06:47:38 +05:30
Kevin Sawicki
72cdba2b8e 🎨 2016-07-13 14:49:25 -07:00
Kevin Sawicki
e1459b7db7 Doc webContents.isFocused 2016-07-13 14:20:33 -07:00
Kevin Sawicki
d8eb8f4007 Sort filenames 2016-07-13 14:18:41 -07:00
Kevin Sawicki
f9a8bd3ea5 Call role method on focused web contents 2016-07-13 14:16:56 -07:00
Kevin Sawicki
06e595e7cc Add webContents.getFocusedWebContents() 2016-07-13 14:16:56 -07:00
Kevin Sawicki
7877fa7c0a Add webContents.isFocused() 2016-07-13 14:16:56 -07:00
Kevin Sawicki
5d95b544dd Merge pull request #6476 from AndrewTsao/patch-1
fix a typo.
2016-07-13 09:41:10 -07:00
andi
7807310c02 fix a typo. 2016-07-14 00:37:55 +08:00
Heilig Benedek
6e25aea49f speed(up) bump 2016-07-13 17:43:00 +02:00
Anthony Tseng
db39867ad9 Add more detail attributes for certificate-error 2016-07-13 22:14:47 +08:00
Cheng Zhao
6d2e633c82 Merge pull request #6469 from abdihaikal/master
Add electron-id.slack.com for Indonesia
2016-07-13 17:24:28 +09:00
Cheng Zhao
1faa567d09 Merge pull request #6467 from electron/enforce-new-docs-styleguide
Update documentation guidelines for Classes
2016-07-13 16:41:13 +09:00
Cheng Zhao
41d2799514 Run background pages in separate partition
This avoids the default partition always being created on startup, so it
gives users a chance to run session.fromParititon.
2016-07-13 16:22:55 +09:00
Abdi Haikal
de352f71cb Add electron-id.slack.com for Indonesia 2016-07-13 14:07:46 +07:00
Zeke Sikelianos
9b1d1dc2c7 clarify rules for documenting classes 2016-07-12 22:00:28 -07:00
Zeke Sikelianos
4905d30dd6 fix heading levels on BrowserWindowProxy 2016-07-12 21:57:07 -07:00
Zeke Sikelianos
5ab4fd261c 🎨 2016-07-12 21:50:43 -07:00
Zeke Sikelianos
b20606c718 fix heading levels in Menu doc 2016-07-12 21:47:28 -07:00
Zeke Sikelianos
2486512c71 use h3/h4 for instance headings and children 2016-07-12 21:42:08 -07:00
Zeke Sikelianos
f8045fd743 💄 2016-07-12 21:40:46 -07:00
Cheng Zhao
749ed3473b spec: Fix js lint warning 2016-07-13 13:34:19 +09:00
Zeke Sikelianos
6d8a6e6471 use consistent wording for instances 2016-07-12 21:30:27 -07:00
Zeke Sikelianos
a304a59d36 use h3/h4 for static method headings and methods 2016-07-12 21:29:09 -07:00
Zeke Sikelianos
fff036b6ab distinguish static methods from module methods 2016-07-12 21:28:27 -07:00
Zeke Sikelianos
a08ee97fb0 use h3/h4 for instance events headings and events 2016-07-12 21:24:22 -07:00
Zeke Sikelianos
67dbff1d4a events -> instance events 2016-07-12 21:22:54 -07:00
Zeke Sikelianos
e866c68938 📝 minor style changes and typos 2016-07-12 21:21:25 -07:00
Cheng Zhao
e653c67153 Move chromeExtensionHandler out of ready handler
This code were in ready handler because we could not require "protocol"
before ready before. It is now safe to move the code out.
2016-07-13 12:23:14 +09:00
Cheng Zhao
6db75a3458 Fix building on Linux 2016-07-13 12:23:14 +09:00
Cheng Zhao
fd73279d16 spec: Test lifetime of sessions returned by session.fromPartition 2016-07-13 12:23:14 +09:00
Cheng Zhao
62153f4117 spec: Name of tests should match docs 2016-07-13 12:23:14 +09:00
Cheng Zhao
3ce3004595 spec: session.defaultSession test case 2016-07-13 12:23:14 +09:00
Cheng Zhao
e7666b0448 docs: options of session.fromPartition 2016-07-13 12:23:14 +09:00
Cheng Zhao
753e92c845 Add cache option for session 2016-07-13 12:23:14 +09:00
Cheng Zhao
e213e09c3e Add options to session.fromPartition 2016-07-13 12:23:14 +09:00
Cheng Zhao
00804e5f98 Move the ability to create BrowserContext to embedder 2016-07-13 12:23:14 +09:00
Cheng Zhao
400bb8d0f3 Hide in_memory parameter in native interface 2016-07-13 12:23:14 +09:00
Cheng Zhao
06a41cedab Move check of isReady to native code 2016-07-13 12:23:14 +09:00
Cheng Zhao
d739d8772c Move session-created event to app
This follows the convention of other *-created events.
2016-07-13 12:23:14 +09:00
Cheng Zhao
45500701f1 Do not access default session before app is ready 2016-07-13 12:23:14 +09:00
Cheng Zhao
fcd3357fb8 Use Proxy to provide protocol APIs
In this way we can avoid initializing defaultSession when protocol
module is used.
2016-07-13 12:23:14 +09:00
Cheng Zhao
4ebb83e999 Move the warning of registerStandardSchemes to native code 2016-07-13 12:23:14 +09:00
Cheng Zhao
13e1818bf7 Bump v1.2.7 2016-07-13 12:22:42 +09:00
Cheng Zhao
e96d7a5fd9 Merge pull request #6466 from electron/cert-verifier-io-thread
Create AtomCertVerifier on IO thread
2016-07-13 12:22:17 +09:00
Cheng Zhao
e5ccb3fd5d Remove lock in AtomCertVerifier 2016-07-13 12:07:57 +09:00
Cheng Zhao
24c60019b7 Create AtomCertVerifier on IO thread 2016-07-13 12:05:57 +09:00
Cheng Zhao
12d646a48b Merge pull request #6459 from electron/devtools-context-menu
Add edit menu items to editable elements in dev tools
2016-07-13 10:43:48 +09:00
Cheng Zhao
606931d737 Merge pull request #6455 from electron/use-current-content-constraints
Initialize new size constraints to current constraints
2016-07-13 10:14:33 +09:00
Kevin Sawicki
181b8d799e Add spec for min/max window size 2016-07-12 16:36:25 -07:00
Kevin Sawicki
15f7dc6609 Initialize to constraints to current constraints 2016-07-12 16:36:25 -07:00
Kevin Sawicki
e02cf5905c Execute command on devtools web contents when focused 2016-07-12 13:24:53 -07:00
Kevin Sawicki
fa36d2e8c6 Add standard edit items to text context menus 2016-07-12 11:54:45 -07:00
Kevin Sawicki
63b98b1ea0 Use const instead of var 2016-07-12 11:31:40 -07:00
Kevin Sawicki
d3e63777cb Merge pull request #6457 from preco21/document-fixes-6
docs: Small document fixes
2016-07-12 11:08:28 -07:00
Plusb Preco
9ea4039887 📝 Fix grammatical typo
[ci skip]
2016-07-13 03:02:14 +09:00
Kevin Sawicki
2f17c0ba74 Merge pull request #6456 from preco21/korean-docs-10
docs: Update Korean docs as upstream
2016-07-12 10:59:38 -07:00
Plusb Preco
039aebb74a 📝 Fix isolated link
[ci skip]
2016-07-13 02:59:29 +09:00
Plusb Preco
19765e70cf 📝 Fix typo
[ci skip]
2016-07-13 02:57:11 +09:00
Plusb Preco
797aef60ee 📝 Update Korean docs as upstream
[ci skip]
2016-07-13 02:53:26 +09:00
Kevin Sawicki
d842604d16 Merge pull request #6444 from electron/windows-login-items
Implement login item API on Windows
2016-07-12 10:26:02 -07:00
Plusb Preco
56e679632f 📝 Update Korean docs as upstream
[ci skip]
2016-07-13 01:12:04 +09:00
Kevin Sawicki
afd5e51d6a Add Browser namespace 2016-07-12 09:10:48 -07:00
Kevin Sawicki
66d16b2871 Add Windows label to login items settings API 2016-07-12 09:10:48 -07:00
Kevin Sawicki
64513f8c69 Enable login item spec on Windows 2016-07-12 09:10:47 -07:00
Kevin Sawicki
3d358ee7ea Fix Windows compilation issues 2016-07-12 09:10:47 -07:00
Kevin Sawicki
af907163a2 Enable LoginItemSettings converter on all platforms 2016-07-12 09:10:47 -07:00
Kevin Sawicki
5a36c5596c Add initial windows login item implementation 2016-07-12 09:10:47 -07:00
Kevin Sawicki
64f9c6a1d7 Add get/setLoginItemSettings on all platforms 2016-07-12 09:10:47 -07:00
Cheng Zhao
230b4ac241 Merge pull request #6449 from electron/10.9-transparent
Fix transparent window having border on OS X 10.9
2016-07-12 15:25:37 +09:00
Cheng Zhao
3335792200 Remove some unneeded hacks for old OS X versions 2016-07-12 15:15:47 +09:00
Cheng Zhao
2ee8142136 Fix transparent window having border on OS X 10.9 2016-07-12 15:01:37 +09:00
Cheng Zhao
056166ea17 Merge pull request #6448 from electron/tray-next-tick
Destroy the native tray in next tick
2016-07-12 14:55:34 +09:00
Cheng Zhao
5a604f8e79 Destroy the native tray in next tick 2016-07-12 14:23:38 +09:00
Cheng Zhao
3eaa32fc87 Merge pull request #6447 from ellerbrock/broken-link-fix
fix broken link
2016-07-12 11:01:52 +09:00
Cheng Zhao
df0d2b89cd Merge pull request #6446 from electron/accessibility-api
Add API for Chrome's accessibility support state
2016-07-12 10:59:12 +09:00
Cheng Zhao
21a8a727f8 Merge pull request #6442 from electron/circular-references
Maintain stack of visited objects for cycle detection
2016-07-12 10:39:16 +09:00
Cheng Zhao
53440e8993 Merge pull request #6441 from miniak/remove-windows-vista-check
Remove unnecessary >= Windows Vista check
2016-07-12 10:33:29 +09:00
Maik Ellerbrock
01cb024f44 fix broken link
fixed broken link "how to share data between web pages" in section "Differences Between Main Process and Renderer Process"
2016-07-12 07:31:18 +08:00
Kevin Sawicki
4e22d5dd8a Add missing typeof 2016-07-11 14:48:48 -07:00
Kevin Sawicki
f5d371e180 Remove linter warnings 2016-07-11 14:46:28 -07:00
Kevin Sawicki
131bff48ea IsAccessibilitySupportEnabled -> isAccessibilitySupportEnabled 2016-07-11 14:44:32 -07:00
Kevin Sawicki
46a1e0382d Document accessibility support API 2016-07-11 14:41:35 -07:00
Kevin Sawicki
67b647322f Add spec to verify app.isAccessibilitySupportEnabled return type 2016-07-11 14:32:24 -07:00
Kevin Sawicki
34f7ddec9f Update API to isAccessibilitySupportEnabled 2016-07-11 14:32:14 -07:00
Kevin Sawicki
3fcbac78ac Implement accessiblity change events on Windows 2016-07-11 14:23:25 -07:00
Kevin Sawicki
68d7ae75b0 Implement accessiblity change events on mac 2016-07-11 14:09:01 -07:00
Kevin Sawicki
fc36ac8c1b Add API for accessibility state and changes 2016-07-11 14:04:56 -07:00
Kevin Sawicki
1a080266c5 Merge pull request #6443 from robertfirespotter/patch-1
Fix link to locales.md
2016-07-11 12:09:30 -07:00
Robert D
2d40ced3be Fix link to locales.md 2016-07-11 11:37:22 -07:00
Kevin Sawicki
2d9391f7d7 Add more cycle tests 2016-07-11 10:49:23 -07:00
Kevin Sawicki
00f82aaffe Only check arrays and objects for cycles 2016-07-11 10:39:45 -07:00
Kevin Sawicki
bd58e1b2c3 Remove linter errors 2016-07-11 10:33:13 -07:00
Kevin Sawicki
564b0cace5 Maintain visted objects as a stack for cycle detection 2016-07-11 10:33:13 -07:00
Kevin Sawicki
71a8bac12a Add more failing circular reference specs 2016-07-11 10:33:13 -07:00
Kevin Sawicki
5da0b856f9 Call includes directly on visited array 2016-07-11 10:33:13 -07:00
Kevin Sawicki
2cc2b8a146 Return empty array for circular references 2016-07-11 10:33:04 -07:00
Kevin Sawicki
ab1786c17d Add spec for circular array/object references 2016-07-11 09:52:50 -07:00
Milan Burda
38016b8144 Remove unnecessary >= Windows Vista check 2016-07-11 18:23:33 +02:00
Cheng Zhao
b06e6e9ce5 Merge pull request #6438 from develar/patch-2
docs: electron-userland package tools links
2016-07-11 20:12:59 +09:00
Vladimir Krivosheev
d824e3a959 docs: electron-userland package tools links
`electron-packager` and `electron-builder` now in the `electron-userland` github org — links fixed.
2016-07-11 13:05:02 +02:00
Cheng Zhao
6164139167 Merge pull request #6436 from electron/open-external-string16
win: Fix openExternal not working with non-ASCII characters
2016-07-11 17:31:17 +09:00
Cheng Zhao
5208bbd2e8 Remove unneeded include 2016-07-11 17:13:21 +09:00
Cheng Zhao
86338290fb win: Fix openExternal not working with non-ASCII characters 2016-07-11 17:12:11 +09:00
Cheng Zhao
5abe726678 Merge pull request #6434 from electron/fullscreen-set-bounds
mac: Do not change window size when in fullscreen
2016-07-11 17:11:51 +09:00
Cheng Zhao
31e67788a2 mac: Do not change window size when in fullscreen 2016-07-11 16:44:42 +09:00
Cheng Zhao
381366daf1 Fix indention 2016-07-11 16:43:01 +09:00
Cheng Zhao
70a29bd46a Merge pull request #6433 from electron/fullscreen-button
The fullscreen button should always be hidden for frameless window
2016-07-11 16:23:10 +09:00
Cheng Zhao
db8787fce1 The fullscreen button should always be hidden for frameless window 2016-07-11 16:00:29 +09:00
Cheng Zhao
2220534df3 Merge pull request #6432 from electron/global-unresponsive-suppresser
Suppress the unresponsive event globally
2016-07-11 15:45:36 +09:00
Cheng Zhao
8269e7b1ef Suppress unresponsive event when showing menu 2016-07-11 15:31:24 +09:00
Cheng Zhao
7848608198 Replace DialogScope with UnresponsiveSuppressor
The latter is global-wide.
2016-07-11 15:29:03 +09:00
Cheng Zhao
c58bddffe3 Update brightray for #2565 2016-07-11 15:10:43 +09:00
Cheng Zhao
d5a7b3b7fd Merge pull request #6431 from electron/show-hidden-files
Add showHiddenFiles property for dialog.showOpenDialog
2016-07-11 14:58:33 +09:00
Cheng Zhao
26fe38a296 docs: showHiddenFiles 2016-07-11 13:52:44 +09:00
Cheng Zhao
fc72df3ba1 win: Use FOS_FORCESHOWHIDDEN for showHiddenFiles 2016-07-11 13:49:51 +09:00
Cheng Zhao
6e0fadbe26 gtk: Set show-hidden property for showHiddenFiles 2016-07-11 13:47:24 +09:00
Cheng Zhao
f08ac07737 mac: Add showHiddenFiles property for showOpenDialog 2016-07-11 13:30:18 +09:00
Cheng Zhao
33e8d5e0aa Merge pull request #6429 from electron/fullscreen-menu-bar
Auto-hide menubar when in fullscreen
2016-07-11 13:28:00 +09:00
Cheng Zhao
a1a870fe43 Auto-hide menubar when in fullscreen 2016-07-11 13:10:19 +09:00
Cheng Zhao
32f3f3244e Merge pull request #6428 from electron/toolbar
win: Add toolbar type for BrowserWindow
2016-07-11 13:00:48 +09:00
Cheng Zhao
e8e2763131 win: Add toolbar type for BrowserWindow 2016-07-11 12:46:50 +09:00
Cheng Zhao
c644353726 Update brightray for #6423 2016-07-11 09:04:34 +09:00
Cheng Zhao
eae69f9728 Merge pull request #6423 from electron/modernize-to-c11
Modernize to c++11
2016-07-11 09:03:03 +09:00
Haojian Wu
4ac4dacffe Some manual change to for-ranged loop.
Use "const auto&" where possible.
2016-07-10 15:57:51 +02:00
Haojian Wu
2717b96310 Don't change chromium_src files. 2016-07-10 15:35:54 +02:00
Haojian Wu
55b3f1936f Modernize to C++11: Use for-range loop. 2016-07-10 13:33:15 +02:00
Haojian Wu
3bdeac98bf Modernize to C++11: use override. 2016-07-10 13:21:42 +02:00
Haojian Wu
04f9d35312 Modernize to C++11: Use auto key to improve code readability and maintainability. 2016-07-10 13:11:47 +02:00
Cheng Zhao
11ebb15fd2 Merge pull request #6420 from pedrro/master
Fixed broken links in documentation PT-BR
2016-07-10 19:30:41 +09:00
Cheng Zhao
f35bbb9131 Merge pull request #6419 from electron/remove-unused-using-decls
Remove unused using decls.
2016-07-10 19:29:40 +09:00
Cheng Zhao
c7a483aaef Merge pull request #6418 from vsemozhetbyt/patch-1
Fix typo in the web-contents.md
2016-07-10 19:29:18 +09:00
Haojian Wu
fab02809c6 Modernize to C++11: NULL => nullptr.
No functional change.
2016-07-10 11:57:04 +02:00
pedro silva
77ef70cd92 Fixed broken links in documentation PT-BR 2016-07-09 18:47:19 -03:00
Haojian Wu
59e44c13e0 Remove unused using decls. 2016-07-09 22:23:57 +02:00
vsemozhetbyt
4f62050b01 Fix typo in the web-contents.md
📝 `false` -> `true` in the `webContents.print` `silent` explanation.

[ci skip]
2016-07-09 20:31:02 +03:00
Machisté N. Quintana
9c74ea4bf4 Merge pull request #6416 from mihaipocorschi/fix-docs-readme
Fixed broken FAQ link in docs/README.md
2016-07-09 08:49:30 -07:00
Cheng Zhao
c5dd345b98 Merge pull request #6417 from electron/thick-frame-maximze
Correctly handle maximize/fullscreen in window without thickFrame
2016-07-09 23:37:39 +09:00
Cheng Zhao
f77b9db069 Fix unmaximize() not working 2016-07-09 23:16:57 +09:00
Cheng Zhao
5979c1464f Remember bounds instead of size 2016-07-09 23:10:36 +09:00
Cheng Zhao
c4de246bfb Correctly handle unmaximize 2016-07-09 23:04:42 +09:00
Cheng Zhao
baff744601 Use setBounds to implement maximize for window without thickFrame 2016-07-09 22:49:55 +09:00
mihaipocorschi
a3388b1d25 Fixed broken FAQ link in docs/README.md 2016-07-09 16:14:42 +03:00
Cheng Zhao
b87c3c4b2d Merge pull request #6415 from electron/thick-frame
Add thickFrame option for BrowserWindow
2016-07-09 22:09:23 +09:00
Cheng Zhao
b70090170d docs: thickFrame option 2016-07-09 21:52:45 +09:00
Cheng Zhao
2ece9e2885 Add thickFrame option 2016-07-09 21:49:15 +09:00
Cheng Zhao
187b68b8b2 Merge pull request #6412 from electron/relaunch-dev-null
Redirect relaunch process's stdout to /dev/null
2016-07-09 18:16:12 +09:00
Cheng Zhao
54f74e8160 Redirect relaunch process's stdout to /dev/null 2016-07-09 17:59:40 +09:00
Cheng Zhao
1beba5bdc0 Merge pull request #6411 from electron/clear-protocol-handlers
Clear protocol handlers on exit
2016-07-09 17:18:31 +09:00
Cheng Zhao
627028e3a0 Clear protocol handlers on exit 2016-07-09 17:02:55 +09:00
Cheng Zhao
3481acd570 Merge pull request #6404 from electron/default-app-accessibility
Adjust default app styles for accessibility
2016-07-09 12:08:11 +09:00
Kevin Sawicki
d02a453c51 Merge pull request #6391 from electron/getlocale-oneline
New title and one-liner for app.getLocale() doc
2016-07-08 12:45:41 -07:00
Kevin Sawicki
85ff4c4dab Merge pull request #6405 from vsemozhetbyt/patch-1
Fix typo in the web-view-tag.md
2016-07-08 12:18:54 -07:00
vsemozhetbyt
1726327bfa Fix typo in the web-view-tag.md
📝 Remove a redundant # from a href hash.

web-contents.md##webcontentssendinputeventevent ->
web-contents.md#webcontentssendinputeventevent

[ci skip]
2016-07-08 22:15:51 +03:00
Kevin Sawicki
8aee04bb24 Improve text and link contrast ratio 2016-07-08 11:31:00 -07:00
Kevin Sawicki
a4754212dc Add lang attribute to html element 2016-07-08 11:26:22 -07:00
Jessica Lord
e25001e277 Rename file 2016-07-08 09:43:48 -07:00
Kevin Sawicki
7dc336606d Merge pull request #6403 from devjin0617/devjin0617-patch-1
Update README-ko.md
2016-07-08 09:26:18 -07:00
devjin0617
5fd77cbf2e Update README-ko.md
Add meetup community link of turkish
2016-07-09 01:22:35 +09:00
Cheng Zhao
6e81c55880 Merge pull request #6385 from electron/only-use-role-accelerator-in-app-menu
Only use default role accelerator in app menu
2016-07-08 11:22:21 +09:00
Cheng Zhao
5713e0599b Merge pull request #6375 from electron/login-item
Add login item API
2016-07-08 10:39:20 +09:00
Cheng Zhao
204734f80b Merge pull request #6392 from vsemozhetbyt/patch-2
Fix typos in the remote.md
2016-07-08 10:03:32 +09:00
vsemozhetbyt
ba9baec27f Fix typos in the remote.md
📝 Fixes #6387

[ci skip]
2016-07-08 04:00:22 +03:00
Cheng Zhao
b02a83c96e Merge pull request #6390 from vsemozhetbyt/patch-1
One alphabetical reordering in the docs/README.md
2016-07-08 09:52:32 +09:00
Jessica Lord
ea64db9e5c More concise wording 2016-07-07 17:45:35 -07:00
Cheng Zhao
2c56cd4ffa Merge pull request #6384 from electron/move-faq
Move and rename FAQ
2016-07-08 09:35:08 +09:00
vsemozhetbyt
9c5d36f0c6 One alphabetical reordering in the docs/README.md
📝 webContents, Tray -> Tray, webContents

If I get it right, only API TOCs should be ordered alphabetically,
so I've left other ones (Guides, Tutorials, Development) untouched.
I'm not so sure about API TOC Intro (three links below the "Synopsis"),
tell me if they should be sorted alphabetically too.

[ci skip]
2016-07-08 03:33:22 +03:00
Jessica Lord
ae8b78aff8 New title and one-liner 2016-07-07 17:33:06 -07:00
Cheng Zhao
a0eaf8aca6 Merge pull request #6383 from electron/quit-menu-on-linux
Use Ctrl+Q as default accelerator for quit role on Linux
2016-07-08 09:32:07 +09:00
Kevin Sawicki
cde594775d Remove API that is no longer available 2016-07-07 16:41:08 -07:00
Kevin Sawicki
7326d3d3d5 🎨 2016-07-07 16:38:12 -07:00
Kevin Sawicki
10bb8df09a Update login item API docs 2016-07-07 16:33:26 -07:00
Kevin Sawicki
2633c2f735 Add was prefix to current launch settings 2016-07-07 16:29:58 -07:00
Kevin Sawicki
c100300764 Update API to get/setLoginItemSettings 2016-07-07 16:29:09 -07:00
Kevin Sawicki
e4906f2d87 Add back getCurrentActivityType 2016-07-07 14:29:43 -07:00
Kevin Sawicki
cb943cec77 🎨 2016-07-07 14:28:01 -07:00
Kevin Sawicki
10a2454921 Remove unneeded atom:: prefix 2016-07-07 14:25:09 -07:00
Kevin Sawicki
791cbc929a Update spec to request defualt accelerator from item 2016-07-07 11:55:59 -07:00
Kevin Sawicki
2faf00dc19 Only use default accelerator in Windows/Linux app menu 2016-07-07 11:50:19 -07:00
Cheng Zhao
6381f44f26 mac: Pass useDefaultAccelerator to getAcceleratorForCommandId 2016-07-07 11:50:19 -07:00
Jessica Lord
00fab4688b Move and rename FAQ 2016-07-07 10:13:19 -07:00
Kevin Sawicki
1e0e5b0eff Use CommandOrControl+Q for quit role on Linux 2016-07-07 09:19:20 -07:00
Kevin Sawicki
583122ee3e Add quit menu item on Linux 2016-07-07 09:15:36 -07:00
Kevin Sawicki
77cdc2c4a7 Merge pull request #6382 from vsemozhetbyt/patch-1
Fix a hash of a link href in the remote.md
2016-07-07 08:54:23 -07:00
vsemozhetbyt
34ed2c4da4 Fix a hash of a link href in the remote.md
📝 web-contents.md#webcontentsexecutejavascriptcode-usergesture ->
web-contents.md#webcontentsexecutejavascriptcode-usergesture-callback
2016-07-07 18:52:49 +03:00
Cheng Zhao
d23c1bf917 Cleanup the code of SetBounds 2016-07-07 20:02:18 +09:00
Cheng Zhao
43e9f30b21 Merge pull request #6363 from MarshallOfSound/master
Bound the target width and height of window when calling SetSize
2016-07-07 19:52:47 +09:00
Cheng Zhao
c3ce53a7b2 Merge pull request #6379 from Crocmagnon/patch-1
Highlight the whole eval() override
2016-07-07 19:49:42 +09:00
Gabriel Augendre
72e811fea4 Highlight the whole eval() override
I updated the link to hightlight not only the first line but the whole `window.eval()` override.
2016-07-07 12:22:12 +02:00
Samuel Attard
ceb2864881 Move size bounding logic to SetBounds 2016-07-07 20:55:10 +12:00
Cheng Zhao
eedac775e4 Merge pull request #6377 from electron/docs-update
docs: Some dlls are not there anymore
2016-07-07 10:45:55 +09:00
Cheng Zhao
a053dc2f7d Merge pull request #6376 from electron/require-package-json-in-default-app
Use require to load package.json in default app
2016-07-07 10:25:56 +09:00
Cheng Zhao
26af0999cd Merge pull request #6372 from electron/linux-icon
Set default app window icon on Linux
2016-07-07 10:19:02 +09:00
Cheng Zhao
c70635daff docs: Some dlls are not there anymore 2016-07-07 10:17:49 +09:00
Cheng Zhao
c7e0df09bc Merge pull request #6370 from electron/send-key-event-to-main-menu
Give menu a chance to handle keydown event before window
2016-07-07 10:11:12 +09:00
Cheng Zhao
bbfdaf7679 Merge pull request #6355 from electron/webview-capture-page
Add <webview>.capturePage([rect,] callback)
2016-07-07 10:09:40 +09:00
Cheng Zhao
0a64d6ee30 Merge pull request #6369 from electron/remote-object-with-no-constructor
Handle remote arguments with no constructor
2016-07-07 09:47:46 +09:00
Kevin Sawicki
2e02994277 Add parens about constructor 2016-07-06 15:45:35 -07:00
Kevin Sawicki
88fe667f66 Use require to load package json 2016-07-06 14:19:47 -07:00
Kevin Sawicki
49b32b8380 Mention open as hidden is manually configurable 2016-07-06 14:17:19 -07:00
Kevin Sawicki
667b6d6370 Doc login item APIs 2016-07-06 14:10:25 -07:00
Kevin Sawicki
60ab71a706 Combine launch and current status login item APIs 2016-07-06 13:57:46 -07:00
Kevin Sawicki
2406c82ef5 Add specs for login item APIs 2016-07-06 13:34:14 -07:00
Kevin Sawicki
c5610b2186 Add API to add/remove app as login item 2016-07-06 13:26:16 -07:00
Kevin Sawicki
b55f55cfc4 Add app.getLoginItemStatus API 2016-07-06 13:17:39 -07:00
Kevin Sawicki
56739e10e3 Add anonymous class to exports and assert it 2016-07-06 13:11:25 -07:00
Kevin Sawicki
a9b43a0fc9 Use empty string constructor name when missing 2016-07-06 13:06:48 -07:00
Kevin Sawicki
79c00d8938 Shrink icon using pngcrush 2016-07-06 12:51:16 -07:00
Kevin Sawicki
98a97a52ea Add getLoginItemLaunchStatus API 2016-07-06 12:49:08 -07:00
Kevin Sawicki
cf480f8e17 Set default app window icon on Linux 2016-07-06 11:47:21 -07:00
Kevin Sawicki
bd33961964 Give menu a chance to handle key event before window 2016-07-06 10:12:40 -07:00
Kevin Sawicki
07ccb6af2b 🎨 2016-07-06 09:42:43 -07:00
Kevin Sawicki
b900ff93e4 Make OnCapturePageDone static 2016-07-06 09:32:58 -07:00
Kevin Sawicki
c2ecc49be2 Defer to webContents docs 2016-07-06 09:21:29 -07:00
Kevin Sawicki
4a4a8528ea Fix linter warnings 2016-07-06 09:21:29 -07:00
Kevin Sawicki
ce4ef1ccb8 Update capturePage documentation for new location 2016-07-06 09:21:28 -07:00
Kevin Sawicki
12dddae2ca Remove unused callback 2016-07-06 09:21:28 -07:00
Kevin Sawicki
f7b72f0948 Move capturePage to WebContents 2016-07-06 09:21:28 -07:00
Kevin Sawicki
d67dfd09fd Pass through empty constructor names 2016-07-06 09:18:20 -07:00
Kevin Sawicki
a1209b69b3 Add spec for constructor-less param 2016-07-06 09:11:04 -07:00
Maksim
b444b35215 Update remote.js 2016-07-06 09:11:04 -07:00
Kevin Sawicki
d42d10a47c Merge pull request #6368 from vsemozhetbyt/patch-1
Fix disordered definitions in webContents doc
2016-07-06 09:02:35 -07:00
vsemozhetbyt
c2bf6c2460 Fix disordered definitions in webContents doc
📝 Swap `clearSelection` and `keepSelection` definitions
for `webContents.stopFindInPage(action)` that seems to be in wrong order.

[ci skip]
2016-07-06 18:58:50 +03:00
Samuel Attard
6bd343b112 Bound the target width and height of window when calling SetSize 2016-07-07 00:49:35 +12:00
Heilig Benedek
74120493fd Merge pull request #12 from electron/master
update as upstream
2016-07-06 14:12:24 +02:00
Cheng Zhao
92b97d3576 Bump v1.2.6 2016-07-06 13:20:36 +09:00
Paul Betts
7ffab11f1a Merge pull request #6356 from jonathansampson/patch-1
modern.ie is no longer in use
2016-07-05 19:37:38 -07:00
Jonathan Sampson
7baf7372af modern.ie is no longer in use
The URL exists for historical reasons, but is no longer the primary URL for developer resources.
2016-07-05 19:34:33 -07:00
Cheng Zhao
6fe4653b54 Merge pull request #6354 from electron/package-json-bom
Use require to load package.json
2016-07-06 09:48:37 +09:00
Kevin Sawicki
b8e5180132 Use require to load package.json instead of fs/JSON 2016-07-05 15:50:12 -07:00
Heilig Benedek
6fb6b93003 speedup base 2016-07-05 21:33:22 +02:00
Cheng Zhao
437164deec Force linking with MeasureFormat of icu 2016-07-05 14:49:03 +09:00
Cheng Zhao
41b8dda071 For hidden window focus() should do nothing 2016-07-05 10:34:52 +09:00
Cheng Zhao
de502d8012 Initialize MaterialDesignController 2016-07-05 09:41:23 +09:00
Cheng Zhao
381689d3ed Fix building on Windows 2016-07-05 09:31:29 +09:00
Cheng Zhao
8d3e09747a directWrite option is removed 2016-07-05 09:20:57 +09:00
Cheng Zhao
d0719e9b4b Fix cpplint warnings 2016-07-04 19:19:20 +09:00
Cheng Zhao
6c2825c0c4 spec: Ignore cache when testing protocol module 2016-07-04 18:08:41 +09:00
Cheng Zhao
ea5c5d2680 Fix building on Linux 2016-07-04 16:41:18 +09:00
Cheng Zhao
0a6bb9c36a Fix crash when creating protocol module 2016-07-04 15:32:43 +09:00
Cheng Zhao
48f819f337 Do not use home cooked SkUserConfig.h 2016-07-04 15:32:43 +09:00
Cheng Zhao
1ba3907038 Update to API changes of Chrome 52 2016-07-04 15:32:43 +09:00
Cheng Zhao
eb378bef3a Upgrade to Chrome 52 2016-07-04 15:32:43 +09:00
Cheng Zhao
83ae14f2ed Merge pull request #6333 from electron/drag-item
Add `webContents.startDrag(item)` API
2016-07-04 13:30:56 +09:00
Cheng Zhao
23582cc9d3 Reduce the scope of ScopedNestableTaskAllower 2016-07-03 15:30:27 +09:00
Cheng Zhao
ba1fe322e9 docs: Use <a> as example 2016-07-03 15:27:26 +09:00
Cheng Zhao
b7459d50f9 docs: Dragging files out of the window 2016-07-03 15:26:22 +09:00
Cheng Zhao
f072d9dd3a docs: webContents.startDrag(item) 2016-07-03 15:10:59 +09:00
Cheng Zhao
7916f0ea18 win: Use drag_utils::CreateDragImageForFile 2016-07-03 14:44:47 +09:00
Cheng Zhao
63a8961ed1 views: Implement webContents.startDrag 2016-07-03 14:34:35 +09:00
Cheng Zhao
fa468a529b Support dragging multiple files 2016-07-03 13:58:31 +09:00
Cheng Zhao
13c668f22b mac: Implement webContents.startDrag 2016-07-03 12:26:43 +09:00
Cheng Zhao
74ebbf9c78 docs: Add trailing period 2016-07-02 20:27:14 +09:00
Cheng Zhao
ff5745f36f Merge pull request #6324 from MarshallOfSound/master
Document possible getLocale returns values.
2016-07-02 11:25:15 +00:00
Samuel Attard
7f914c65de Update docs to match style guide 2016-07-02 23:21:45 +12:00
Samuel Attard
bbaab9b355 Document possible getLocale returns values. Closes #5363 2016-07-02 21:17:37 +12:00
Cheng Zhao
14c4be50c1 Avoid calling GetWebContentsFromProcessID for twice 2016-07-02 16:54:12 +09:00
Cheng Zhao
b0faa62f76 Merge pull request #6313 from MarshallOfSound/silent-notification-when-muted
Override the Notification API constructor to create silent notificatons when the webContents is muted
2016-07-02 07:44:33 +00:00
Cheng Zhao
6eda76336f Merge pull request #6323 from electron/icon-fix
Set window icon before showing window
2016-07-02 07:41:30 +00:00
Cheng Zhao
e76ec92812 Set window icon before showing window 2016-07-02 16:16:47 +09:00
Cheng Zhao
6ffcb9f06c Merge pull request #6322 from electron/chrome-51.0.2704.106
Update to Chrome 51.0.2704.106
2016-07-02 07:12:23 +00:00
Cheng Zhao
cd38e5c85e Update to Chrome 51.0.2704.106 2016-07-02 13:54:34 +09:00
Cheng Zhao
ee0eb9ae08 Merge pull request #6309 from electron/app-launcher-rename
Implement app.setBadgeCount on Mac
2016-07-02 01:51:47 +00:00
Cheng Zhao
767124c45c Update for reviews 2016-07-02 10:36:46 +09:00
Samuel Attard
4f660f3e6f Implement WebContenstAudioMuted in AtomBrowserClient 2016-07-02 13:28:28 +12:00
Kevin Sawicki
5dcc354432 Merge pull request #6298 from jhen0409/patch-5
Support background.page in extension manifest
2016-07-01 08:59:39 -07:00
Kevin Sawicki
b47d0e3e58 Tweak launcher note text 2016-07-01 08:51:25 -07:00
Jhen
d4f64ce943 Use background page path instead of generated path
if extension use manifest.background.page
2016-07-01 23:50:31 +08:00
Cheng Zhao
df3e651fbf Merge pull request #6315 from electron/fix-extension-match
Don't use MatchesExtension for matching filters
2016-07-01 14:14:18 +00:00
Cheng Zhao
cff50614e5 Merge pull request #6314 from electron/suppress-session-protocol
spec: Suppress the session.protocol test
2016-07-01 13:56:48 +00:00
Cheng Zhao
431ea61ff8 Don't use MatchesExtension for matching filters
MatchesExtension compares double extensions like .tar.gz, which does not
match the filters.
2016-07-01 22:55:15 +09:00
Cheng Zhao
bb92765ecf spec: Suppress the session.protocol test 2016-07-01 22:24:30 +09:00
Cheng Zhao
1da2a1c2ae app.setBadgeCount should return boolean 2016-07-01 22:20:05 +09:00
Samuel Attard
54f06b0ba9 Override the Notification API constructor to create silent notifications when the webContents is muted 2016-07-01 23:26:40 +12:00
Cheng Zhao
f8ec377123 docs: app.setBadgeCount 2016-07-01 17:44:09 +09:00
Cheng Zhao
cb00d3cfb3 mac: Implement app.setBadgeCount 2016-07-01 17:39:26 +09:00
Cheng Zhao
36a0a491c9 Merge pull request #6216 from electron/class-docs
Add details to docs/styleguide.md
2016-07-01 05:34:01 +00:00
Cheng Zhao
3965440952 conjunctions don't have to be capitalized 2016-07-01 14:33:22 +09:00
Cheng Zhao
1626c3bf0a Use * instead of - for lists
`*` is used in most lists in our docs, let's keep consistency.
2016-07-01 14:30:55 +09:00
Cheng Zhao
83e9521d13 Update atom-shell-vs-node-webkit.md 2016-07-01 14:27:56 +09:00
Kevin Sawicki
0959143e2d Merge pull request #6294 from preco21/korean-docs-9
docs: Update Korean docs as upstream
2016-06-30 14:41:50 -07:00
Jhen
76f4bd01eb Support background.page in extension manifest 2016-06-30 16:04:13 +08:00
Plusb Preco
21f0e65735 📝 Update Korean docs as upstream
[ci skip]
2016-06-30 11:32:14 +09:00
Kevin Sawicki
511dceda4e Merge pull request #6225 from miniak/publish-pdb
Publish Windows PDBs to allow debugging without Symbol server
2016-06-29 16:54:26 -07:00
Kevin Sawicki
7279fc46bc Merge pull request #6280 from electron/pop-up-context-menu-windows
Use previously set context menu when popup menu is null
2016-06-29 13:00:10 -07:00
Kevin Sawicki
45dbbfdfe9 Use nullptr comparisons 2016-06-29 11:52:58 -07:00
Kevin Sawicki
e797eb5ca3 Use set context menu when param is not specified 2016-06-29 11:52:58 -07:00
Kevin Sawicki
6d7b52eceb Merge pull request #6243 from jnugh/master
Ubuntu Unity launcher counter badge
2016-06-29 11:45:19 -07:00
Jonas Schwabe
9aa8807f83 add specs for app.launcher api
fix linter errors
2016-06-29 20:28:16 +02:00
Kevin Sawicki
0991d2bf47 Merge pull request #6290 from electron/updated-apis-in-doc-translations
Update renamed nativeImage APIs in translated docs
2016-06-29 11:25:44 -07:00
Kevin Sawicki
90048abd0a Update renamed nativeImage APIs 2016-06-29 11:23:11 -07:00
Jonas Schwabe
768ff7af5a Add additional method isUnityRunning, fix multiple typos in docs 2016-06-29 20:22:17 +02:00
Jonas Schwabe
8ac205685d Add ifdef for property, which should only be availabe on Linux 2016-06-29 20:22:17 +02:00
Jonas Schwabe
e2d389fbd4 Rename the unityLauncher api to launcher and make it available on linux in general. + Document it only works on ubuntu 2016-06-29 20:22:17 +02:00
Jonas Schwabe
336a55cb23 📝 docs for unity launcher badge api 2016-06-29 20:22:17 +02:00
Jonas Schwabe
e3ba6818af Fix linter errors 2016-06-29 20:22:17 +02:00
Jonas Schwabe
b22ce93477 Implement libunity launcher badge counter to be set via electron, fixes #4193 2016-06-29 20:22:17 +02:00
Kevin Sawicki
90ea0a365c Merge pull request #6289 from electron/lint-specs
Remove standard linter warnings from specs
2016-06-29 11:14:53 -07:00
Plusb Preco
4a40369b6d 📝 Update Korean docs as upstream
[ci skip]
2016-06-30 02:50:41 +09:00
Kevin Sawicki
03497fb984 Update buffer length asserts 2016-06-29 09:46:16 -07:00
Kevin Sawicki
8b35814d10 🎨 2016-06-29 09:46:16 -07:00
Kevin Sawicki
197ec98800 Remove standard linter warnings 2016-06-29 09:46:16 -07:00
Kevin Sawicki
4afa32a7bb Add WebInspector as global 2016-06-29 09:46:16 -07:00
Kevin Sawicki
9922261f9e Set browser env in specs 2016-06-29 09:46:16 -07:00
Kevin Sawicki
e94c066c03 change into spec directory before running standard 2016-06-29 09:46:15 -07:00
Kevin Sawicki
3090d1f85e Upgrade to standard 7.1.2+ 2016-06-29 09:46:15 -07:00
Kevin Sawicki
cde1254e29 Merge pull request #6282 from electron/cookie-set-failed-message
Mention setting cookie in failure message
2016-06-29 09:46:02 -07:00
Kevin Sawicki
8c52279531 Tweak cookie set failure message and add spec 2016-06-29 08:53:52 -07:00
Kevin Sawicki
2cf0843f82 Merge pull request #6281 from electron/cookies-http-only
Update key to be httpOnly instead of session
2016-06-29 08:46:37 -07:00
Kevin Sawicki
5b8c4f55e7 Update key to be httpOnly instead of session 2016-06-29 08:39:20 -07:00
Kevin Sawicki
42fe27b25b Merge pull request #6288 from thompsonemerson/patch-4
word correction
2016-06-29 08:15:34 -07:00
Milan Burda
43eba3dada Publish Windows PDBs to allow debugging without Symbol server 2016-06-29 16:58:56 +02:00
Emerson Thompson
68ef327c81 word correction 2016-06-29 11:15:52 -03:00
Plusb Preco
b73d90094f 📝 Update Korean docs as upstream
[ci skip]
2016-06-29 22:34:51 +09:00
Kevin Sawicki
8155e71925 Merge pull request #6279 from electron/chrome-storage-return
Always call chrome.storage.*.get callback
2016-06-28 14:47:32 -07:00
Kevin Sawicki
d2d11ce8bd Invoke callback instead of returning 2016-06-28 13:04:59 -07:00
Kevin Sawicki
2fe83bc5f0 Add failing spec for no specified storage keys 2016-06-28 13:01:51 -07:00
Kevin Sawicki
6081cba15d Merge pull request #6269 from Draivin/master
Add chrome.storage.local
2016-06-28 12:44:45 -07:00
Kevin Sawicki
49bec9165c Merge pull request #6278 from electron/ico-native-image-crash
Fix nativeImage.createFromPath for non-existent .ico
2016-06-28 12:41:48 -07:00
Kevin Sawicki
14df90fd19 Add spec for valid .ico file 2016-06-28 12:17:05 -07:00
Kevin Sawicki
8fb86e10fc Add assert for non-existent .ico 2016-06-28 12:17:05 -07:00
Milan Burda
a886261518 Fix crash in ReadImageSkiaFromICO when CreateSkBitmapFromHICON fails 2016-06-28 12:17:05 -07:00
Daniel Pham
a47e30dd82 Merge pull request #6274 from thompsonemerson/patch-3
word correction
2016-06-28 09:43:29 -04:00
Daniel Pham
3dbe4a5c71 Merge pull request #6272 from thompsonemerson/patch-1
link correction
2016-06-28 09:43:06 -04:00
Daniel Pham
509fd3948c Merge pull request #6273 from thompsonemerson/patch-2
link to the translation
2016-06-28 09:40:47 -04:00
Emerson Thompson
1551a96223 word correction 2016-06-28 09:43:10 -03:00
Emerson Thompson
8faf2f10e1 link to the translation 2016-06-28 09:38:02 -03:00
Emerson Thompson
918f25b76c link correction 2016-06-28 09:22:53 -03:00
Ian Ornelas
d6ab353438 Add chrome.storage.local 2016-06-28 07:21:03 -03:00
Kevin Sawicki
b38eef066e Merge pull request #6266 from thompsonemerson/patch-3
Translated: power-monitor.md
2016-06-27 16:58:42 -07:00
Emerson Thompson
393829b674 Translated: power-monitor.md 2016-06-27 20:48:58 -03:00
Kevin Sawicki
4d910618d0 Merge pull request #6265 from thompsonemerson/patch-2
broken link (404)
2016-06-27 16:28:07 -07:00
Kevin Sawicki
739334f521 Merge pull request #6263 from thompsonemerson/patch-1
Portuguese error - word "atualização"
2016-06-27 16:27:49 -07:00
Emerson Thompson
3da41e03aa broken link (404)
Broken link (404) to DesktopCapturer
2016-06-27 20:27:09 -03:00
Emerson Thompson
e457207b20 Portuguese error 2016-06-27 20:19:46 -03:00
Cheng Zhao
4e747b56b0 Update docs-translations/zh-CN/api/shell.md
Close #6099.
2016-06-26 13:36:05 +09:00
Cheng Zhao
7d38384bdd Merge pull request #6244 from electron/frame-subscription-cleanup
Cleanup code of beginFrameSubscription
2016-06-26 04:27:06 +00:00
Cheng Zhao
090c8b89bb spec: Make beginFrameSubscription test more reliable 2016-06-26 11:53:58 +09:00
Cheng Zhao
e1ad64013e Cleanup code of beginFrameSubscription 2016-06-26 11:46:40 +09:00
Cheng Zhao
3d2ad0080d Merge pull request #6164 from MaxWhere/master
beginFrameSubscription bugfix and improvement
2016-06-26 02:39:59 +00:00
Cheng Zhao
dd7cf3d7b1 Merge pull request #6238 from fdelayen/click-top-level-menu
Execute click handlers for top level menu items
2016-06-26 01:59:31 +00:00
Heilig Benedek
5118def724 damaged -> dirty rename, fixed misc issues, changed signature, updated docs and added tests 2016-06-25 18:23:40 +02:00
Florent Delayen
4d55175649 Execute click handlers for top level menu items 2016-06-25 16:51:43 +02:00
Cheng Zhao
04b30afbed Merge pull request #6233 from electron/clipboard-bookmark-support
Add support for reading/writing bookmarks from the clipboard
2016-06-25 05:23:32 +00:00
Cheng Zhao
8a4c8eb305 Merge pull request #6226 from miniak/fix-uninitialized-member-var
Fix uninitialized member variable in CrashReporterWin
2016-06-25 01:18:19 +00:00
Kevin Sawicki
f90ef12814 read/writeBookmark is not implemented on Linux 2016-06-24 17:16:38 -07:00
Zeke Sikelianos
aee111bf2f minor wording changes and tweaks 2016-06-24 15:59:30 -07:00
Kevin Sawicki
9479536bb8 Tweak return value description 2016-06-24 15:35:30 -07:00
Kevin Sawicki
5fbba2d27b Add assertions for no available bookmark 2016-06-24 15:32:52 -07:00
Kevin Sawicki
6588b85ac9 Mention empty strings 2016-06-24 15:31:15 -07:00
Kevin Sawicki
30a628b46f Remove unsupported type 2016-06-24 15:29:39 -07:00
Kevin Sawicki
a2ba778adc Document clipboard bookmark support 2016-06-24 15:20:49 -07:00
Kevin Sawicki
9fab641ecb Add missing rtf key 2016-06-24 15:17:31 -07:00
Kevin Sawicki
e802d0e4a0 Add bookmark key to clipboard.write 2016-06-24 15:14:28 -07:00
Kevin Sawicki
358bf1bf69 Add read/writeBookmark spec 2016-06-24 15:10:32 -07:00
Kevin Sawicki
271808b278 Support reading/writing bookmarks to clipboard 2016-06-24 15:08:12 -07:00
Kevin Sawicki
63e2ee8e10 Add link to Boolean 2016-06-24 12:45:22 -07:00
Kevin Sawicki
47504c5a53 Use more lists 2016-06-24 12:40:55 -07:00
Kevin Sawicki
5dd7bf67e7 Minor formatting and wording tweaks 2016-06-24 12:28:41 -07:00
Milan Burda
dfc2f3f0c6 Fix uninitialized member variable in CrashReporterWin 2016-06-24 18:30:38 +02:00
Zeke Sikelianos
6ea59803a8 Merge pull request #6221 from SudarAbisheck/master
Update quick-start.md
2016-06-23 23:08:23 -07:00
Cheng Zhao
0c53317eea Merge pull request #6220 from electron/promise-in-main-process
Handle v8::MicrotasksScope in the main process
2016-06-24 06:07:28 +00:00
Sudar Abisheck
0e1caa5961 Update quick-start.md
Corrected the anchor text
2016-06-24 11:29:55 +05:30
Cheng Zhao
ee28f4fc32 Handle v8::MicrotasksScope in the main process 2016-06-24 14:45:31 +09:00
Cheng Zhao
5826a8f9a9 Merge pull request #6218 from electron/clean-up-callback-id
Remove callbackId when callback is removed from registry
2016-06-24 03:17:46 +00:00
Cheng Zhao
f792b6c752 Remove callbackId when callback is removed from registry 2016-06-24 11:22:48 +09:00
Cheng Zhao
38592aaef7 Add details to docs/styleguide.md 2016-06-24 10:45:37 +09:00
Cheng Zhao
552c9b7f0a Merge pull request #6213 from electron/reset-search-paths
Reuse node's implementation of Module._nodeModulePaths
2016-06-24 00:26:33 +00:00
Cheng Zhao
eb55fba9f4 Merge pull request #6211 from electron/debugging-main-process-docs
Update debugging main process docs
2016-06-24 00:25:26 +00:00
Cheng Zhao
fa023842d3 Merge pull request #6111 from electron/docs-formatting
Docs formatting
2016-06-24 00:24:57 +00:00
Kevin Sawicki
bac4d51169 Reuse root path variable 2016-06-23 15:56:29 -07:00
Kevin Sawicki
905e9e9645 Include trailing separator in comparisons 2016-06-23 15:45:08 -07:00
Kevin Sawicki
c6906deef2 Add failing spec for trailing separator bug 2016-06-23 15:39:21 -07:00
Kevin Sawicki
b273b70eee Filter existing search paths instead reimplementing 2016-06-23 15:27:45 -07:00
Kevin Sawicki
eed240be1c Add specs for Module._nodeModulesPath 2016-06-23 15:20:14 -07:00
Kevin Sawicki
adc8c54a81 Minor formatting updates 2016-06-23 14:23:34 -07:00
Kevin Sawicki
eb8c1b1a50 Make update number message a note 2016-06-23 14:20:52 -07:00
Kevin Sawicki
5e389021eb Use upstream node-pre-gyp 2016-06-23 14:19:23 -07:00
Zeke Sikelianos
3dcbbe9f20 remove parens from type 2016-06-23 14:13:03 -07:00
Zeke Sikelianos
cfebf7aa6b fix list indentation 2016-06-23 10:36:16 -07:00
Cheng Zhao
d959ccb47c Merge pull request #6201 from electron/did-fail-load
Do not emit did-fail-load for canceled requests
2016-06-23 11:55:39 +00:00
Cheng Zhao
ed6213e951 Do not emit did-fail-load for canceled requests 2016-06-23 20:32:19 +09:00
Cheng Zhao
a00c5e3363 Bump v1.2.5 2016-06-23 14:37:58 +09:00
Cheng Zhao
e70c622a70 Merge pull request #6190 from electron/default-label-and-accelerator
Add default label and accelerator for menu item roles
2016-06-23 05:34:10 +00:00
Cheng Zhao
19d8a366b3 Merge pull request #6180 from jhen0409/patch-4
Fix chrome.runtime.sendMessage
2016-06-23 04:58:30 +00:00
Cheng Zhao
6aef8f4fea Merge pull request #6197 from electron/fix-api-call-yosemite
mac: Avoid calling setTitleVisibility for OS X 10.9
2016-06-23 04:49:11 +00:00
Cheng Zhao
d313639bbb Merge pull request #6198 from electron/fix-session-protocol-test
Split the session.protocol test into multiple tests
2016-06-23 04:49:06 +00:00
Cheng Zhao
2893974c05 spec: Set mimeType for protocol's handler 2016-06-23 13:29:18 +09:00
Cheng Zhao
a04c0ce196 spec: Split the session.protocol test into multiple tests 2016-06-23 13:16:53 +09:00
Cheng Zhao
71ab69314c spec: Put protocol registration in beforeEach 2016-06-23 13:11:19 +09:00
Cheng Zhao
6cfd078d19 Merge pull request #6174 from electron/session-docs-cleanup
docs: Separate Cookies and WebRequest classes in session.md
2016-06-23 04:05:18 +00:00
Cheng Zhao
7f3a296050 mac: Avoid calling setTitleVisibility for OS X 10.9 2016-06-23 13:00:14 +09:00
Cheng Zhao
74a2b77359 Merge pull request #6195 from electron/eagerly-require-protocol
Eagerly require protocol
2016-06-23 03:31:26 +00:00
Cheng Zhao
75972abc84 Merge pull request #6192 from electron/native-image-api-names
Upper case initialisms in nativeImage API
2016-06-23 03:06:42 +00:00
Cheng Zhao
7fa4a7889b Update brightray for #6178 2016-06-23 12:05:10 +09:00
Kevin Sawicki
5a122b5ea0 Eagerly require protocol 2016-06-22 18:51:39 -07:00
Kevin Sawicki
c686997209 Ctrl -> Control for consistency 2016-06-22 16:56:45 -07:00
Jhen
233355ed09 Fix chrome.runtime.sendMessage
add a case of not provide extension-id: (message, responseCallback)
2016-06-23 07:40:15 +08:00
Cheng Zhao
293a1edc35 Merge pull request #6183 from joshaber/patch-1
Update external frameworks version
2016-06-22 23:33:30 +00:00
Kevin Sawicki
e9222583cb toPng/toJpeg -> toPNG/toJPEG 2016-06-22 15:47:42 -07:00
Kevin Sawicki
813e528350 Update expected accelerator 2016-06-22 15:41:45 -07:00
Kevin Sawicki
6165908ba7 Incorporate review feedback 2016-06-22 15:26:17 -07:00
Kevin Sawicki
be642612c0 Export app before requiring modules 2016-06-22 15:21:45 -07:00
Kevin Sawicki
4dbdcad05e Remove label/accelerators with role defaults 2016-06-22 14:37:16 -07:00
Kevin Sawicki
b7afe44a5c Add assert for role with app name in label 2016-06-22 14:22:15 -07:00
Kevin Sawicki
ece319a687 🎨 2016-06-22 14:14:32 -07:00
Kevin Sawicki
58c1d38c96 Remove lint errors 2016-06-22 14:13:12 -07:00
Kevin Sawicki
c98f419bc8 Doc role defaults 2016-06-22 14:10:44 -07:00
Kevin Sawicki
5096d7835f Add spec for default role label/accelerator 2016-06-22 14:07:46 -07:00
Kevin Sawicki
c6dc6a8905 Specify focused window to execute call 2016-06-22 14:02:31 -07:00
Kevin Sawicki
30e3a6ed83 Add app require 2016-06-22 13:59:49 -07:00
Kevin Sawicki
66f2fb2fe4 Add execute helper to roles file 2016-06-22 13:48:26 -07:00
Kevin Sawicki
653370974a 🎨 Sort roles alphabetically 2016-06-22 13:15:20 -07:00
Kevin Sawicki
c0562d16d5 Add more role defaults 2016-06-22 13:09:49 -07:00
Kevin Sawicki
888068b597 Add default help/window labels 2016-06-22 13:09:49 -07:00
Kevin Sawicki
566a407b36 Use default labels and accelerators 2016-06-22 13:09:49 -07:00
Kevin Sawicki
13a6d32ee9 Add default label/accelerator to role menu items 2016-06-22 13:09:48 -07:00
Kevin Sawicki
25b2724ab9 Add menu item role defaults 2016-06-22 13:09:48 -07:00
Kevin Sawicki
56b3478760 Merge pull request #6184 from electron/read-only-command-id
Make MenuItem.commandId read only
2016-06-22 13:09:16 -07:00
Kevin Sawicki
ad110fc806 Make commandId a read only property 2016-06-22 10:07:02 -07:00
Kevin Sawicki
90600ba653 Add failing spec for writeable command id 2016-06-22 10:06:54 -07:00
Josh Abernathy
bd74412501 Update external frameworks version
Bump to [1.1.0](https://github.com/electron/electron-frameworks/releases/tag/v1.1.0) which upgraded Squirrel.Mac.
2016-06-22 13:00:31 -04:00
Kevin Sawicki
c6db5f6baa Merge pull request #6182 from electron/format-menu-item
Reformat MenuItem class
2016-06-22 10:00:01 -07:00
Kevin Sawicki
50a62429e4 Add back event param 2016-06-22 09:35:11 -07:00
Kevin Sawicki
4e8d4dfda9 Move click variable near this.click 2016-06-22 09:21:46 -07:00
Kevin Sawicki
38e1abc599 🎨 Destructure requires 2016-06-22 09:21:46 -07:00
Kevin Sawicki
51b8c0292c Add spec for submenu type with no submenu 2016-06-22 09:21:46 -07:00
Kevin Sawicki
93cbe6539f Add spec for invalid menu item type 2016-06-22 09:21:46 -07:00
Kevin Sawicki
ca57f8a391 Remove CoffeeScript class wrapper 2016-06-22 09:21:46 -07:00
Cheng Zhao
7274c69bc6 Merge pull request #6175 from miniak/content-protection
Add BrowserWindow.prototype.setContentProtection(enable)
2016-06-22 11:25:49 +00:00
Cheng Zhao
86e98950cc Merge pull request #6173 from arifcakiroglu/patch-1
Update README.md
2016-06-22 10:31:36 +00:00
Milan Burda
c243cf0c0f Add BrowserWindow.prototype.setContentProtection(enable) 2016-06-22 10:40:33 +02:00
Arif Çakıroğlu
7e7c085dc7 Update README.md 2016-06-22 11:02:14 +03:00
Cheng Zhao
1a74177e2d docs: Separate Cookies and WebRequest classes in session.md 2016-06-22 16:34:58 +09:00
Cheng Zhao
fd40f3d344 Merge pull request #6172 from electron/session-setuseragent
Add Session.setUserAgent(userAgent[, acceptLanguages]) API
2016-06-22 07:34:10 +00:00
Arif Çakıroğlu
5a702e0153 Update README.md
add `electron-tr` community
2016-06-22 10:11:13 +03:00
Cheng Zhao
6f9c4766fc Fix usages of global BrowserContext in App::ImportCertificate 2016-06-22 16:10:36 +09:00
Cheng Zhao
6b1df5838c docs: ses.setUserAgent(userAgent[, acceptLanguages]) 2016-06-22 16:05:38 +09:00
Cheng Zhao
01bc8305f8 Add ses.getUserAgent()/setUserAgent(...) APIs 2016-06-22 15:57:51 +09:00
Cheng Zhao
9c8e64f268 Cache the BrowserContext::GetUserAgent 2016-06-22 15:46:46 +09:00
Cheng Zhao
b0f04de50c Do not force creating default session in C++ 2016-06-22 15:41:56 +09:00
Zeke Sikelianos
271c39ceb3 OS X → macOS 2016-06-21 23:02:01 -07:00
Zeke Sikelianos
72403c1a8d use consistent verb style 2016-06-21 22:56:51 -07:00
Zeke Sikelianos
90d1b9169f prepositions are hard 2016-06-21 22:55:26 -07:00
Zeke Sikelianos
2a079b2e0a wether → whether 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
46c1ef60aa restore headings in translated session docs 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
0ff50650d2 document drop-files event type 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
574e8974b6 undo heading changes to special-case session 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
a82a2485d7 fix debugger event headings 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
49fd3ff41b document platform-specific arguments 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
74e0535659 use unformatted raw code examples in styleguide 2016-06-21 22:54:43 -07:00
Zeke Sikelianos
0d481aaeb8 📝 use h3 headings for events and methods, per the styleguide 2016-06-21 22:54:43 -07:00
Cheng Zhao
40c195cf5c Merge pull request #6171 from electron/maximize/minimize
mac: Fix maximize/unmaximize event emitted before window is maximized
2016-06-22 05:26:27 +00:00
Cheng Zhao
8ffd069689 mac: Fix maximize/unmaximize event emitted before window is maximized 2016-06-22 14:06:54 +09:00
Cheng Zhao
a5976055bf Merge pull request #6170 from electron/click-event
Add "event" parameter for "click" handler of MenuItem
2016-06-22 05:06:25 +00:00
Cheng Zhao
90b64504fc spec: Fix failing tests of Menu 2016-06-22 13:36:10 +09:00
Cheng Zhao
62d0dbea5a docs: Reformat the menu-item.md 2016-06-22 13:23:07 +09:00
Cheng Zhao
8d08e215b2 Add "event" parameter for "click" handler of MenuItem 2016-06-22 11:22:14 +09:00
Cheng Zhao
e6327fb015 Add EventEmitter::CreateEventFromFlags 2016-06-22 11:00:45 +09:00
Cheng Zhao
08a1e92650 Bump v1.2.4 2016-06-22 10:26:54 +09:00
Cheng Zhao
4e811fc377 Merge pull request #6169 from electron/map-roles-by-command-id
Map roles by command id instead of index
2016-06-22 01:24:20 +00:00
Cheng Zhao
c0aebc9d4f Merge pull request #6168 from electron/forward-delete
Support forward delete menu item accelerator
2016-06-22 01:12:10 +00:00
Cheng Zhao
85c163e58a Merge pull request #6166 from electron/fullscreen-role
Add togglefullscreen menu item role
2016-06-22 00:58:39 +00:00
Kevin Sawicki
812dea9a8b Add comment about map key/values 2016-06-21 15:28:02 -07:00
Kevin Sawicki
583cc925ac Map roles by command id 2016-06-21 15:25:14 -07:00
Kevin Sawicki
9486df1303 Add delete accelerator to delete menu 2016-06-21 12:38:44 -07:00
Kevin Sawicki
738edb650d Make NSDeleteFunctionKey to NSDeleteCharacter 2016-06-21 12:33:02 -07:00
Kevin Sawicki
3505e98a46 Access function in methodInBrowserWindow 2016-06-21 10:08:30 -07:00
Kevin Sawicki
35097b244e Doc togglefullscreen menu item role 2016-06-21 09:43:29 -07:00
Kevin Sawicki
dcd832e88c 🎨 2016-06-21 09:38:35 -07:00
Kevin Sawicki
3cdf36c536 Use togglefullscreen role 2016-06-21 09:34:41 -07:00
Kevin Sawicki
2536e62fb0 Add togglefullscreen role selector 2016-06-21 09:34:29 -07:00
Kevin Sawicki
e3e1ed41ca Add togglefullscreen role 2016-06-21 09:31:17 -07:00
Kevin Sawicki
59ff3dc2f3 Merge pull request #6154 from electron/quit-role
Add quit menu item role
2016-06-21 09:20:22 -07:00
Kevin Sawicki
fbfac6d49b Fix lint errors 2016-06-21 09:08:13 -07:00
Kevin Sawicki
395c372702 Document quit role 2016-06-21 09:08:13 -07:00
Kevin Sawicki
32ea5a5e27 Remove CoffeeScript ref variables 2016-06-21 09:08:13 -07:00
Kevin Sawicki
2d8ec60eed Use const/let instead of var 2016-06-21 09:08:13 -07:00
Kevin Sawicki
11ba7eaa91 Add File > Exit menu on Windows 2016-06-21 09:08:13 -07:00
Kevin Sawicki
7a6436014e Use quit role 2016-06-21 09:08:13 -07:00
Kevin Sawicki
67f7b4d4c5 Map quit role to terminate selector 2016-06-21 09:08:13 -07:00
Kevin Sawicki
a16d907684 Add quit role 2016-06-21 09:08:12 -07:00
Heilig Benedek
3c92825e2a Fix init list order 2016-06-21 14:32:22 +02:00
Heilig Benedek
712141f153 Updated docs for beginFrameSubscription 2016-06-21 13:35:30 +02:00
Cheng Zhao
f45e6c6c38 Merge pull request #6161 from electron/refresh-menu-bar-color
Update menubar color when theme changes
2016-06-21 09:34:55 +00:00
Cheng Zhao
aca37c8974 Update menubar color when theme changes 2016-06-21 18:05:01 +09:00
Cheng Zhao
816b2ea8f2 linux: Disable parent window when showing modal dialogs (#6160) 2016-06-21 08:54:55 +00:00
Cheng Zhao
00f5fa440d Merge pull request #6159 from electron/tray-get-bounds 2016-06-21 16:38:03 +09:00
Cheng Zhao
9d63199c37 docs: Make tray.md follow docs style guide 2016-06-21 16:20:33 +09:00
Cheng Zhao
11f242a241 docs: Tray.getBounds() 2016-06-21 16:13:50 +09:00
Cheng Zhao
324153d394 win: Use DIP rect for tray icon's bounds 2016-06-21 16:05:28 +09:00
Cheng Zhao
886ef1717c win: Implement tray.getBounds() API 2016-06-21 15:49:22 +09:00
Cheng Zhao
db98e256f2 mac: Add tray.getBounds() API 2016-06-21 15:40:30 +09:00
Cheng Zhao
9993aab5b1 Update brightray for electron/brightray#228 2016-06-21 12:24:25 +09:00
Kevin Sawicki
8a9f2261d0 Add default error handler to remote promises (#6151)
* Add failing spec for unhandled main process exception

* Remove unused return

* Use let/const instead of var

* Add spec for unhandled rejection in renderer process

* Prevent unhandled rejection defaul

* Use once instead of on

* Add default fulfilled/rejection handler to promise
2016-06-21 00:54:15 +00:00
Charlie Hess
74321dce74 Add systemPreferences.subscribeLocalNotification. (#6150) 2016-06-21 00:48:42 +00:00
Heilig Benedek
3529f8a40a Frame subscriber bugfix + added only_damaged option 2016-06-21 02:42:00 +02:00
Heilig Benedek
a35915ee9f Merge pull request #11 from electron/master
update as upstream
2016-06-21 00:08:48 +02:00
Cheng Zhao
1837a938a1 Merge pull request #6147 from electron/open-item-in-folder
mac: Convert path to absolute path in ShowItemInFolder
2016-06-20 13:03:16 +00:00
Cheng Zhao
c9d5c4e45c mac: Convert path to absolute path in ShowItemInFolder 2016-06-20 21:14:17 +09:00
Cheng Zhao
b87cf3771b Merge pull request #6145 from electron/app-indicator-id
Use fixed ID for app indicators
2016-06-20 08:50:16 +00:00
Cheng Zhao
5e459b057e Use fixed ID for app indicators 2016-06-20 17:35:45 +09:00
Cheng Zhao
6bd1a2dec6 Merge pull request #6144 from electron/crash-release-renderer
Avoid calling Environment::GetCurrent for unjected contexts
2016-06-20 08:09:42 +00:00
Cheng Zhao
a3dd6c635f Avoid calling Environment::GetCurrent for unjected contexts
It seems to cause crashes when it is called for contexts that do not
have node integrations.
2016-06-20 16:51:42 +09:00
Cheng Zhao
3428874907 Merge pull request #6140 from electron/parent
Add support for child windows
2016-06-20 07:27:05 +00:00
Cheng Zhao
f7a9b1ae04 docs: modal window is greatly simplified 2016-06-20 16:00:38 +09:00
Cheng Zhao
5674e8d114 Only define enable/disable API for views 2016-06-20 15:44:50 +09:00
Cheng Zhao
e33e4be257 macOS: Use sheet window as modal window 2016-06-20 14:49:24 +09:00
Cheng Zhao
1866dbe608 Move disable counter to NativeWindow from api::Window 2016-06-20 11:48:46 +09:00
Cheng Zhao
946d246aea docs: Parent and child windows 2016-06-20 11:21:34 +09:00
Cheng Zhao
02acce8991 linux: Make modal dialog show more smoothly 2016-06-20 11:16:41 +09:00
Cheng Zhao
9aa7291627 linux: Implement win.disable/enable/isEnabled() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
074903ca33 Do not emit "unresponsive" when there is modal dialog 2016-06-20 11:16:41 +09:00
Cheng Zhao
f4bec78ccb linux: Implement win.setParentWindow(parent) 2016-06-20 11:16:41 +09:00
Cheng Zhao
4c3c4437da win: Implement win.disable/enable/isEnabled() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
a6c4bf098b spec: Avoid calling setParentWindow for unrelated tests 2016-06-20 11:16:41 +09:00
Cheng Zhao
85ba382027 Add "parent" option for BrowserWindow 2016-06-20 11:16:41 +09:00
Cheng Zhao
473413e874 views: Initial implementation of win.setParentWindow(parent)
But it doesn't work, aparrently Chromium doesn't support changing
parent window dynamically on desktop.
2016-06-20 11:16:41 +09:00
Cheng Zhao
f2cbd7cb36 mac: Add win.beginSheet(sheet)/endSheet(sheet) API 2016-06-20 11:16:41 +09:00
Cheng Zhao
2c5f4aadfb spec: Test cases for win.setModal(modal) 2016-06-20 11:16:41 +09:00
Cheng Zhao
1104dded24 Handle multiple modal windows correctly 2016-06-20 11:16:41 +09:00
Cheng Zhao
3f34f80433 Add win.setModal(modal) API 2016-06-20 11:16:41 +09:00
Cheng Zhao
1a4b4a65c9 mac: Add win.disable/enable/isEnabled() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
214dd97165 spec: Test cases for parent window 2016-06-20 11:16:41 +09:00
Cheng Zhao
6cef29e4ee Add win.getChildWindows() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
22513efd55 Add win.getParentWindow() API 2016-06-20 11:16:41 +09:00
Cheng Zhao
fb7e7b315c mac: Close all child windows before closing current window 2016-06-20 11:16:41 +09:00
Cheng Zhao
fd42e3dc84 mac: Add win.setParentWindow(parent) API 2016-06-20 11:16:41 +09:00
Cheng Zhao
e4d30ccfc3 spec: Suppress isCI test on CI 2016-06-20 11:16:17 +09:00
Cheng Zhao
a87fe61f3a Merge branch 'preco21-korean-docs-8' 2016-06-20 09:48:25 +09:00
Cheng Zhao
c44a6ad8b8 Merge pull request #6135 from blainesch/patch-1
Add copy/pasta example for system preferences.
2016-06-20 00:34:40 +00:00
Cheng Zhao
b4232d9230 Merge pull request #6128 from gerhardberger/webview-size-issue
Fixes transformed webview size
2016-06-20 00:13:30 +00:00
Plusb Preco
08782e319a 📝 Update Korean docs as upstream
[ci skip]
2016-06-20 03:23:36 +09:00
Plusb Preco
4c5fd1bf14 📝 Update Korean docs as upstream
[ci skip]
2016-06-20 02:18:51 +09:00
Machisté N. Quintana
786863a88f Merge pull request #6136 from MarshallOfSound/master
Fix typo in DevTools Extensions tutorial
2016-06-19 09:56:22 -07:00
Samuel Attard
ea38916c27 Fix typo in DevTools Extensions tutorial 2016-06-20 02:24:00 +10:00
Blaine Schmeisser
c75f3a8b5e Add copy/pasta example for system preferences.
Most of the other api docs have one example of where to find the module in a copy/paste format. This pull request adds one for the system preferences.
2016-06-19 08:53:34 -07:00
Cheng Zhao
c4c768ea8c Merge pull request #6134 from electron/chrome-51.0.2704.103
Update to Chrome 51.0.2704.103
2016-06-19 12:32:56 +00:00
Cheng Zhao
b74522d9f3 Merge pull request #6130 from rahatarmanahmed/fix-renderer-stdout
🐛 Don't load 'repl' unless needed
2016-06-19 12:32:06 +00:00
Cheng Zhao
ce2199d96a Update to Chrome 51.0.2704.103 2016-06-19 21:09:29 +09:00
Cheng Zhao
6d6f0cae62 Pyhton => Python, close #6126 2016-06-19 20:55:26 +09:00
Cheng Zhao
6f4899bd94 Merge pull request #6068 from electron/redispatch-events
Redispatch events to handle native OSX shortcuts
2016-06-19 11:22:02 +00:00
Cheng Zhao
d3bf400d56 Use class extension to avoid type conversion 2016-06-19 20:16:19 +09:00
Cheng Zhao
31d619f748 Merge pull request #6115 from electron/load-extension-when-added
Call loadExtension from addDevToolsExtension
2016-06-19 10:55:45 +00:00
Cheng Zhao
78193a0608 Merge pull request #6125 from leo/master
Replace "Mac OS" and "OS X" with "macOS"
2016-06-19 10:53:43 +00:00
Cheng Zhao
7c2c0ce709 Merge pull request #6105 from zephyrzoom/master
Update electron-faq.md
2016-06-19 10:11:32 +00:00
Rahat Ahmed
3c7c584444 🐛 Don't load 'repl' unless needed
Git bisect revealed that process.stdout failed to initiate (and was replaced with a write stream that does nothing) when the 'repl' module was loaded. This commit moves `require('repl')` so that it is only loaded when the --interactive flag is present.

Fixes #5051
2016-06-19 02:34:48 -05:00
gellert
3d010a8988 fixes transformed webview size 2016-06-19 00:41:42 +02:00
Leonard Lamprecht
511bf83fe7 Improved wording 2016-06-18 15:28:22 +02:00
Leonard Lamprecht
67dd19ed0f Replace OS X and Mac OS with macOS 2016-06-18 15:26:26 +02:00
Kevin Sawicki
754c4654d4 Add back window check 2016-06-17 16:23:54 -07:00
Kevin Sawicki
52350b5e35 Merge pull request #6116 from electron/extensions-app-ready
Mark which APIs are unavailable before app ready
2016-06-17 15:11:10 -07:00
Kevin Sawicki
6709e3c338 Mark which APIs are unavailable before app ready 2016-06-17 15:06:59 -07:00
Kevin Sawicki
df22082110 Call loadExtension from addDevToolsExtension 2016-06-17 14:53:51 -07:00
Kevin Sawicki
9afff89748 Merge pull request #6110 from electron/dan/iss6109
Fix context menus selecting first item by default.
2016-06-17 14:06:09 -07:00
Daniel Pham
a8a6f6f856 🍎 Fix context menus selecting first item by default. 2016-06-17 17:03:15 -04:00
Kevin Sawicki
c9fdd52f7e Upgrade brightray 2016-06-17 11:38:39 -07:00
Kevin Sawicki
13e554ab11 🎨 2016-06-17 11:32:56 -07:00
Kevin Sawicki
711c3abaeb Remove isKindOfClass check 2016-06-17 11:13:28 -07:00
Kevin Sawicki
0e65977a3c Use EventDispatchingWindow from brightray 2016-06-17 11:11:50 -07:00
Kevin Sawicki
3bc4f188ef Handle redispatch in devtools undocked windows 2016-06-17 10:27:53 -07:00
Kevin Sawicki
e0f06d582d Remove unneeded method declaration 2016-06-17 10:02:35 -07:00
Kevin Sawicki
1e73d48198 🎨 2016-06-17 09:13:00 -07:00
Kevin Sawicki
02abda4be8 Use isKindOfClass 2016-06-17 09:13:00 -07:00
Kevin Sawicki
b80f20912f Remove unused property 2016-06-17 09:12:59 -07:00
Kevin Sawicki
1762599df0 Remove unused variable 2016-06-17 09:12:59 -07:00
Kevin Sawicki
a2bbfea9e0 Redispatch events to handle native shortcuts 2016-06-17 09:12:59 -07:00
Kevin Sawicki
785ae8daef Merge pull request #6106 from mjudd/master
📝 Fix minor text issues.
2016-06-17 08:58:16 -07:00
Mark Judd
bf6133d61f 📝 Fix minor text issues. 2016-06-17 11:45:12 -04:00
707
ab41965124 Update electron-faq.md 2016-06-17 23:00:26 +08:00
Cheng Zhao
66fe1e48e8 Merge pull request #6095 from electron/protocol-ready-bug
Setup protocol after ready has already fired
2016-06-17 03:40:46 +00:00
Cheng Zhao
57ed682e34 Merge pull request #6091 from electron/icon-progress-crash
Fix crash setting progress after setting dock icon
2016-06-17 03:29:49 +00:00
Cheng Zhao
9a22aba308 Merge pull request #6090 from electron/web-navigation-api
Add webNavigation APIs to background pages
2016-06-17 03:21:16 +00:00
Cheng Zhao
0ccf49f7b8 Merge pull request #6097 from electron/should-set-tittle
Use the setTitleVisibility to control tittlebar's visibility
2016-06-17 03:21:04 +00:00
Cheng Zhao
6b20d6c189 Don't change the behavior of transparent window 2016-06-17 11:02:37 +09:00
Cheng Zhao
9eea973d31 Use the setTitleVisibility to control tittlebar's visibility 2016-06-17 10:54:50 +09:00
Cheng Zhao
d2a831aea5 Merge pull request #6089 from brave/window-menu
set the title for hidden and hidden-inset windows so they show up in …
2016-06-17 00:49:51 +00:00
Cheng Zhao
1a70fd8efe Merge pull request #6087 from electron/public-app-menu-getter
Make Menu.getApplicationMenu() public
2016-06-17 00:40:14 +00:00
Cheng Zhao
245f9cdd7d Merge pull request #6076 from electron/build-from-source
Update the using-native-node-modules.md
2016-06-17 00:21:57 +00:00
Kevin Sawicki
802fca28f7 Setup protocol after ready has already fired 2016-06-16 16:23:08 -07:00
Kevin Sawicki
a6e3eeee2d Merge pull request #6092 from electron/doc-typos
Minor doc typo fixes
2016-06-16 15:27:59 -07:00
Kevin Sawicki
a3b933f1f8 Fence block as yml 2016-06-16 15:26:58 -07:00
Kevin Sawicki
094098b571 Correct typos in docs 2016-06-16 15:19:38 -07:00
Kevin Sawicki
b6f87574ee Reset icon and clear progress bar 2016-06-16 15:01:37 -07:00
Kevin Sawicki
5f0238ebf4 Add subview whenever content view is empty 2016-06-16 14:57:23 -07:00
Kevin Sawicki
52525ef6bc Add failing spec for icon progress crash 2016-06-16 14:57:07 -07:00
bridiver
2094b39460 set the title for hidden and hidden-inset windows so they show up in the window menu list
fixes #6088
2016-06-16 13:12:53 -07:00
Machisté N. Quintana
296d49dc56 Make Menu.getApplicationMenu() public
Closes https://github.com/electron/electron/issues/6085
2016-06-16 12:43:01 -07:00
Kevin Sawicki
65abaee299 Forward will/did navigate events to extensions 2016-06-16 12:07:59 -07:00
Kevin Sawicki
64ae5cf5a1 Merge pull request #6084 from wolfgang42/master
Fix typo: 'arugments'
2016-06-16 10:46:58 -07:00
Wolfgang
b349c381fa 🎨 Fix typo: 'arugments' 2016-06-16 13:41:45 -04:00
Kevin Sawicki
567622c126 Drop unneeded .js extensions 2016-06-16 09:52:14 -07:00
Kevin Sawicki
3aecb11094 Extract Event clas to own file 2016-06-16 09:51:54 -07:00
Kevin Sawicki
7f9fa92e2d Add chrome.webNavigation stubs 2016-06-16 09:46:26 -07:00
Cheng Zhao
611791ea30 Update the using-native-node-modules.md 2016-06-16 17:10:57 +09:00
Cheng Zhao
58bce74255 Merge pull request #6071 from banyudu/patch-2
DocFixit: fix spell error
2016-06-16 05:19:26 +00:00
Cheng Zhao
0630b2d519 Merge pull request #6070 from banyudu/patch-1
DocFixit: fix spell error
2016-06-16 05:19:13 +00:00
Cheng Zhao
553341db87 Bump v1.2.3 2016-06-16 12:38:00 +09:00
Cheng Zhao
59fc30e6ae Merge pull request #6073 from electron/protocol-crash
Make api::Protocol thread safe
2016-06-16 03:35:37 +00:00
Cheng Zhao
9e947d3973 Merge pull request #6072 from electron/fix-crash-windows
Work around a compiler bug that crashes on Windows
2016-06-16 03:09:37 +00:00
Cheng Zhao
335cd8779c spec: Correctly cleanup the protocol test 2016-06-16 11:09:52 +09:00
Cheng Zhao
fe0e17d1c3 Make api::Protocol thread safe 2016-06-16 11:09:52 +09:00
Cheng Zhao
659384383e Avoid storing JobFactory in BrowserContext
JobFactory should always be created and accessed in IO thread.
2016-06-16 11:09:51 +09:00
Cheng Zhao
9372d4df32 Make sure BrowserContext is deleted after Protocol 2016-06-16 11:09:51 +09:00
Cheng Zhao
bb10551d23 Work around a compiler bug that crashes on Windows 2016-06-16 10:55:25 +09:00
Yudu Ban
17a4b61d54 fix spell error 2016-06-16 09:32:58 +08:00
Yudu Ban
d014f7fc76 fix spell error 2016-06-16 09:31:10 +08:00
Kevin Sawicki
9267004b53 Merge pull request #6052 from electron/doc-entitlements
Document entitlements needed for dialog APIs
2016-06-15 11:14:00 -07:00
Kevin Sawicki
2d6986d270 Merge pull request #6061 from zephyrzoom/master
Update online-offline-events.md
2016-06-15 11:11:30 -07:00
707
6567b4c8bf Update online-offline-events.md
漏掉了一个字
2016-06-15 19:30:02 +08:00
Cheng Zhao
efa667fa0a Merge pull request #6035 from electron/content-scripts-in-web-views
Load content scripts in webview devtools
2016-06-15 07:26:27 +00:00
Cheng Zhao
0615fbda84 Merge pull request #6053 from electron/flash-docs
Improve the docs on loading flash plugin
2016-06-15 01:31:32 +00:00
Cheng Zhao
e6ba0ac52a Merge pull request #6049 from electron/sys-executable
Include sys.executable in build libchromiumcontent args
2016-06-15 01:06:38 +00:00
Cheng Zhao
be90e2e9ff Improve the docs on loading flash plugin 2016-06-15 09:41:47 +09:00
Kevin Sawicki
ae6ffa6d5e unkown -> unknown 2016-06-14 15:47:33 -07:00
Kevin Sawicki
4e89656538 🎨 2016-06-14 15:47:33 -07:00
Kevin Sawicki
bf791c110f Tweak type check to consider windows and webviews 2016-06-14 15:47:33 -07:00
Kevin Sawicki
85517a1eea Add 2 spaces before comment 2016-06-14 15:47:33 -07:00
Kevin Sawicki
ee09c7534a Only add extensions to windows and webviews 2016-06-14 15:47:33 -07:00
Kevin Sawicki
f29801ad2b Add background page web contents type 2016-06-14 15:47:33 -07:00
Kevin Sawicki
ee0bab6389 Specify type instead of isGuest 2016-06-14 15:47:33 -07:00
Kevin Sawicki
c7b2545b1b Use web contents type enum and add converter 2016-06-14 15:47:32 -07:00
Kevin Sawicki
fc2b5eebc0 Remove unused includes 2016-06-14 15:47:32 -07:00
Kevin Sawicki
f25c1f864b Use RenderProcessPreferences for non-remote web contents 2016-06-14 15:47:32 -07:00
Kevin Sawicki
5c5fb0e39e Tweak documentation link 2016-06-14 15:24:05 -07:00
Kevin Sawicki
bfde8b02bb Drop the certain 2016-06-14 15:22:12 -07:00
Kevin Sawicki
54d1647a5c Mention dialog entitlements 2016-06-14 15:20:29 -07:00
Kevin Sawicki
45a9b0e0a5 Include sys.executable in build libchromiumcontent args 2016-06-14 11:49:54 -07:00
Kevin Sawicki
9223019af8 Merge pull request #6043 from JimiC/patch-1
Improved test exit
2016-06-14 10:07:57 -07:00
Jimi (Dimitris) Charalampidis
8121f913ca Improving test exit
Test should always exit (app.stop()) either on success or failure.
2016-06-14 16:36:54 +03:00
Cheng Zhao
12a35a05c6 Merge pull request #6038 from electron/check-alert
Fix exception in alert for inavlid parameter
2016-06-14 06:36:00 +00:00
Cheng Zhao
18a38dbfc1 Fix exception in alert for inavlid parameter 2016-06-14 15:22:01 +09:00
Cheng Zhao
b0f3443d72 Merge pull request #6037 from electron/auto-updater-wait
Use "--processStartAndWait" when launching Update.exe
2016-06-14 05:59:40 +00:00
Cheng Zhao
3f2c3e0448 Wait for current app to quit before launching new app 2016-06-14 14:31:41 +09:00
Cheng Zhao
f4c10060af Update brightray for #4261 2016-06-14 13:40:37 +09:00
Cheng Zhao
ae22980ee3 Merge pull request #6030 from electron/repl-error-on-windows
Log error when repling on Windows
2016-06-13 23:43:51 +00:00
Cheng Zhao
af722cc104 Merge pull request #6029 from electron/web-contents-created-app-api
Add web-contents-created event to app
2016-06-13 23:31:47 +00:00
Cheng Zhao
fcc7dc774a Merge pull request #6026 from electron/ready-to-show
Add "ready-to-show" event and docs on showing window gracefully
2016-06-13 23:24:14 +00:00
Kevin Sawicki
82d0d06d61 Log error when repling on Windows 2016-06-13 09:46:33 -07:00
Kevin Sawicki
f67e2043c8 Add back options param 2016-06-13 09:06:42 -07:00
Kevin Sawicki
d160be5daa Add web-contents-created event spec 2016-06-13 09:05:04 -07:00
Kevin Sawicki
88a81ef946 Doc web-contents-created 2016-06-13 09:01:06 -07:00
Kevin Sawicki
56001b481e Emit web-contents-created on app 2016-06-13 08:59:57 -07:00
Kevin Sawicki
c422613169 Merge pull request #6027 from Kushagra8888/patch-2
remove extraneous 'not'
2016-06-13 08:54:55 -07:00
Kushagra Sharma
61c0981ac7 remove extraneous 'not'
[ci skip]
2016-06-13 20:14:42 +05:30
Plusb Preco
e4cc55f86c 📝 Add missing changes
[ci skip]
2016-06-13 22:20:49 +09:00
Cheng Zhao
fc09c98bec Use once for 'ready-to-show' 2016-06-13 22:19:44 +09:00
Cheng Zhao
f7f86160c1 Only do the trick when window is hidden 2016-06-13 22:18:57 +09:00
Cheng Zhao
8a50a1b9d3 docs: Showing window gracefully 2016-06-13 22:11:40 +09:00
Cheng Zhao
4d65af3c60 Add ready-to-show event 2016-06-13 21:20:16 +09:00
Cheng Zhao
2dc453b4be Merge pull request #6023 from electron/ignore-focus
Add focusable option
2016-06-13 09:17:55 +00:00
Cheng Zhao
d92570a04b Merge pull request #6022 from tjctw/patch-1
Update mac-app-store-submission-guide.md
2016-06-13 08:53:55 +00:00
Cheng Zhao
e284deb7e1 docs: The side effect of focusable: false on Linux 2016-06-13 17:53:08 +09:00
Cheng Zhao
50f1837097 On Windows focusable: false also means skipTaskbar: true 2016-06-13 17:24:45 +09:00
Cheng Zhao
8eca728e0a Add focusable option 2016-06-13 17:10:28 +09:00
TJC
f255bb1b04 Update mac-app-store-submission-guide.md
typo
2016-06-13 16:07:35 +08:00
Cheng Zhao
5aecd10502 docs: Document the behavior of win.setIgnoreFocus on OS X 2016-06-13 16:40:02 +09:00
Cheng Zhao
ce00f4a273 Merge pull request #6013 from miniak/setIgnoreFocus
Add BrowserWindow.prototype.setIgnoreFocus
2016-06-13 07:18:10 +00:00
Cheng Zhao
927436de1a Merge pull request #6019 from preco21/korean-docs-7
docs: Update Korean docs as upstream
2016-06-13 06:43:41 +00:00
Cheng Zhao
04479b40a7 Merge pull request #6012 from miniak/menu-item-roles
Document 'zoom' role + add missing menu items (Delete / Paste and Match Style / Zoom)
2016-06-13 06:21:53 +00:00
Cheng Zhao
33a69fe50b Merge pull request #6008 from develar/patch-1
Add info about electron-builder to build windows installer
2016-06-13 06:16:53 +00:00
Plusb Preco
951aa72847 📝 Update Korean docs as upstream
[ci skip]
2016-06-13 12:19:37 +09:00
Cheng Zhao
4f1f0add27 docs: Reword the requirement of setApplication Menu 2016-06-13 10:52:12 +09:00
Cheng Zhao
9b566d8a40 Merge pull request #5999 from greggman/update-menu-docs-1
Document Menu.setApplicationMenu from main process
2016-06-13 01:42:47 +00:00
Cheng Zhao
8fe5dd22b2 Merge pull request #6018 from electron/string-map
Cleanup code for autoUpdater
2016-06-13 01:02:53 +00:00
Cheng Zhao
853d7b1b79 Merge pull request #5965 from electron/installed-extension-api
Add BrowserWindow.getDevToolsExtensions API
2016-06-13 00:45:58 +00:00
Cheng Zhao
26c4fc34cb Reset SQRLUpdater when setFeedURL is called 2016-06-13 09:41:14 +09:00
Cheng Zhao
a3786f66c9 Do not add JS wrapper for setFeedURL
When possible we should avoid adding wrappers in JS, it usually makes
code more difficult to mantain
2016-06-13 09:38:47 +09:00
Cheng Zhao
e2442fb052 Move converter for std::map to native_mate 2016-06-13 09:27:13 +09:00
Cheng Zhao
85379e3148 Merge pull request #5879 from miniak/autoUpdater
Add optional requestHeaders argument to autoUpdater.setFeedURL
2016-06-13 00:17:24 +00:00
Plusb Preco
68e99be9f6 📝 Update Korean docs as upstream
[ci skip]
2016-06-13 03:42:26 +09:00
Plusb Preco
bab8f6f60f 📝 Update Korean docs as upstream
* Small fixes

[ci skip]
2016-06-13 03:28:11 +09:00
Milan Burda
7a1d1ee0ea Add BrowserWindow.prototype.setIgnoreFocus 2016-06-12 20:20:57 +02:00
Plusb Preco
6176f65759 📝 Fix grammatical issue
[ci skip]
2016-06-13 02:51:47 +09:00
Plusb Preco
3ebf0fd335 📝 Update Korean docs as upstream
[ci skip]
2016-06-13 02:40:39 +09:00
Plusb Preco
d73d803a57 📝 Small fixes
[ci skip]
2016-06-13 02:28:25 +09:00
Milan Burda
f5699ad3a6 Document 'zoom' role + add missing menu items (Delete / Paste and Match Style / Zoom) 2016-06-12 19:21:52 +02:00
Milan Burda
c89d8b19b6 Add optional requestHeaders argument to autoUpdater.setFeedURL + allow calling mulitple times 2016-06-12 12:46:16 +02:00
Vladimir Krivosheev
109596501c Add info about electron-builder to build windows installer 2016-06-12 10:48:50 +02:00
Heilig Benedek
70aa706524 Merge pull request #10 from electron/master
update as upstream
2016-06-11 13:43:25 +02:00
Greggman
19c9170d6c Document Menu.setApplicationMenu from main process
You can't call Menu.setApplicationMenu until the app is ready.


[ci skip]
2016-06-11 14:09:53 +09:00
Jessica Lord
c68ca16148 Merge pull request #5974 from electron/chrome-storage-sync
Add chrome.storage.sync and chrome.storage.get APIs
2016-06-10 12:20:03 -07:00
Kevin Sawicki
88b62a33ab Merge pull request #5989 from electron/dan-remove-node-version-file
Bump .node-version file
2016-06-10 11:23:25 -07:00
Daniel Pham
47350bba8f ⬆️ node@6.1.0 2016-06-10 14:19:42 -04:00
Kevin Sawicki
4ab6429f1d Merge pull request #5986 from electron/doc-requires
Access remote from electron require
2016-06-10 10:27:57 -07:00
Kevin Sawicki
5e88abed7e Access remote from electron require in translated doc 2016-06-10 10:27:25 -07:00
Kevin Sawicki
9438ba3aaf Access remote from electron require 2016-06-10 10:24:35 -07:00
Jessica Lord
39e6081a00 🔥 line 2016-06-10 09:59:47 -07:00
Kevin Sawicki
f9b7033f43 Fix typo in example 2016-06-10 09:34:34 -07:00
Kevin Sawicki
2804272c7d Doc getDevToolsExtensions 2016-06-10 09:29:26 -07:00
Kevin Sawicki
1f245d5ff6 Add getDevToolsExtensions API 2016-06-10 09:26:38 -07:00
Kevin Sawicki
091682a039 Doc BrowserWindow.isDevToolsExtensionInstalled 2016-06-10 09:24:04 -07:00
Kevin Sawicki
0a26075699 Add BrowserWindow.isDevToolsExtensionInstalled API 2016-06-10 09:24:04 -07:00
Cheng Zhao
e824603f37 Merge pull request #5979 from cyberkatze/patch-7
fixed errors in text
2016-06-10 12:22:04 +00:00
Cheng Zhao
39b918fbfe Merge pull request #5978 from cyberkatze/patch-6
fixed errors in text
2016-06-10 12:21:58 +00:00
Cheng Zhao
0cbcc6db39 Merge pull request #5977 from cyberkatze/patch-5
fixed errors in text
2016-06-10 12:21:49 +00:00
Cheng Zhao
90a1b45135 Merge pull request #5975 from electron/disable-only-specs-on-ci
Log and exit when calling only in specs on CI
2016-06-10 12:11:31 +00:00
Cheng Zhao
4373dc1eac Merge pull request #5972 from electron/non-writeable-guest-id
Make guestId on BrowserWindowProxy non-writeable
2016-06-10 12:02:07 +00:00
Josh Bernitt
4219513457 issue 2813 add app name after Quit
Adding the application name after the Quit string for Mac OS systems.
2016-06-10 21:01:06 +09:00
Cheng Zhao
21081549fd Merge pull request #5967 from electron/window-opener-webview
Support window.opener from windows opened from a <webview>
2016-06-10 11:52:37 +00:00
Ali Elderov
538a4f61ee fixed errors in text 2016-06-10 08:39:28 +02:00
Ali Elderov
9bc536a95f fixed errors in text 2016-06-10 08:31:46 +02:00
Ali Elderov
cf4b40d3e6 fixed errors in text 2016-06-10 08:21:32 +02:00
Cheng Zhao
ccaf837da4 Merge pull request #5964 from electron/manifest-errors
Throw errors reading/parsing manifest.json files
2016-06-10 03:28:57 +00:00
Kevin Sawicki
34e01833d3 Merge pull request #5966 from electron/felix-docs-windows-store
Update Guide for Windows Store Apps
2016-06-09 17:36:55 -07:00
Kevin Sawicki
110f1f8b75 Tweak error message 2016-06-09 17:00:32 -07:00
Felix Rieseberg
8204412f9b 📝 Update Guide for Windows Store Apps
- Updated the guide to reflect that electron-windows-store no longer
   requires container conversion prerequisites
 - Added a link and a note about using background tasks to include
   UWP features
2016-06-09 16:59:42 -07:00
Kevin Sawicki
55a4e2589b Log/exit when only called in specs on CI 2016-06-09 16:56:25 -07:00
Jessica Lord
8fa4d66a5e Remove .only from spec 2016-06-09 16:39:42 -07:00
Jessica Lord
ede3dbd201 🚿 Lint 2016-06-09 16:39:24 -07:00
Jessica Lord
f121f46a24 Merge branch 'master' into chrome-storage-sync 2016-06-09 16:35:00 -07:00
Jessica Lord
dc10568917 Handle the three get cases 2016-06-09 16:26:42 -07:00
Jessica Lord
d6d4d51173 Fix spec case 2016-06-09 16:26:25 -07:00
Cheng Zhao
3dbef4ab8f Merge pull request #5959 from electron/download-item-interrupt
Add more bindings to DownloadItem
2016-06-09 22:50:34 +00:00
Kevin Sawicki
50f5025447 Merge pull request #5924 from electron/chrome-i18n-get-message
Implement chrome.i18n.getMessage
2016-06-09 14:47:37 -07:00
Kevin Sawicki
2efc913222 Remove standard lint warnings 2016-06-09 14:17:54 -07:00
Jessica Lord
d6b108b272 Add spec 2016-06-09 14:14:20 -07:00
Jessica Lord
41d6ddd588 Add storage file 2016-06-09 14:14:14 -07:00
Kevin Sawicki
01f96fe6af Default locale to en 2016-06-09 14:00:53 -07:00
Jessica Lord
0ed10658a3 Add spec 2016-06-09 13:57:51 -07:00
Kevin Sawicki
9f64c39f8c Remove lint warnings 2016-06-09 13:57:08 -07:00
Kevin Sawicki
2367cd574e Cache extension metadata 2016-06-09 13:57:08 -07:00
Kevin Sawicki
ea9d2dadf8 Add fixme for sync ipc 2016-06-09 13:57:08 -07:00
Kevin Sawicki
d4925e6226 Add initial support for placeholders and substitutions 2016-06-09 13:57:08 -07:00
Kevin Sawicki
d54de73e03 🎨 2016-06-09 13:57:08 -07:00
Kevin Sawicki
84960af793 Add initial chrome.i18n.getMessage API 2016-06-09 13:57:08 -07:00
Kevin Sawicki
939ae567ac 🎨 2016-06-09 13:53:36 -07:00
Kevin Sawicki
39180e6539 Get webContents from guestId 2016-06-09 13:50:42 -07:00
Kevin Sawicki
2f88bec177 Add guestId non-writeable assertions 2016-06-09 13:45:09 -07:00
Kevin Sawicki
2f93735909 Make BrowserWindowProxy guestId non-writeable 2016-06-09 13:41:42 -07:00
Kevin Sawicki
c8180ab301 Update spec description 2016-06-09 12:06:49 -07:00
Kevin Sawicki
a184b6afb3 Add spec for window.open from <webview> 2016-06-09 12:02:01 -07:00
Kevin Sawicki
bbc3a71c9f Use webContents id as guest id in opened windows 2016-06-09 11:29:38 -07:00
Kevin Sawicki
ebf9773269 Use const/let and removes CoffeeScript ref vars 2016-06-09 10:35:48 -07:00
Kevin Sawicki
6d3fc611bd Tweak duplicate extension message 2016-06-09 10:08:21 -07:00
Kevin Sawicki
f46edd5186 Throw errors reading/parsing manifest.json 2016-06-09 09:45:02 -07:00
Kevin Sawicki
d1ac5dd29b Add specs for manifest.json read/parse error 2016-06-09 09:44:49 -07:00
Kevin Sawicki
a3899f17f9 Merge pull request #5963 from agustinwang/patch-1
fix typo
2016-06-09 08:56:45 -07:00
agustin.wang
6f8893b42b fix typo 2016-06-09 23:16:46 +08:00
Cheng Zhao
054446a8bf Merge pull request #5958 from cyberkatze/patch-4
fixed errors in text
2016-06-09 12:06:58 +00:00
Cheng Zhao
cc6b812d96 Merge pull request #5957 from cyberkatze/patch-3
updated translation for README.md
2016-06-09 12:06:49 +00:00
Cheng Zhao
573a8320c1 Merge pull request #5956 from cyberkatze/patch-2
updated translation for supported-platforms.md
2016-06-09 12:06:37 +00:00
Cheng Zhao
cbcbcaeb41 docs: Make the example cover all cases 2016-06-09 20:57:29 +09:00
Cheng Zhao
dcad25c98c Add isPaused and canResume 2016-06-09 20:51:01 +09:00
Cheng Zhao
3f1dba3016 docs: Update DownloadItem for getState 2016-06-09 20:35:12 +09:00
Cheng Zhao
0321e23c7a Add DownloadItem.getState 2016-06-09 20:27:39 +09:00
Ali Elderov
c9e8c7f1b6 fixed errors in text 2016-06-09 10:38:28 +02:00
Ali Elderov
0dc49ca713 updated translation for README.md 2016-06-09 10:26:55 +02:00
Ali Elderov
8a2aa018ff updated translation for supported-platforms.md 2016-06-09 10:25:02 +02:00
Cheng Zhao
2ec5406ca6 Merge pull request #5904 from deepak1556/extension_partition_patch
browser: set up extension protocol handler for each browser context
2016-06-09 08:04:58 +00:00
Cheng Zhao
c6eda51b43 Merge pull request #5955 from enlight/fix-atom-taskbarhost-typo
Fix typo in `atom::TaskbarHost::InitializeTaskbar()`
2016-06-09 07:11:25 +00:00
Cheng Zhao
bfac5ba6f2 Merge pull request #5954 from agustinwang/patch-1
update `win` to `mainWindow`
2016-06-09 07:11:07 +00:00
Cheng Zhao
5f1e9d4ea7 Merge pull request #5952 from enlight/patch-3
Update Build System Overview doc
2016-06-09 07:07:32 +00:00
Vadim Macagon
a6f0fcf89f Fix typo in atom::TaskbarHost::InitializeTaskbar()
`InitailizeTaskbar` -> `InitializeTaskbar`
2016-06-09 12:21:21 +07:00
deepak1556
4749e18fc0 fix spec and docs 2016-06-09 10:48:05 +05:30
deepak1556
b91217f29e emit once for each session and add spec 2016-06-09 10:40:51 +05:30
deepak1556
cb5e648502 register extension handler for every session created 2016-06-09 10:40:51 +05:30
deepak1556
ebff40b5a5 add docs 2016-06-09 10:39:18 +05:30
deepak1556
aa853dd3be move protocol to session properties for working with partitions 2016-06-09 10:39:18 +05:30
deepak1556
0e0235407b fill net::URLRequest details on IO thread 2016-06-09 10:39:18 +05:30
deepak1556
414183e0fd fix dereferencing null pointer 2016-06-09 10:39:18 +05:30
agustin.wang
48a939ac7e 更新浏览器窗口变量名称
最新的 electron-quick-start 仓库中的变量已由 win 变更为 mainWindow
2016-06-09 12:55:07 +08:00
Cheng Zhao
d5bb7d7525 Merge pull request #5950 from VReality64/master
📝 Update Korean doc to a latest version.
2016-06-09 04:20:27 +00:00
Vadim Macagon
537c62a9a8 Update Build System Overview doc
`atom.gyp` was renamed to `electron.gyp` not long ago but this document wasn't updated.
2016-06-09 10:58:58 +07:00
Cheng Zhao
8a92ee403c Merge pull request #5945 from electron/default-title-to-app-name
Default window title to app name
2016-06-09 02:06:30 +00:00
Cheng Zhao
0abd55221d Merge pull request #5944 from electron/set-maximizable-last
Set maximizable state after installing view
2016-06-09 01:52:35 +00:00
Cheng Zhao
b422c47b67 Merge pull request #5943 from bbondy/master
Allow obtaining system Pepper Flash path
2016-06-09 01:48:53 +00:00
Cheng Zhao
20372f057e Merge pull request #5913 from electron/webview-devtools-extensions
Enable DevTools extensions in webviews
2016-06-09 01:45:55 +00:00
VReality64
9c10ecd13f 📝 Update Korean doc to a latest version.
[ci skip]
2016-06-09 09:59:14 +09:00
Kevin Sawicki
7d48827199 Default window title to app name 2016-06-08 14:17:33 -07:00
Kevin Sawicki
9f93f4e27f Set maximizable state after installing view 2016-06-08 13:56:45 -07:00
Brian R. Bondy
352a9cd6f2 Allow obtaining system Pepper Flash path 2016-06-08 16:40:15 -04:00
Kevin Sawicki
f33537336b Add default statement 2016-06-08 12:00:14 -07:00
Kevin Sawicki
4823a04a44 hookWindowForTabEvents -> hookWebContentsForTabEvents 2016-06-08 12:00:13 -07:00
Kevin Sawicki
11e68ff932 Only add extensions to non-remote webContents 2016-06-08 12:00:13 -07:00
Kevin Sawicki
c8c60dd313 Add devtools from web-contents-created event 2016-06-08 12:00:13 -07:00
Kevin Sawicki
d8fe5da3ea 🎨 2016-06-08 12:00:13 -07:00
Kevin Sawicki
ec8b9e3f35 Export loadDevToolsExtensions API to use in guest view manager 2016-06-08 12:00:13 -07:00
Kevin Sawicki
219d177731 Load extensions for all web contents 2016-06-08 12:00:13 -07:00
Kevin Sawicki
4f7bde38a9 Assert on tab id as well 2016-06-08 12:00:13 -07:00
Kevin Sawicki
bf47056561 Pluralize extension 2016-06-08 12:00:13 -07:00
Kevin Sawicki
78e3bb0660 🎨 2016-06-08 12:00:13 -07:00
Kevin Sawicki
4c1ede32cf Use destroyed event instead of closed event 2016-06-08 12:00:12 -07:00
Kevin Sawicki
4f46f75d8f Load dev tools extensions in webviews 2016-06-08 12:00:12 -07:00
Kevin Sawicki
19787544b5 Add failing spec for webview devtools extension 2016-06-08 12:00:12 -07:00
Kevin Sawicki
82bee12c00 Merge pull request #5911 from mafintosh/patch-1
support --abi
2016-06-08 11:57:16 -07:00
Mathias Buus
7dcb939338 support --abi 2016-06-08 20:55:06 +02:00
Kevin Sawicki
f4c1cd11a0 Merge pull request #5921 from electron/webview-show-definition-for-selection
Add showDefinitionForSelection to webContents/webview
2016-06-08 10:40:10 -07:00
Kevin Sawicki
7250c461be Remove NOTIMPLEMENTED() call 2016-06-08 10:21:28 -07:00
Kevin Sawicki
70996c79ba Add showDefinitionForSelection webContents proxy method 2016-06-08 10:19:43 -07:00
Kevin Sawicki
6337e93e6d Check for Mac in if block 2016-06-08 10:15:37 -07:00
Kevin Sawicki
c66299bf66 Document webview.showDefinitionForSelection 2016-06-08 10:15:36 -07:00
Kevin Sawicki
8c520cf158 🎨 2016-06-08 10:15:36 -07:00
Kevin Sawicki
6360a5cae4 Add deprecation TODO for BrowserWindow.showDefinitionForSelection 2016-06-08 10:15:36 -07:00
Kevin Sawicki
ce19c2c0ad Document webContents.showDefinitionForSelection 2016-06-08 10:15:36 -07:00
Kevin Sawicki
4f0a52628e Add showDefinitionForSelection to webContents/webview 2016-06-08 10:15:36 -07:00
Kevin Sawicki
e4398dde42 Merge pull request #5942 from enlight/patch-2
Fix location of code snippet in nativeImage docs
2016-06-08 09:36:42 -07:00
Vadim Macagon
8e2ae9b9e7 Fix location of code snippet in nativeImage docs
The code snippet for `nativeImage.createFromPath` somehow ended up in the wrong section of the document, this PR moves it back where it belongs.
2016-06-08 23:34:45 +07:00
Cheng Zhao
b2bea57eff Bump v1.2.2 2016-06-08 16:47:41 +09:00
Cheng Zhao
3cb5649f07 Merge pull request #5932 from electron/fix-standard-scheme
Fix crash when using fetch in custom protocols
2016-06-08 07:47:04 +00:00
Cheng Zhao
1bfbd215ea Don't rely on AddAdditionalSchemes for setting standard schemes
On Linux because of the existence of zygote process, it becomes very
tricky to correctly set standard schemes, basically we have to:
1. Pass --standard-schemes to both zygote and render processes
2. Init standard schemes for both zygote and render processes

The )1 is very hard to achieve, so instead of using
AddAdditionalSchemes, we just call url::AddStandardScheme directly.
2016-06-08 16:32:02 +09:00
Cheng Zhao
7108cc5f2b Mark standard scheme as safe scheme 2016-06-08 15:49:26 +09:00
Cheng Zhao
920ebee333 Make sure standard schemes are also set in child process 2016-06-08 15:46:50 +09:00
Cheng Zhao
1146b2d5c1 spec: Custom protocol can have "fetch" working in it 2016-06-08 14:44:30 +09:00
Cheng Zhao
2696c0a693 Merge pull request #5929 from electron/chrome-update
Update to Chrome 51.0.2704.84
2016-06-08 02:25:58 +00:00
Cheng Zhao
77dc08f2f9 Update to Chrome 51.0.2704.84 2016-06-08 11:08:24 +09:00
Cheng Zhao
2ed2db2068 Merge pull request #5928 from electron/bellow
bellow => below
2016-06-08 02:07:14 +00:00
Cheng Zhao
3ec4fcb3ec bellow => below 2016-06-08 11:03:01 +09:00
Cheng Zhao
6c5eaf6178 Merge pull request #5923 from electron/disable-blink-features
Support disabling Blink features
2016-06-08 02:00:30 +00:00
Cheng Zhao
013bd004c9 Merge pull request #5922 from ekonstantinidis/patch-1
Move example to the correct place
2016-06-08 01:57:56 +00:00
Cheng Zhao
d2331bc2c0 Merge pull request #5915 from electron/remove-result-collection
Remove unused results collection
2016-06-08 00:58:16 +00:00
Kevin Sawicki
02e0ca60ef Use lowercase param key 2016-06-07 16:35:23 -07:00
Kevin Sawicki
cd2041375b Add missing A in constant name 2016-06-07 16:31:16 -07:00
Kevin Sawicki
96012d6523 Remove trailing comma 2016-06-07 16:24:05 -07:00
Kevin Sawicki
f7b0bb2bf3 Add TODO about blinkFeatures -> enableBlinkFeatures 2016-06-07 16:23:09 -07:00
Emmanouil Konstantinidis
9b979f3b49 Move example to the correct place 2016-06-07 23:40:07 +01:00
Kevin Sawicki
c7f2c25bc9 Mention enabling/disabling 2016-06-07 13:59:30 -07:00
Kevin Sawicki
1b6a95adcb Document disableblinkfeatures attribute 2016-06-07 13:57:54 -07:00
Kevin Sawicki
636e356977 Document disableBlinkFeatures option 2016-06-07 13:56:33 -07:00
Kevin Sawicki
b941e25bf5 Link to RuntimeEnabledFeatures.in 2016-06-07 13:55:44 -07:00
Kevin Sawicki
ca6e3ed1ef Add webview support for disabled blink features 2016-06-07 13:49:31 -07:00
Kevin Sawicki
ae71cf3df1 Add disableBlinkFeatures option 2016-06-07 13:42:42 -07:00
Kevin Sawicki
ba762464d2 More let/const-ing 2016-06-07 10:29:29 -07:00
Kevin Sawicki
5c880b7c99 We -> we 2016-06-07 10:25:21 -07:00
Kevin Sawicki
ce1a9740f6 🎨 Use const and for/of loops 2016-06-07 10:24:48 -07:00
Kevin Sawicki
3bcb411e28 Don't collect unused results array 2016-06-07 10:24:33 -07:00
Cheng Zhao
4948bcc806 Merge pull request #5910 from electron/win-click-through
Implement win.setIgnoreMouseEvents for Windows and Linux
2016-06-07 12:05:07 +00:00
Cheng Zhao
5f838a1ee4 Merge pull request #5907 from VReality64/master
Update Korean documentation translation to a latest version
2016-06-07 11:39:25 +00:00
Cheng Zhao
e7754fa55a Merge pull request #5906 from ThaddeusJiang/master
update Quick Start Page[zh-CN]
2016-06-07 11:38:51 +00:00
Cheng Zhao
6192eef1b6 Update docs on win.setIgnoreMouseEvents 2016-06-07 20:32:52 +09:00
Cheng Zhao
f8b69c1fac Implement SetIgnoreMouseEvents for Linux 2016-06-07 20:23:29 +09:00
Cheng Zhao
cae25cab3e Implement SetIgnoreMouseEvents for Windows 2016-06-07 19:38:41 +09:00
VReality64
219bc2fc51 Update Korean documentation translation to a latest version 2016-06-07 19:19:21 +09:00
Cheng Zhao
fe4b957587 Merge pull request #5905 from electron/frameless-title
Fix title of frameless window showing as empty under fullscreen
2016-06-07 10:18:59 +00:00
jf_jiang
ece468681f fix outside link 2016-06-07 18:57:45 +09:00
jf_jiang
7e5f9fef52 update Quick Start Page[zh-CN]
Based on electron ver 1.1.3 update Quick Start Page[Simplified
Chinese].
2016-06-07 18:52:01 +09:00
Cheng Zhao
b444211d6f Fix title of frameless window showing as empty under fullscreen 2016-06-07 17:26:26 +09:00
Cheng Zhao
d3d2ca9a31 Merge pull request #5903 from electron/update-target-url
Add update-target-url event
2016-06-07 07:10:54 +00:00
Cheng Zhao
3c873736d7 Add update-target-url event 2016-06-07 15:56:19 +09:00
Cheng Zhao
1c504ec45d Merge pull request #5901 from electron/screen-docs
docs: Update the code sample of screen module
2016-06-07 05:04:55 +00:00
Cheng Zhao
1a22caabe8 docs: Update the code sample of screen module
* We should not require it before the ready event;
* There is no need to use electronScreen as name in the main process.
2016-06-07 13:56:57 +09:00
Cheng Zhao
08f8e06c55 Merge pull request #5894 from electron/chrome-runtime-id
Implement chrome.runtime.id
2016-06-07 01:54:58 +00:00
Cheng Zhao
2701ed6dd7 Merge pull request #5893 from electron/remove-extension-id-logging
Don't log devtools extension id
2016-06-07 01:54:16 +00:00
Cheng Zhao
243052742e Merge pull request #5898 from electron/native-module-signing
docs: Move "Sign Native Modules" to MAS Guide
2016-06-07 01:40:55 +00:00
Cheng Zhao
5fc64aea38 docs: Move "Sign Native Modules" to MAS Guide 2016-06-07 10:26:53 +09:00
Cheng Zhao
cb5f5660e1 Merge pull request #5890 from jpittner/patch-1
Update using-native-node-modules.md
2016-06-07 01:09:40 +00:00
Kevin Sawicki
61ce19ba7e Set chrome.runtime.id 2016-06-06 14:42:07 -07:00
Kevin Sawicki
d6311daea3 Add failing spec for chrome.runtime.id 2016-06-06 14:41:55 -07:00
Kevin Sawicki
a906336b1e Don't log extension id 2016-06-06 13:03:01 -07:00
Cheng Zhao
7e7186933f Merge pull request #5889 from electron/disable-gpu
Add app.disableHardwareAcceleration() API
2016-06-06 12:08:37 +00:00
jpittner
3edde9143b Update using-native-node-modules.md
Explains how native modules to be signed and packaged.
2016-06-06 13:46:34 +02:00
Cheng Zhao
02cfe30df9 Add app.disableHardwareAcceleration() API 2016-06-06 20:19:55 +09:00
Cheng Zhao
3e809901e0 Merge pull request #5888 from electron/linux-focus
Fix NativeWindow::Focus not moving focus to window
2016-06-06 08:26:47 +00:00
Cheng Zhao
32b692b60c Fix NativeWindow::Focus not moving focus to window
Chromium's implementation is somehow not working as expected, the new
implementation follows the behavior of wmctrl.
2016-06-06 16:59:31 +09:00
Cheng Zhao
438cab1f56 Merge pull request #5886 from electron/chrome-update
Update to Chrome 51.0.2704.79
2016-06-06 07:47:43 +00:00
Cheng Zhao
adec511891 Update to Chrome 51.0.2704.79 2016-06-06 15:59:07 +09:00
Cheng Zhao
14210174d3 Merge pull request #5883 from sethlu/update-mas-submission-guide
Update Chinese translation for MAS Submission Guide
2016-06-06 06:20:16 +00:00
Cheng Zhao
1066c1acaf Merge pull request #5882 from electron/felix-extension-warning-2
Log a warning if an extension's manifest cannot be parsed
2016-06-06 06:20:02 +00:00
Cheng Zhao
ec691a3a64 Merge pull request #5870 from danhp/missing-roles
Add 'delete' and 'pasteandmatchstyle' roles
2016-06-06 06:16:53 +00:00
sethlu
8cca8d66e3 Update Chinese translation 2016-06-06 09:57:07 +08:00
Daniel Pham
bd1eae86a1 Add 'delete' and 'pasteandmatchstyle' roles 2016-06-05 21:50:37 -04:00
Cheng Zhao
08f5322658 Merge pull request #5873 from sourenaraya/patch-1
Fix shared data example in FAQ
2016-06-06 01:48:13 +00:00
Felix Rieseberg
eb62abcc23 🎨 Log a warning if an extension's manifest cannot be parsed
Also logs a clean warning if an extension's manifest is incomplete,
missing, or can otherwise not be parsed.
2016-06-05 18:30:49 -07:00
Cheng Zhao
8847af0e54 Merge pull request #5859 from electron/felix-extension-warning
Log a warning if an extension has already been loaded
2016-06-06 01:22:47 +00:00
sourenaraya
506bc4db4c Fix shared data example
since `remote` module unaviable
2016-06-05 20:39:10 +10:00
Felix Rieseberg
b42e6583f7 🎨 Log a warning if an extension has already been loaded
If an extension has already been loaded (for instance because it’s
persisted), `addDevToolsExtension` will return nothing, which is
confusing. This adds a little `console.warn` to educate people about
what’s happening.

Closes #5854
2016-06-03 14:32:22 -07:00
Heilig Benedek
9aaa6c7a8f Merge pull request #9 from electron/master
update as upstream
2016-06-03 15:35:12 +02:00
Cheng Zhao
9d55424c48 Merge pull request #5849 from preco21/korean-docs-6
docs: Update Korean docs as upstream
2016-06-03 11:29:13 +00:00
Plusb Preco
6f8ebee3e8 📝 Update Korean docs as upstream
[ci skip]
2016-06-03 18:41:47 +09:00
Plusb Preco
d4ab4bee93 📝 Update Korean docs as upstream
[ci skip]
2016-06-03 18:37:46 +09:00
Plusb Preco
41f99187e7 📝 Update Korean docs as upstream
[ci skip]
2016-06-03 17:47:21 +09:00
Cheng Zhao
f59eecb1cc Merge pull request #5833 from CharlieHess/osx-global-defaults
Support array / dictionary types in getUserDefault
2016-06-03 08:36:44 +00:00
Cheng Zhao
567a7ed829 Merge pull request #5839 from sqrthree/patch-1
Correct wrong words
2016-06-03 04:50:58 +00:00
Cheng Zhao
4ec064d311 Merge pull request #5837 from electron/restart
Add app.relaunch API
2016-06-03 04:00:12 +00:00
Cheng Zhao
7f9e296f9c Merge pull request #5826 from Pym/patch-1
Add nuts link to the docs
2016-06-03 03:30:13 +00:00
Cheng Zhao
707d68f719 spec: Add test case for app.relaunch 2016-06-03 12:12:20 +09:00
Cheng Zhao
be6ed84ff2 args should always be checked 2016-06-03 12:08:45 +09:00
Paul Betts
4d8c73734c Merge pull request #5841 from envygeeks/patch-1
List all the possible folders for Linux.
2016-06-02 19:36:38 -07:00
Jordon Bedwell
020da553ff List all the possible folders for Linux.
Linux has several folders, depending on who is using the Linux install.  On our systems it could be any one of those depending on the user and what software they prefer to use, they all have the React plugin however, each one sits in a different folder.  I prefer Chrome because of Netflix, she prefers Chromium and we also have Chrome Beta available.
2016-06-02 20:29:25 -05:00
Kevin Sawicki
b0ccf6fd74 Merge pull request #5840 from electron/code-block-name
Correct typo in code block name
2016-06-02 09:40:07 -07:00
Kevin Sawicki
96ca8edbb4 javascript -> javascript 2016-06-02 09:39:17 -07:00
Plusb Preco
d234467682 📝 Update Korean docs as upstream
[ci skip]
2016-06-02 23:50:50 +09:00
sqrthree
2ef2c1af02 Correct wrong words
修正错别字
2016-06-02 22:35:40 +08:00
Cheng Zhao
d3fe80991c docs: app.relaunch 2016-06-02 22:06:27 +09:00
Cheng Zhao
91a9e67dca Provide a flexible API for app.relaunch 2016-06-02 21:49:29 +09:00
Cheng Zhao
3de41fb22d Correctly quotes the argv on Windows 2016-06-02 21:10:39 +09:00
Cheng Zhao
8435f1c900 Allow using current argv for relaunch 2016-06-02 20:48:36 +09:00
Cheng Zhao
9a08cbce27 Uniform when to use args or argv 2016-06-02 20:41:59 +09:00
Cheng Zhao
0d066de53e Make sure the new instance inherite cwd on mac 2016-06-02 20:32:29 +09:00
Cheng Zhao
0646f6ea9e Implement Relaunch on Windows 2016-06-02 19:49:36 +09:00
Cheng Zhao
a3f39e9d0b Implement Relaunch on Linux 2016-06-02 16:54:21 +09:00
Cheng Zhao
c3fe2dae9d Separate LaunchProgram from mac implementation 2016-06-02 16:23:46 +09:00
Charlie Hess
e377298cd2 Be consistent in spec organization. 2016-06-01 19:29:24 -07:00
Charlie Hess
fa3b17444f All we really need to do is make getUserDefault support array / object types. 2016-06-01 19:21:17 -07:00
Charlie Hess
587dd2fe51 Expose the method to JS and write a simple test. 2016-06-01 18:56:25 -07:00
Charlie Hess
0230567891 Write a new method that returns prefs under the NSGlobalDomain. 2016-06-01 18:55:20 -07:00
Charlie Hess
aa1b8cd74b Expose the NSArrayToListValue converter. 2016-06-01 18:53:49 -07:00
Cheng Zhao
060829da64 Separate implementations of RelauncherMain and RelauncherSynchronizeWithParent 2016-06-02 09:09:32 +09:00
Charlie Hess
10dcb10898 Merge remote-tracking branch 'upstream/master' 2016-06-01 14:38:49 -07:00
Kevin Sawicki
c3e9ce34a1 Merge pull request #5829 from electron/rename-frameworks-repo
Rename and move atom-shell-frameworks repo
2016-06-01 13:32:19 -07:00
Kevin Sawicki
789a878f07 Rename atom-shell-frameworks repo name and org 2016-06-01 13:25:36 -07:00
Pierre-Yves Jamon
3b11355521 Add nuts link to the docs
Add link to GitbookIO/nuts in the docs page for autoUpdater
2016-06-01 15:22:08 +02:00
Cheng Zhao
fc30a2a084 Use AtomCommandLine to process command line parameters 2016-06-01 22:15:50 +09:00
Cheng Zhao
6df18956cd Get ready to make relauncher cross-platform 2016-06-01 22:04:20 +09:00
Cheng Zhao
abdcb9d481 Implement app.relaunch on OS X 2016-06-01 18:22:14 +09:00
Cheng Zhao
7b3ba739bf Import chrome/browser/mac/relauncher.{cc,h} 2016-06-01 16:26:08 +09:00
Cheng Zhao
97dd71d79e Bump v1.2.1 2016-06-01 16:15:53 +09:00
Cheng Zhao
e46ef5a15a Merge pull request #5824 from electron/cleanup-web-contents
Cleanup the web-contents.js code
2016-06-01 07:14:31 +00:00
Cheng Zhao
8f49d43b69 Merge pull request #5781 from deepak1556/bluetooth_patch
webContents: add event to select bluetooth device
2016-06-01 06:40:08 +00:00
Cheng Zhao
f4dc8f6d26 Merge pull request #5823 from ColinEberhardt/patch-1
minor typo fixes
2016-06-01 06:34:57 +00:00
Cheng Zhao
01b10b3b39 Slightly improve docs of webContents.printToPDF 2016-06-01 15:32:37 +09:00
Cheng Zhao
0864d3b1ee Cleanup the printToPDF code 2016-06-01 15:32:37 +09:00
deepak1556
7434838463 fix docs 2016-06-01 11:44:29 +05:30
deepak1556
de4bff003f fix header paths and comments 2016-06-01 11:44:29 +05:30
deepak1556
db4dc4757a move bluetooth_chooser to atom/browser/lib 2016-06-01 11:43:39 +05:30
deepak1556
51daf8e194 add docs 2016-06-01 11:43:39 +05:30
deepak1556
a70749e80a browser: implement bluetooth chooser interface 2016-06-01 11:43:39 +05:30
Cheng Zhao
eb882855bc Cleanup the CoffeeScript converted code 2016-06-01 15:08:51 +09:00
Cheng Zhao
5bb8da6073 Explicitly initialize session before webContents 2016-06-01 14:57:35 +09:00
Cheng Zhao
523e8c2e1c Update libchromiumcontent and brightray for #5781 2016-06-01 14:53:05 +09:00
Cheng Zhao
0565c42add Merge pull request #5812 from vasumahesh1/feature-pdf
webContents: custom pageSize for printToPDF
2016-06-01 05:52:08 +00:00
Colin Eberhardt
89adc122c3 Minor typo fixes 2016-06-01 06:36:45 +01:00
Cheng Zhao
28c9dcc393 Merge pull request #5817 from electron/plist-vars
Add variables for plist paths
2016-06-01 04:33:27 +00:00
Cheng Zhao
15d32a9096 Merge pull request #5820 from electron/session-check
Throw error when session module is used before app is ready
2016-06-01 03:22:00 +00:00
Cheng Zhao
8dfbbcefc8 Throw error when session module is used before app is ready 2016-06-01 10:53:06 +09:00
Cheng Zhao
d105524135 Cleanup the JavaScript code of session 2016-06-01 10:42:24 +09:00
Kevin Sawicki
18f005092b Merge pull request #5819 from gjtorikian/patch-1
Fix typo
2016-05-31 17:56:16 -07:00
Garen Torikian
2aa1aedd92 Fix typo 2016-05-31 17:51:09 -07:00
Kevin Sawicki
606fc1a5b7 Add plist path variables 2016-05-31 16:48:03 -07:00
Vasu Mahesh
fc6628d159 Add: custom pageSize for printToPDF 2016-05-31 22:40:11 +05:30
Cheng Zhao
f5839c3a5b Merge pull request #5782 from electron/store-icons
Keep copies of window icons
2016-05-31 10:07:15 +00:00
Cheng Zhao
aea2135016 Keep copies of window icons 2016-05-31 17:47:45 +09:00
Plusb Preco
a454cc8260 📝 Update Korean docs as upstream
[ci skip]
2016-05-31 16:14:56 +09:00
Plusb Preco
31f2ac8bf3 📝 Update README.md
[ci skip]
2016-05-31 16:14:40 +09:00
Cheng Zhao
6c705fdd70 Merge pull request #5776 from electron/fix-node-output
Correctly redirect output to console on Windows
2016-05-31 03:19:58 +00:00
Cheng Zhao
4d8994df92 spec: child_process.fork shouble be able to pipe stdio 2016-05-31 11:05:58 +09:00
Cheng Zhao
381da76967 Correctly redirect output to console 2016-05-31 10:19:13 +09:00
Cheng Zhao
543d4bb2b1 Merge pull request #5770 from electron/clear-before-notice
Clear the buffers before notifying the other end of the pipe
2016-05-30 22:52:01 +00:00
Cheng Zhao
f02143b8f2 Clear the buffers before notifying the other end of the pipe 2016-05-30 22:38:01 +09:00
Cheng Zhao
0c93b21a5f Merge pull request #5769 from electron/fetch-job-cleanup
Refactor the URLRequestFetchJob code
2016-05-30 12:08:12 +00:00
Cheng Zhao
49f1278601 Refactor the URLRequestFetchJob code
This makes the read end and write end of the pipe have same logic, so it
is more easy to maintain.
2016-05-30 20:31:00 +09:00
Cheng Zhao
912cedc593 Merge pull request #5753 from deepak1556/url_request_fetch_job_patch
protocol: store initial response data for when resource loader becomes ready
2016-05-30 10:53:53 +00:00
Cheng Zhao
6e14a55817 Merge pull request #5768 from electron/fix-web-securiy-node-integration
Initialize script context in DidClearWindowObject
2016-05-30 08:01:48 +00:00
Cheng Zhao
ad3b3e0162 Merge pull request #5766 from kcrt/jpdocs
Japanese: add web-view-tag.md
2016-05-30 07:51:55 +00:00
Cheng Zhao
6755aa44f6 Initialize script context in DidClearWindowObject
Doing it in RunScriptsAtDocumentStart would somehow result in weird
results when webSecurity is off.
2016-05-30 16:34:28 +09:00
Cheng Zhao
ce0d3d93ab spec: disablewebsecurity should not break preload and node integration 2016-05-30 15:23:09 +09:00
TAKAHASHI Kyohei
5ab86cc2df 📝 trivial change in web-view-tag.md
There is a mistake about the information of `stopFindInPage`.
[ci skip]
2016-05-30 14:02:15 +09:00
TAKAHASHI Kyohei
12631a18c0 📝 Japanese: add web-view-tag.md 2016-05-30 13:59:43 +09:00
Cheng Zhao
7ec467e337 docs: Move the "Packaging Tools" out of "Rebranding" chapter 2016-05-30 10:37:32 +09:00
Cheng Zhao
a176aaee01 Merge pull request #5734 from danhp/fix-aspect-ratio
Fix 'setAspectRatio(0)' not resetting the default behaviour.
2016-05-30 01:14:03 +00:00
Cheng Zhao
3e41aebaa7 Merge pull request #5763 from electron/window-icon-size
Choose the correct icon size for Windows taskbar
2016-05-30 01:01:28 +00:00
Cheng Zhao
26fa963a70 Merge pull request #5720 from danhp/release-single-instance
Add 'app.releaseSingleInstance()'
2016-05-30 00:51:13 +00:00
Cheng Zhao
5a9eb5cfa6 Choose the correct icon size for Windows taskbar 2016-05-30 09:46:42 +09:00
Cheng Zhao
79cb648b6b Merge pull request #5726 from danhp/fix-context-menu
Fix context menus only showing on primary monitor.
2016-05-30 00:16:21 +00:00
Cheng Zhao
09796587b4 Remove trailing whitespaces and cleanup the code logic 2016-05-30 09:12:16 +09:00
Cheng Zhao
ec53e49fad Merge pull request #5718 from felixrieseberg/windows-fullscreenable
Fix setFullscreen() on Windows
2016-05-30 00:08:16 +00:00
Cheng Zhao
9f0fc96025 Merge pull request #5711 from electron/extension-code-cleanup
Implement partial chrome.* API for devtools extension
2016-05-29 23:29:08 +00:00
Plusb Preco
b78f7701e5 📝 Update Korean docs as upstream
[ci skip]
2016-05-30 01:59:32 +09:00
Daniel Pham
34af9794a2 Add test for 'setAspectRatio(0)' 2016-05-29 08:47:42 -04:00
deepak1556
9d8af43617 add spec 2016-05-29 13:43:26 +05:30
deepak1556
23fbb57d72 protocol: store response data when reader is not ready 2016-05-29 13:17:31 +05:30
Cheng Zhao
d1e56f416c Update the docs on using DevTools extension 2016-05-29 15:19:41 +09:00
Cheng Zhao
5f3fdbe635 Simplify the implementation of sendToAll 2016-05-29 12:10:32 +09:00
Cheng Zhao
de001a9bbf Use meaningful name for extensionId 2016-05-29 11:57:20 +09:00
Cheng Zhao
ec1944c146 Implement chrome.tab.onCreated/onRemoved APIs 2016-05-29 11:50:14 +09:00
Cheng Zhao
2431d886bf Current handle sender.tab for background pages 2016-05-29 10:46:48 +09:00
Cheng Zhao
dd804d7432 Enable specifying custom command line switches 2016-05-29 10:34:53 +09:00
Cheng Zhao
f693b042b5 Fix js lint warnings 2016-05-28 22:46:15 +09:00
Cheng Zhao
747f910ce0 Merge pull request #5736 from electron/missing-has-own-property
Support objects with no prototype over IPC
2016-05-28 13:42:30 +00:00
Cheng Zhao
3c7d94f2d9 Merge pull request #5742 from electron/duplicate-hidden-inset-check
Remove duplicate hidden-inset check
2016-05-28 13:42:15 +00:00
Cheng Zhao
f4fe60d126 Set default mimeType for BufferJob 2016-05-28 22:36:22 +09:00
Cheng Zhao
30dca2b4e1 Pages in chrome extension should not have node integration 2016-05-28 21:46:53 +09:00
Cheng Zhao
9ed4730cba Pass sender for chrome.runtime.onMessage 2016-05-28 21:45:23 +09:00
Cheng Zhao
5eb9ed1729 Implement chrome.tabs.sendMessage 2016-05-28 21:35:07 +09:00
Cheng Zhao
62fb4f9820 Implement chrome.runtime.sendMessage 2016-05-28 21:23:43 +09:00
Cheng Zhao
ba315248e0 Use ipcRenderer.sendTo to get rid of routers in main process 2016-05-28 21:13:00 +09:00
Cheng Zhao
a58b84bbd7 spec: ipcRenderer.sendTo sends message to WebContents 2016-05-28 20:50:30 +09:00
Cheng Zhao
ae1f442b02 Add ipcRenderer.sendTo 2016-05-28 20:50:28 +09:00
Cheng Zhao
d55b96fdf5 Clean up the Chrome API implementation code 2016-05-28 20:33:18 +09:00
Cheng Zhao
31628abadc Implement chrome.tabs.executeScript 2016-05-28 16:41:12 +09:00
Cheng Zhao
db94121360 Implement port.sender 2016-05-28 16:01:16 +09:00
Cheng Zhao
f5b430d9e1 Inject chrome.* to content scripts 2016-05-28 15:37:44 +09:00
Cheng Zhao
d8db695712 Handle port disconnecting 2016-05-28 12:07:08 +09:00
Cheng Zhao
599d3c147b Background pages and content script should be loaded on startup 2016-05-28 10:39:11 +09:00
Cheng Zhao
e76c36a9a8 Make simple runtime.connect work 2016-05-28 10:26:41 +09:00
Cheng Zhao
dfe7ae2124 Add webContents.fromId 2016-05-28 10:10:24 +09:00
Kevin Sawicki
5deb86d6f9 Merge pull request #5744 from aaronang/docs-improve-structure-of-source-code
📝 Indicate directories in the Structure of Source Code section
2016-05-27 15:41:28 -07:00
Aaron Ang
0a03dcd481 📝 Indicate directories in the Structure of Source Code section
[ci skip]
2016-05-28 00:22:47 +02:00
Kevin Sawicki
6e8945d7fa Merge pull request #5738 from electron/remove-deprecated-apis-from-docs
Remove deprecated APIs from the docs
2016-05-27 15:10:45 -07:00
Kevin Sawicki
1704b1ad53 Remove APIs that are no longer present 2016-05-27 15:08:29 -07:00
Kevin Sawicki
d02c1fbbf4 Merge pull request #5670 from electron/custom-fork-docs
Create guide for how to create your own from-source Electron fork
2016-05-27 14:34:49 -07:00
Kevin Sawicki
6add7f8d49 we -> it 2016-05-27 14:34:23 -07:00
Kevin Sawicki
ba6c8b531f Add ELECTRON_REPO example 2016-05-27 14:06:40 -07:00
Kevin Sawicki
82bc98ec3c Put - at end of previous line 2016-05-27 14:06:04 -07:00
Kevin Sawicki
1e28e3fc27 Add trailing slashes to directories 2016-05-27 14:06:04 -07:00
Kevin Sawicki
2effa32e3e Tighten up section title 2016-05-27 14:06:04 -07:00
Kevin Sawicki
f17e64e726 Tweak fork section 2016-05-27 14:06:04 -07:00
Kevin Sawicki
556b39c6f2 ATOM_SHELL -> ELECTRON in env vars 2016-05-27 14:06:04 -07:00
Kevin Sawicki
4734cbaf1c Move custom fork content to app distribution doc 2016-05-27 14:06:04 -07:00
Paul Betts
153a7f19ae Add notes on S3 directory structure 2016-05-27 14:06:04 -07:00
Paul Betts
0b27db2ef4 Create guide for how to create your own from-source Electron fork
This PR adds the notes on how to use Surf to build and upload a custom version of Electron
2016-05-27 14:06:04 -07:00
Kevin Sawicki
b465f2c3c4 Remove duplicate hidden-inset check 2016-05-27 13:27:35 -07:00
Kevin Sawicki
1e99f656cc Merge pull request #5737 from electron/browser-window-proxy-print
Add print() to BrowserWindowProxy
2016-05-27 11:33:08 -07:00
Kevin Sawicki
84f6015037 Call print on webContents 2016-05-27 11:11:55 -07:00
Felix Rieseberg
fa7f084625 📠 Add print() to BrowserWindowProxy
Closes #5685
2016-05-27 11:11:19 -07:00
Kevin Sawicki
fc4b224dec Add asserts for properties 2016-05-27 10:52:56 -07:00
Kevin Sawicki
59dd7ca9df Guard against object with no hasOwnProperty 2016-05-27 10:46:02 -07:00
Kevin Sawicki
7cf6be07a6 Add failing spec for remote property with no prototype 2016-05-27 10:45:39 -07:00
Kevin Sawicki
ac394ec3ef Merge pull request #5725 from electron/clipboard-api-names
Upper case initialisms in clipboard API
2016-05-27 09:09:12 -07:00
Daniel Pham
0c710fce33 🍎 Fix 'setAspectRatio(0)' not resetting the default behaviour. 2016-05-27 08:56:34 -04:00
Cheng Zhao
9ab76fb884 Add webContents.sendToAll to send message to all frames 2016-05-27 16:58:49 +09:00
Cheng Zhao
c1facec5a6 No need to hijack setInjectedScriptForOrigin 2016-05-27 15:12:49 +09:00
Cheng Zhao
134f9019eb Enable node integration for pages in devtools extension 2016-05-27 15:10:46 +09:00
Cheng Zhao
7e1f159185 Run content scripts at correct phase 2016-05-27 11:12:51 +09:00
Cheng Zhao
49d9446cce Implement a simple content script injector 2016-05-27 10:29:57 +09:00
Cheng Zhao
97c04735a2 Handle unloading devtools correctly 2016-05-27 09:55:59 +09:00
Cheng Zhao
a63ff714f8 Read content_scripts to preferences 2016-05-27 09:47:37 +09:00
Cheng Zhao
7eab259d92 Make it possible to only set preferences for BrowserWindow 2016-05-27 09:20:46 +09:00
Cheng Zhao
4fb9e20c33 Add API to set render process preferences 2016-05-27 08:51:02 +09:00
Daniel Pham
f4c3f0423a 🎁 Add 'app.releaseSingleInstance()' 2016-05-26 18:50:06 -04:00
Cheng Zhao
b646d7a55c The consts 2016-05-27 07:43:23 +09:00
Daniel Pham
b0c72adbe1 🍎 Fix context menus only showing on primary monitor. 2016-05-26 17:43:38 -04:00
Kevin Sawicki
23962e133e Use correct TODO format 2016-05-26 14:28:33 -07:00
Kevin Sawicki
efeb9647ff Update docs for new API names 2016-05-26 14:26:12 -07:00
Kevin Sawicki
71b73a9cfb Use new APIs 2016-05-26 14:24:47 -07:00
Kevin Sawicki
dc7316f52f Upper case abbreviations 2016-05-26 14:23:20 -07:00
Felix Rieseberg
836f8ab33c 🐛 Fix setFullscreen() on Windows
This ensures that a BrowserWindow responds to `setFullscreen(true)` if
`full screenable` was not defined during creation.

This bug was on Windows only.
2016-05-26 11:52:25 -07:00
Cheng Zhao
cdfbe876a5 Make sure chrome.devtools.inspectedWindow.tabId is set 2016-05-26 19:57:10 +09:00
Cheng Zhao
edd8210ae5 Add simple support for background page 2016-05-26 19:57:10 +09:00
Cheng Zhao
99c1434051 Store the original manifest file 2016-05-26 18:38:20 +09:00
Cheng Zhao
513b66f207 Cleanup chrome-extension.js after the Coffe2ES transfer 2016-05-26 18:38:20 +09:00
Cheng Zhao
f29598d907 getHostForPath => generateHostForPath
The original name implies no side effect, but is is not true.
2016-05-26 18:38:20 +09:00
Cheng Zhao
c1272743b9 Bump v1.2.0 2016-05-26 18:07:52 +09:00
Cheng Zhao
eeb996e92f Merge pull request #5710 from electron/chrome-lastest-stable
Update to Chrome 51.0.2704.63
2016-05-26 09:07:24 +00:00
Cheng Zhao
eb8284e285 Update to Chrome 51.0.2704.63 2016-05-26 18:06:55 +09:00
Cheng Zhao
20b09e9d03 Merge pull request #5701 from danhp/propagate-close
Properly notify observers when window prevents close
2016-05-26 05:33:55 +00:00
Cheng Zhao
93b8237e1f Merge pull request #5700 from felixrieseberg/standard-7
Implement JavaScript Standard Style 7
2016-05-26 04:57:36 +00:00
Cheng Zhao
8a4b7eb062 Merge pull request #5689 from cdaringe/master
Support non-native promises
2016-05-26 04:49:40 +00:00
Cheng Zhao
4ea7602871 Merge pull request #5684 from electron/webview-visibilitychange
Support document visibility and events in webviews
2016-05-26 01:07:24 +00:00
Cheng Zhao
fa1246ccf7 Merge pull request #5683 from electron/no-more-atom-shell
Rename remaining Atom Shell references
2016-05-26 01:06:36 +00:00
Cheng Zhao
0b9c11a5f2 Fix pylint warnings 2016-05-26 10:06:25 +09:00
Kevin Sawicki
4e44900930 Initialize guest_instance_id 2016-05-25 18:05:37 -07:00
Daniel Pham
d1c302800f Fix: Properly notify observers when window prevents close 2016-05-25 19:26:57 -04:00
Felix Rieseberg
bef6748c06 🎨 Implement JS Standard Code Style 7
Updates Standard Code Style to 7 (latest major) and ensures that code
is conform.

 * camelCase is now enforced
 * No assignments in return statements
2016-05-25 16:20:49 -07:00
Kevin Sawicki
75754804af Use auto for embedder var 2016-05-25 10:34:33 -07:00
Kevin Sawicki
88f665bc1b Restore original include location 2016-05-25 10:28:35 -07:00
Kevin Sawicki
814e4377a4 Restore original comment position 2016-05-25 10:26:59 -07:00
Kevin Sawicki
6632547b17 parent -> embedder 2016-05-25 10:26:20 -07:00
Kevin Sawicki
89ffa02d75 Tweak comment 2016-05-25 10:26:05 -07:00
Kevin Sawicki
b1ce57faa9 Remove redundant atom:: namespace use 2016-05-25 10:22:43 -07:00
Kevin Sawicki
03c6fbf80f 🎨 2016-05-25 10:20:00 -07:00
Kevin Sawicki
f58322891b Remove added switch/option 2016-05-25 10:17:35 -07:00
Kevin Sawicki
583bb49f6c Get hidden state by using parent window directly 2016-05-25 10:13:12 -07:00
Kevin Sawicki
69c69880e5 Tweak spec description 2016-05-25 09:12:52 -07:00
Kevin Sawicki
4e68a8d16e Remove logging in parent page 2016-05-25 09:12:52 -07:00
Kevin Sawicki
73b07f76a3 Support document visiblity state and events in webviews 2016-05-25 09:12:52 -07:00
Kevin Sawicki
1e15ce6ccd Add failing spec for webview visiblity changes 2016-05-25 09:12:52 -07:00
cdaringe
32073fa079 🎨 Support non-native promises 2016-05-25 10:11:18 -06:00
Kevin Sawicki
9684f61e12 atom_gyp -> electron_gyp 2016-05-25 09:10:46 -07:00
Kevin Sawicki
6c8cf16508 Deprecate ATOM_SHELL_GITHUB_TOKEN 2016-05-25 09:08:10 -07:00
Kevin Sawicki
43f0dfd0ab Deprecate old S3 env vars 2016-05-25 09:08:09 -07:00
Kevin Sawicki
1bdb9f3de0 Add fallback s3 config values 2016-05-25 09:08:09 -07:00
Kevin Sawicki
94c8b0e1b1 atom_shell -> electron 2016-05-25 09:08:09 -07:00
Kevin Sawicki
7e209dd982 ATOM_SHELL_INTERNAL_CRASH_SERVICE -> ELECTRON_INTERNAL_CRASH_SERVICE 2016-05-25 09:08:09 -07:00
Kevin Sawicki
8f1943bc7b Link to other apps 2016-05-25 09:08:09 -07:00
Kevin Sawicki
3dd2f709e0 Remove mention of Atom Shell 2016-05-25 09:08:09 -07:00
Cheng Zhao
b86ded3b54 Merge pull request #5688 from enlight/patch-1
Improve documentation of `ses.cookies.set()`
2016-05-25 10:44:33 +00:00
Cheng Zhao
3ef0947718 Merge pull request #5687 from electron/fix-invalid-parameter
Ignore invalid parameter error on Window
2016-05-25 07:03:33 +00:00
Vadim Macagon
c2633460eb Improve documentation of ses.cookies.set()
Fix description of the `details.url` param in `ses.cookies.set()`, and clarify the fact that cookies without an expiration date will not be retained between sessions.
2016-05-25 12:46:17 +07:00
Cheng Zhao
34c4e797bb Truncate the strings passed to google_breakpad::CustomInfoEntry 2016-05-25 14:46:15 +09:00
Cheng Zhao
545c9f5bed Ignore invalid parameter error in Electron 2016-05-25 14:46:15 +09:00
Cheng Zhao
4cd0de0e87 Merge pull request #5682 from electron/remove-old-run-as-node-env-var
Remove ATOM_SHELL_INTERNAL_RUN_AS_NODE support
2016-05-25 02:17:18 +00:00
Cheng Zhao
b1226a908b Update node: remove ATOM_SHELL_INTERNAL_RUN_AS_NODE 2016-05-25 10:55:02 +09:00
Cheng Zhao
f34cd8767c Merge pull request #5658 from danhp/handoff-fallback
Add fallback URL to handoff
2016-05-25 01:13:03 +00:00
Daniel Pham
eb0889de38 🍎 Add fallback URL to handoff. 2016-05-24 21:06:14 -04:00
Cheng Zhao
e97ce6f7e1 Merge pull request #5669 from felixrieseberg/build-instructions
Update Windows Build Instructions
2016-05-24 23:49:37 +00:00
Kevin Sawicki
89538b19ee Upgrade node for ELECTRON_RUN_AS_NODE change 2016-05-24 10:42:09 -07:00
Kevin Sawicki
b68d1ecb83 Remove ATOM_SHELL_INTERNAL_RUN_AS_NODE support 2016-05-24 10:17:57 -07:00
Kevin Sawicki
407a5d4415 Merge pull request #5681 from electron/default-app-error-handling
Tweak default app error handling
2016-05-24 10:15:56 -07:00
Kevin Sawicki
3e15021c12 Remove . after path to prevent confusion 2016-05-24 09:56:36 -07:00
Kevin Sawicki
ca72d4346b application -> app for consitency 2016-05-24 09:53:23 -07:00
Kevin Sawicki
74cde4e714 Log stack when available 2016-05-24 09:51:09 -07:00
Kevin Sawicki
48522d4b70 Remove custom MODULE_NOT_FOUND code check 2016-05-24 09:45:32 -07:00
Kevin Sawicki
63b84923ce Update copy 2016-05-24 09:43:25 -07:00
Kevin Sawicki
4a35206302 🎨 2016-05-24 09:42:31 -07:00
Kevin Sawicki
6de4249af8 Tweak resolve filename error message 2016-05-24 09:41:31 -07:00
Kevin Sawicki
deb15e60b5 Lead with package.json path 2016-05-24 09:38:04 -07:00
Kevin Sawicki
f691a46d4d Use dialog.showErrorBox 2016-05-24 09:37:52 -07:00
Kevin Sawicki
67c88d2f8a Move Module require to top 2016-05-24 09:33:55 -07:00
Kevin Sawicki
4d56437a26 Merge pull request #5610 from bigtimebuddy/master
The "Error opening app" dialog
2016-05-24 09:22:11 -07:00
Felix Rieseberg
2a7590529e 📝 Update Windows Build Instructions
Closes #5655
2016-05-24 06:12:07 -07:00
Cheng Zhao
28e2058ff1 Merge pull request #5648 from electron/chrome51
Update to Chrome 51
2016-05-24 10:59:11 +00:00
Cheng Zhao
1dd98171f4 Bump v1.1.2 2016-05-24 15:59:21 +09:00
Cheng Zhao
994cc62031 Merge pull request #5668 from electron/strip-ffmpeg
Strip ffmpeg in zip file
2016-05-24 04:33:09 +00:00
Cheng Zhao
cd444e82f9 Merge pull request #5666 from electron/remote-promise-reject
Handle rejection of remote promises
2016-05-24 04:30:25 +00:00
Cheng Zhao
9d924bb6d7 Merge pull request #5662 from electron/electron-require
Always return internal module when requiring electron
2016-05-24 01:46:36 +00:00
Cheng Zhao
995a20a125 Merge pull request #5653 from electron/menu-position-fix
Fix context menu not showing correctly in devtools
2016-05-24 01:02:48 +00:00
Kevin Sawicki
677a317274 Strip ffmpeg in zip file 2016-05-23 15:47:07 -07:00
Jessica Lord
1ba07a9d6d Merge pull request #5659 from danhp/patch-2
Mention that x and y have to be used together when creating new window
2016-05-23 15:44:42 -07:00
Kevin Sawicki
a4f94b89b4 Add comment about Module path 2016-05-23 15:15:39 -07:00
Kevin Sawicki
5e2f36387f Move require spec to api-app-spec 2016-05-23 15:14:55 -07:00
Kevin Sawicki
4a41311409 Test that calling regular module succeeds 2016-05-23 15:14:55 -07:00
Kevin Sawicki
6ac0151e65 Remove lint warnings 2016-05-23 15:14:55 -07:00
Kevin Sawicki
fe0ec67623 Add spec for electron module require 2016-05-23 15:14:55 -07:00
Kevin Sawicki
19fd841c30 🎨 2016-05-23 15:14:55 -07:00
Kevin Sawicki
566b0676bc Pre-resolve electron require path 2016-05-23 15:14:55 -07:00
Kevin Sawicki
daea448b61 .coffee -> .js 2016-05-23 15:14:55 -07:00
Kevin Sawicki
7929daa48c Pass both callback values to then 2016-05-23 15:07:01 -07:00
Kevin Sawicki
f3af1dbd54 Add failing spec for rejected remote promise 2016-05-23 15:06:46 -07:00
Matt Karl
ee61a2880a Removes main error, fixes messaging for JSON parse 2016-05-23 16:47:55 -04:00
Kevin Sawicki
1c9fe8d23e Merge pull request #5664 from electron/cibuild-ps1
Add a Windows script to just invoke cibuild
2016-05-23 13:07:18 -07:00
Paul Betts
52888c97b5 Add a Windows script to just invoke cibuild 2016-05-23 12:37:47 -07:00
Matt Karl
58d9d2cf41 Adds JSON parse, invalid and missing main field errors 2016-05-23 15:00:55 -04:00
Daniel Pham
5010150c8c 📝 Mention that x and y have to be used together when creating new window
[ci skip]
2016-05-23 13:00:43 -04:00
Cheng Zhao
3402c7be3f Suppress ffi test on Windows 2016-05-23 23:31:00 +09:00
Cheng Zhao
37a4267450 Update brightray: fix Windows linking problem 2016-05-23 23:24:43 +09:00
Cheng Zhao
2208b8bd6e Update symbol names of icu 2016-05-23 22:53:50 +09:00
Cheng Zhao
2edf559571 Update brightray: fix OS X linking problem 2016-05-23 22:05:26 +09:00
Cheng Zhao
0d4f1abdf9 Move the menu sightly higher when repositioning the menu
Otherwise the menu is not able to show the last menu item and the arrow
will show.
2016-05-23 21:54:06 +09:00
Cheng Zhao
b866b34ac8 The unit of position is CGFloat 2016-05-23 21:53:50 +09:00
Cheng Zhao
fca91db133 Fix showing context menu in devtools 2016-05-23 21:08:16 +09:00
Cheng Zhao
badecb49f3 Update brightray: fix Linux linking problem 2016-05-23 19:50:05 +09:00
Cheng Zhao
9f858e1243 Merge branch 'master' into chrome51 2016-05-23 19:49:43 +09:00
Cheng Zhao
c489d6d4b3 Merge pull request #5638 from deepak1556/iwa_patch
browser: flags to control iwa enabled server whitelist
2016-05-23 10:48:30 +00:00
Cheng Zhao
208acd1b9c Update brightray: Manage NetLog in BrowserClient 2016-05-23 19:02:40 +09:00
Cheng Zhao
1b9bced8c0 Merge pull request #5644 from leethomas/fix/osx-aspect-ratio
🍎  let Cocoa handle keeping aspect ratio on window resize
2016-05-23 08:15:44 +00:00
Cheng Zhao
f756a3e682 Fix crash when quitting 2016-05-23 17:03:49 +09:00
Cheng Zhao
44651656dd Fix building on Windows 2016-05-23 16:39:19 +09:00
Cheng Zhao
9d82041923 Fix js lint warnings 2016-05-23 16:15:39 +09:00
Cheng Zhao
d6f9e57e33 Fix chrome.devtools not available in devtools extensions 2016-05-23 16:04:37 +09:00
Cheng Zhao
de1fc9d432 Fix building on Linux 2016-05-23 15:27:01 +09:00
deepak1556
f68d0f324f deprecate app.allowNTLMCredentialsForAllDomains 2016-05-23 11:44:21 +05:30
Cheng Zhao
a92b4a6da4 Make |button| default to left button
This fixes the failing test of sendInputEvent.
2016-05-23 14:27:39 +09:00
Cheng Zhao
fa0ce7ad5f Adjust to the new behaviors of beforeunload handler 2016-05-23 14:27:39 +09:00
Cheng Zhao
06800940ec Fix cpplint warnings 2016-05-23 13:03:43 +09:00
Cheng Zhao
4b675a741d Init feature list in node process
It is a new dependency of gin.
2016-05-23 13:01:47 +09:00
Cheng Zhao
530f19e956 Fix crash due to site_instace being freed early 2016-05-23 12:57:46 +09:00
Cheng Zhao
899cdb48d7 Fix using invalid pointer as SiteInstance 2016-05-23 12:46:14 +09:00
Cheng Zhao
a2bd55dd3c Adapt to changes of Chrome 51 API changes (Part 2) 2016-05-23 12:29:14 +09:00
leethomas
de27b34891 disregard extraSize when initially setting the aspect ratio 2016-05-22 19:09:21 -07:00
Cheng Zhao
7ba391da7c Update to API changes of Chrome 51 2016-05-23 10:59:39 +09:00
leethomas
1d61f987cb code styling 2016-05-22 18:59:00 -07:00
Cheng Zhao
05c2999651 Update to Chrome 51.0.2704.54 2016-05-23 10:11:19 +09:00
Cheng Zhao
fd5f120434 Merge pull request #5646 from electron/update-breakpad
Fix crash reporter not working on x64 Windows
2016-05-23 00:25:24 +00:00
leethomas
09de0c2766 call base SetAspectRatio in NativeWindowMac implementation 2016-05-22 17:22:57 -07:00
leethomas
ac6e4aff5e comments 2016-05-22 17:00:14 -07:00
Cheng Zhao
13b4c8bb06 Ignore invalid parameter error in crash service process 2016-05-23 08:59:34 +09:00
leethomas
7aaf974362 override SetAspectRatio for NativeWindowMac 2016-05-22 16:50:50 -07:00
leethomas
8f7a04f9c3 🍎 let Cocoa handle keeping the aspect ratio whenever the edges are dragged 2016-05-22 15:43:47 -07:00
deepak1556
62cad610e0 bring back app.allowNTLMCredentialsForAllDomains 2016-05-23 01:52:09 +05:30
Cheng Zhao
4c531e909b Update breakpad to lastest master 2016-05-22 22:06:12 +09:00
Cheng Zhao
b52b6e12c4 Merge pull request #5640 from electron/update-crashpad
Update crashpad to latest master
2016-05-22 12:47:34 +00:00
Cheng Zhao
48b161f210 Update crashpad to 35da3b6 2016-05-22 21:00:16 +09:00
Cheng Zhao
06da5d543c Merge pull request #5622 from kcrt/jpmanual
Japanese manual: Update tutorials and api
2016-05-22 07:57:36 +00:00
Cheng Zhao
5267d734bb Merge pull request #5634 from deepak1556/net_error_description_patch
renderer: generate net error strings when requested
2016-05-22 00:34:56 +00:00
deepak1556
3db2daf790 browser: flags to control iwa enabled server whitelist 2016-05-21 23:38:50 +05:30
TAKAHASHI Kyohei
9d02292dec Japanese manual: modified template string
modified based on the comments from Flatta
[ci skip]
2016-05-22 00:22:51 +09:00
TAKAHASHI Kyohei
77eb0e8e3f Japanese manual: Update tutorials and api
[ci skip]
2016-05-22 00:17:20 +09:00
Cheng Zhao
6f3d0e1782 Merge pull request #5603 from leethomas/osx-horizontal-sheet-offset
Osx horizontal sheet offset
2016-05-21 14:07:53 +00:00
Cheng Zhao
6c8ffcf7a0 Merge pull request #5631 from electron/x64-by-default-win32
Default to amd64 on Windows
2016-05-21 13:39:25 +00:00
Cheng Zhao
363ab2075c Update libchromiumcontent for #5618 2016-05-21 20:48:06 +09:00
deepak1556
c9b314d43c renderer: generate net error strings when requested 2016-05-21 10:21:15 +05:30
Paul Betts
0e63050916 Default to amd64 on Windows 2016-05-20 14:20:48 -07:00
Kevin Sawicki
8821cae34f Merge pull request #5630 from electron/env-var-headings
Use ### for env var headings
2016-05-20 14:05:15 -07:00
Kevin Sawicki
f16f48aa7c Tweak example intros 2016-05-20 14:04:01 -07:00
Kevin Sawicki
e1d9229507 Tweak intro sentence 2016-05-20 14:03:28 -07:00
Kevin Sawicki
588420ecd2 Use active voice 2016-05-20 14:02:10 -07:00
Kevin Sawicki
d56c36b4a7 Minor wording updates 2016-05-20 14:01:08 -07:00
Kevin Sawicki
d983eb42e6 Use ### for headings for consistency 2016-05-20 13:58:48 -07:00
Matt Karl
b08393a663 Fixed linting error 2016-05-20 16:01:08 -04:00
Matt Karl
a1e59b814c Changed default button, updated link 2016-05-20 13:29:42 -04:00
Kevin Sawicki
f52cd31d0d Merge pull request #5625 from electron/doc-headings
Capitalize Object in doc heading
2016-05-20 10:01:54 -07:00
Kevin Sawicki
f266b979af Capitalize Object 2016-05-20 09:25:10 -07:00
Matt Karl
25cb0fcbb9 Added Learn More button 2016-05-20 11:04:10 -04:00
Cheng Zhao
8b9d189671 Merge pull request #5624 from electron/hicon
Feed Windows APIs with ICO icons of appropriate size
2016-05-20 14:30:00 +00:00
Cheng Zhao
3182485e68 No need to reference the icon in Tray 2016-05-20 22:44:02 +09:00
Cheng Zhao
a93c9462ed Add BrowserWindow.setIcon 2016-05-20 22:22:15 +09:00
Cheng Zhao
b33c04d041 docs: Recommend to use ICO icon 2016-05-20 19:58:47 +09:00
Cheng Zhao
d26480b74e Correctly set window icon from ICO 2016-05-20 19:46:05 +09:00
Cheng Zhao
ea2807c890 Make it possible to get different size of icons from ICO 2016-05-20 17:51:05 +09:00
Cheng Zhao
0059e7bcf9 Use LoadIconMetric to load correct icon 2016-05-20 17:12:07 +09:00
Cheng Zhao
9e26e5c121 Load HICON directly in NotifyIcon 2016-05-20 16:55:22 +09:00
Cheng Zhao
67d9ae27c3 Remove the JavaScript wrapper for setContextMenu 2016-05-20 16:18:38 +09:00
Cheng Zhao
adfd99f5f0 Convert to mate::Handle<NativeImage> instead of gfx::Image 2016-05-20 16:14:40 +09:00
leethomas
9196a9f334 update docs 2016-05-19 20:32:14 -07:00
leethomas
7d93642f42 extend setSheetOffset to accept an optional 2nd offset 2016-05-19 20:32:06 -07:00
Cheng Zhao
7c34d8333c Store ico image in HCION 2016-05-20 11:31:02 +09:00
Cheng Zhao
d5f3e5d59a Bump v1.1.1 2016-05-20 09:30:24 +09:00
Cheng Zhao
8ac93e02c6 Merge pull request #5616 from electron/inherit-zoom
Inherit zoomFactor in webview
2016-05-20 00:27:06 +00:00
Cheng Zhao
4193fb1742 Merge pull request #5617 from electron/dont-return-from-on-functions
Remove returns from event listeners
2016-05-20 00:26:29 +00:00
Cheng Zhao
844f9e989b Merge pull request #5611 from jviotti/fix/invalid-archive-asar-exec
Override `child_process.execFile` asar patch for `child_process.exec`
2016-05-20 00:24:10 +00:00
Cheng Zhao
d6dffc570c Merge pull request #5614 from electron/bengotow-remote-docs
Update remote.md to mention enumerable property limitation
2016-05-19 23:54:20 +00:00
Cheng Zhao
4a075866de Merge pull request #5608 from Gaserd/patch-4
docs : Russian
2016-05-19 23:51:22 +00:00
Kevin Sawicki
cc7395eea8 Remove returns from event listeners 2016-05-19 15:28:08 -07:00
Kevin Sawicki
b09c81202a Add test for webview zoomFactor inheritance 2016-05-19 14:46:52 -07:00
Kevin Sawicki
4754e4aabb Add zoomFactor to guest params 2016-05-19 14:32:16 -07:00
Kevin Sawicki
fef2f789cd 🎨 2016-05-19 14:30:53 -07:00
Juan Cruz Viotti
1a27ecdad4 Override child_process.execFile asar patch for child_process.exec
NodeJS implements `child_process.exec` by simply passing the whole
command to `child_process.execFile`. See:

- https://github.com/nodejs/node/blob/master/lib/child_process.js#L90
- https://github.com/nodejs/node/blob/master/lib/child_process.js#L99

Electron patches `child_process.execFile` to add support for `asar`
archives by injecting logic that extracts the required files from the
`asar` to a temporary location before delegating the work to the
original `child_process.execFile`.

In order to decide whether to inject the custom `asar` extracting logic,
Electron makes use of a helper function called `splitPath()`. See:

- https://github.com/electron/electron/blob/master/lib/common/asar.js#L37

If the first argument of the returned array equals `true`, means that
the path is considered to be an `asar` archive, and thus the extraction
logic takes place. The problem is that if the command passed to
`child_process.execFile` *contains* a path to an asar archive, padded
with other commands/arguments, `splitPath()` will consider it to be an
`asar` archive, and will try to extract it, throwing a rightfully
`Invalid package` error.

Fixes: https://github.com/electron/electron/issues/5571
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-19 17:19:36 -04:00
Ben Gotow
2bade868bb Update remote.md to mention enumerable property limitation
#5599
2016-05-19 09:31:02 -07:00
Matt Karl
e87ced60e5 The "Error opening app" dialog, now with less attitude 2016-05-19 10:33:22 -04:00
Sergey
836e2e4e91 docs : Russian
Russian language for http://electron.atom.io/docs/tutorial/mac-app-store-submission-guide/
2016-05-19 16:46:42 +03:00
Cheng Zhao
a2b6731bf2 Merge pull request #5606 from electron/process-docs
Cleanup the docs of process object
2016-05-19 11:59:37 +00:00
Cheng Zhao
983d611e96 Cleanup the docs of process object 2016-05-19 20:12:56 +09:00
Cheng Zhao
0bd3e28a05 Merge pull request #5526 from electron/process-stats
Process and System memory statistics API
2016-05-19 10:34:01 +00:00
Cheng Zhao
480f0fbfd7 Merge pull request #5600 from tensor5/update_clang_only_if_needed
Update Clang only if needed
2016-05-19 10:29:29 +00:00
Cheng Zhao
590c2bcf23 Merge pull request #5604 from preco21/korean-docs-5
docs: Update Korean docs as upstream
2016-05-19 10:27:03 +00:00
Cheng Zhao
8fd9957453 Merge pull request #5605 from preco21/document-fixes-5
docs: Improve docs
2016-05-19 10:26:38 +00:00
Cheng Zhao
e488320d37 Ignore failures of OS X on Travis CI 2016-05-19 19:23:02 +09:00
Cheng Zhao
195e0e64d0 Update brightray for #5578 2016-05-19 19:22:32 +09:00
Cheng Zhao
17528a4dfd Merge pull request #5578 from deepak1556/disable_http2_patch
browser: flag to disable HTTP/2 and SPDY/3.1 protocols
2016-05-19 10:21:36 +00:00
Cheng Zhao
53d0db0a28 Merge pull request #5602 from electron/static-linking-vs-runtime
Link with VS2015 libraries statically for Release build
2016-05-19 09:50:53 +00:00
Plusb Preco
d6ab81c1da 📝 Fix link to improve readability
[ci skip]
2016-05-19 18:36:26 +09:00
Plusb Preco
3ee9eef308 📝 Remove unused link
[ci skip]
2016-05-19 18:34:08 +09:00
Plusb Preco
9cbcd228f3 📝 Adjust line length to 80
[ci skip]
2016-05-19 18:32:43 +09:00
Plusb Preco
e1bf0ea2b4 📝 Adjust line length to 80
[ci skip]
2016-05-19 18:28:29 +09:00
Plusb Preco
5c8ecd8a97 📝 Small fixes
* Adjust line length to `80`.
* Fix typos

[ci skip]
2016-05-19 18:28:00 +09:00
Plusb Preco
2b7c3735bd 📝 Update Korean docs as upstream
[ci skip]
2016-05-19 17:22:51 +09:00
Cheng Zhao
f8c1db160e Only use the osfhandle hack on Windows 2016-05-19 17:02:40 +09:00
Cheng Zhao
e609a5bee2 Fix passing fd across modules 2016-05-19 16:38:37 +09:00
leethomas
eaacbc86c7 📝 update english docs to include setSheetOffsets 2016-05-18 23:59:25 -07:00
Cheng Zhao
4702d8b640 No need to download and ship vs runtime libraries 2016-05-19 15:49:26 +09:00
leethomas
359123458d 🍎 allow x-axis offset to be set for sheets 2016-05-18 23:45:54 -07:00
Cheng Zhao
d8c05ecc0d Link with Vs2015 runtime statically for Release build 2016-05-19 15:06:47 +09:00
Cheng Zhao
f441ba2694 Merge pull request #5601 from electron/team-id
Include team ID in the base bundle ID
2016-05-19 03:24:31 +00:00
Cheng Zhao
5d906c0e4e docs: Team ID is now required for signing 2016-05-19 11:13:09 +09:00
Cheng Zhao
a361d50b95 Add team ID to base Bundle ID 2016-05-19 10:57:57 +09:00
Nicola Squartini
18b2094198 Update Clang only if needed 2016-05-19 10:14:57 +09:00
Kevin Sawicki
1032287511 Merge pull request #5588 from brunoqueiros/error-message
Improve error message
2016-05-18 17:41:57 -07:00
Cheng Zhao
d3beaa0b16 Merge pull request #5595 from miniak/asar-fix
Make js2asar.py more robust
2016-05-18 23:40:11 +00:00
Bruno Queiros
046cb0df8d 🎨 Use the same stack trace for both cases 2016-05-18 19:02:42 -03:00
Kevin Sawicki
97d903bca3 Merge pull request #5587 from kcrt/master
Japanese manual: add electron-versioning.
2016-05-18 13:55:10 -07:00
Kevin Sawicki
0456be1535 Merge pull request #5594 from Gaserd/patch-3
Create supported-platforms.md
2016-05-18 13:52:47 -07:00
Milan Burda
161bd89a24 Make js2asar.py more robust 2016-05-18 12:54:53 -07:00
Sergey
5f9976c46a Create supported-platforms.md
Create new file - supported-platforms.
Russian language for this page - http://electron.atom.io/docs/tutorial/supported-platforms/
2016-05-18 22:40:12 +03:00
Paul Betts
872c6ea763 📝 2016-05-18 11:08:04 -07:00
Paul Betts
e995befcd0 Move everything into atom_bindings 2016-05-18 11:07:30 -07:00
Paul Betts
d49302858b Merge pull request #5589 from Gaserd/patch-2
исправление ошибки в слове
2016-05-18 10:57:53 -07:00
Sergey
d3e0c08255 исправление ошибки в слове
ничего критичного, просто букву не ту поставили.
2016-05-18 18:04:52 +03:00
Bruno Queiros
06e3e65c1b 🎨 Improve error message 2016-05-18 11:00:08 -03:00
TAKAHASHI Kyohei
962ce6c44c Japanese manual: add electron-versioning.
electron-versioning.md is translated.
Other tutorial files are updated.
[ci skip]
2016-05-18 22:33:21 +09:00
Cheng Zhao
e05f795d1d Merge pull request #5584 from electron/sandbox-no-expl
Enable sandboxing without using temporary-exception
2016-05-18 10:02:30 +00:00
Cheng Zhao
906948218f docs: Update MAS guide without using temporary-exception 2016-05-18 16:48:22 +09:00
Cheng Zhao
deddf98533 Currently set base bundle ID 2016-05-18 16:42:26 +09:00
Plusb Preco
d7fdb16078 📝 Update Korean docs as upstream
[ci skip]
2016-05-18 16:41:21 +09:00
Cheng Zhao
d2a567d6ab Merge pull request #5582 from electron/notification-user-info
Pass userInfo in systemPreferences.subscribeNotification
2016-05-18 07:36:31 +00:00
Cheng Zhao
3d0b98c9ca Use string description for unknown types 2016-05-18 16:01:08 +09:00
Cheng Zhao
68cf267b1d Do not convert NSDictionary to JSON 2016-05-18 15:49:33 +09:00
Cheng Zhao
240c346d02 Ignore invalid JSON object when converting NSDictionary 2016-05-18 14:54:37 +09:00
Cheng Zhao
97250b53e8 Pass userInfo in subscribeNotification 2016-05-18 14:40:19 +09:00
Cheng Zhao
49cca0978d Merge pull request #5580 from electron/annoymous-web-contents
Add support for anonymous WebContents
2016-05-18 05:31:10 +00:00
Cheng Zhao
87c10b3ac2 Make non-public module accesible via remote 2016-05-18 13:57:48 +09:00
Cheng Zhao
5f6c468f0f Handle keyboard events for WebContents that do not have owner window 2016-05-18 13:57:48 +09:00
Cheng Zhao
dc9b3fcef7 Remove WebViewGuestDelegate::HandleKeyboardEvent 2016-05-18 13:57:48 +09:00
Cheng Zhao
d6cb84f8a3 WebContents without owner window should always open detached devtools 2016-05-18 13:57:48 +09:00
Cheng Zhao
998ce73ad9 Add webContents.id property 2016-05-18 13:57:48 +09:00
Cheng Zhao
8a061b7183 A normal WebContents can have no owner window 2016-05-18 13:57:48 +09:00
Cheng Zhao
118afab67b Make sure BrowserContext is always destroyed after WebContents 2016-05-18 13:57:48 +09:00
Plusb Preco
7fd3149031 📝 Update Korean docs as upstream
[ci skip]
2016-05-18 12:15:29 +09:00
Cheng Zhao
242508e22f Merge pull request #5574 from electron/devtools-extension-test
Add test that loads a devtools extension
2016-05-18 01:46:44 +00:00
Cheng Zhao
5368da18ad Merge pull request #5575 from electron/link-to-spectron
Add spectron to ChromeDriver doc
2016-05-18 01:34:56 +00:00
deepak1556
467ccabb7e browser: flag to disable HTTP/2 and SPDY/3.1 protocols 2016-05-18 06:56:58 +05:30
Cheng Zhao
397d0e34ee Merge pull request #5559 from electron/disable-webview
Disable webview when nodeIntegration is off
2016-05-18 01:26:58 +00:00
Cheng Zhao
27da0f3338 Merge pull request #5576 from electron/title-tweaks
Tweak doc headings
2016-05-18 01:26:27 +00:00
Cheng Zhao
c7f5210b50 Merge pull request #5567 from felixrieseberg/versioning
Add Information about Versioning
2016-05-18 00:43:23 +00:00
Cheng Zhao
7bd11c14f6 Update brightray to fix linking problem on Linux 2016-05-18 09:42:38 +09:00
Kevin Sawicki
cee31ff67a Remove semicolon 2016-05-17 16:42:37 -07:00
Kevin Sawicki
9266f9abfc Update interval id variable name 2016-05-17 16:42:21 -07:00
Kevin Sawicki
f95c46d987 Show last panel by id 2016-05-17 16:40:34 -07:00
Kevin Sawicki
866260a2a6 with -> on 2016-05-17 16:05:47 -07:00
Kevin Sawicki
bfb75df49c Tweak doc headings 2016-05-17 16:02:54 -07:00
Kevin Sawicki
b301c473cd Simplify sentence 2016-05-17 15:14:50 -07:00
Kevin Sawicki
3f3871b1be Add spectron section 2016-05-17 15:13:26 -07:00
Kevin Sawicki
2043356fa3 Recommend electron-chromedriver 2016-05-17 15:09:09 -07:00
Kevin Sawicki
13cfc2d2a0 Add comment about panel switching via input event 2016-05-17 15:05:58 -07:00
Kevin Sawicki
8d0c5c30b8 Use consistent function styles 2016-05-17 15:05:27 -07:00
Kevin Sawicki
0b4b79d0a4 Use control on non-mac platforms 2016-05-17 15:01:32 -07:00
Kevin Sawicki
7db2601ea8 DRY up specs 2016-05-17 14:59:33 -07:00
Kevin Sawicki
77b074fbad Add spec for undocked devtools 2016-05-17 14:56:00 -07:00
Paul Betts
dc86ec8ddd Come Correct with Wrapping 2016-05-17 14:54:33 -07:00
Kevin Sawicki
189380d4ea Add spec for devtools extension 2016-05-17 14:52:45 -07:00
Paul Betts
bfb4867e10 🔥 old docs 2016-05-17 14:52:01 -07:00
Paul Betts
1623622073 Dox 2016-05-17 14:48:49 -07:00
Paul Betts
ae2eec3efa Move process-stats methods to process 2016-05-17 14:47:56 -07:00
Paul Betts
b51be9b83f Add docs 2016-05-17 14:47:56 -07:00
Paul Betts
60bc2acd6c Linting 2016-05-17 14:47:56 -07:00
Paul Betts
cd7bc0e50c Rename Metrics => MemoryInfo so it's consistent 2016-05-17 14:47:56 -07:00
Paul Betts
75362450cd Everything is in KB 2016-05-17 14:47:56 -07:00
Paul Betts
191b054ff0 Implement process and system memory statistics 2016-05-17 14:47:56 -07:00
Paul Betts
f4538daa0a Wire it up 2016-05-17 14:47:56 -07:00
Paul Betts
a7ac7ba4c1 Add the dumbest new builtin that works 2016-05-17 14:47:56 -07:00
Felix Rieseberg
7e09b1664a 📝 Add Information about Versioning 2016-05-17 20:20:25 +02:00
Plusb Preco
ee9e28dfdf 📝 Update Korean docs as upstream
[ci skip]
2016-05-17 21:18:31 +09:00
Cheng Zhao
fb6f5320e7 Update brightray for #5348 2016-05-17 20:33:44 +09:00
Cheng Zhao
7ce87c470a docs: webview is only available with nodeIntegration on 2016-05-17 17:10:33 +09:00
Cheng Zhao
90f52169af No more need to check for nodeIntegration when creating guest view 2016-05-17 17:06:02 +09:00
Cheng Zhao
0140015500 spec: WebView is disabled when nodeIntegration is disabled 2016-05-17 17:04:13 +09:00
Cheng Zhao
c1399f9bdc Disable webview when nodeIntegration is off 2016-05-17 16:51:06 +09:00
Cheng Zhao
3fedea4b9e Merge pull request #5557 from electron/osx-buttons
Implement titleBarStyle without using NSFullSizeContentViewWindowMask
2016-05-17 16:48:45 +09:00
Cheng Zhao
13bfb099a2 Fix the toolbar showing when titleBarStyle is hidden-inset 2016-05-17 16:25:18 +09:00
Cheng Zhao
f53aabaef5 Implement titleBarStyle without using NSFullSizeContentViewWindowMask 2016-05-17 15:48:14 +09:00
Cheng Zhao
ecbb088ea6 Merge pull request #5542 from stevekinney/standardize-requires
Standardize requires
2016-05-16 10:42:12 +09:00
Cheng Zhao
f5442a4888 Merge pull request #5540 from kcrt/master
Update: Japanese version of MAS submission guide
2016-05-16 10:33:25 +09:00
Cheng Zhao
57f082055a Merge pull request #5509 from electron/bengotow/dialog-titles
Add buttonLabel param to showOpen/showSave dialogs
2016-05-16 10:27:28 +09:00
Cheng Zhao
e53bfad018 Fix building on Windows 2016-05-16 10:09:41 +09:00
Steve Kinney
0d3d097ce8 💄 Standarize requires in JavaScript API 2016-05-15 09:41:30 -04:00
Steve Kinney
2317b56ac4 💄 Make the power-save-blocker a bit more concise 2016-05-15 09:36:13 -04:00
TAKAHASHI Kyohei
16c870191f Update: Japanese version of MAS submission-guide 2016-05-15 15:42:35 +09:00
Ben Gotow
54c654530e Fix linux support 2016-05-15 01:29:13 -05:00
Ben Gotow
6217d497ed Fix build issues 2016-05-15 01:03:32 -05:00
Ben Gotow
84cce6c2c1 Don't default to "Open", "Save", just let OS decide 2016-05-15 01:03:32 -05:00
Ben Gotow
40c531737d Add buttonLabel param to showOpen/showSave dialogs 2016-05-15 01:03:32 -05:00
Cheng Zhao
88f3c34412 Merge pull request #5532 from stevekinney/patch-2
💄 Use ES6; clean up CoffeeScript conversion in BrowserWindow module
2016-05-15 12:38:28 +09:00
Steve Kinney
fd9c9c3be7 💄 Use spread operator instead of arguments object 2016-05-14 22:33:21 -04:00
Steve Kinney
236810a923 💄 Use ES6; clean up CoffeeScript conversion
💄 Destructure app module

Address linting errors
2016-05-14 22:33:20 -04:00
Cheng Zhao
88dc73ec3f Merge pull request #5533 from stevekinney/patch-3
💄 Destructure globalShortcut module
2016-05-15 11:16:19 +09:00
Cheng Zhao
195a4bb3c1 Merge pull request #5538 from electron/vs2015-runtime
Ship with runtime libraries of Visual Studio 2015
2016-05-15 11:15:49 +09:00
Cheng Zhao
c540721bd3 Merge pull request #5537 from electron/suppress-more-tests
Suppress the tests that need to call window.open on Travis CI
2016-05-15 11:15:42 +09:00
Steve Kinney
c11d18fe06 💄 Destructure globalShortcut module
💄 Remove globalShortcut property

Add back the globalShortcut property
2016-05-14 21:53:42 -04:00
Cheng Zhao
8ed3659bb8 Link with libraries of Visual Studio 2015 2016-05-15 10:41:43 +09:00
Cheng Zhao
ba7a32b16e Sync submodule recursively 2016-05-15 10:33:23 +09:00
Cheng Zhao
800ab50b56 Download redist files of VS2015 2016-05-15 10:30:19 +09:00
Cheng Zhao
f43b9665c1 And increase timeout for the rest 2016-05-15 10:00:29 +09:00
Cheng Zhao
14906eb6c8 Merge pull request #5530 from stevekinney/patch-1
💄 Add ES6; Clean up from CoffeeScript conversion in app module
2016-05-15 09:57:49 +09:00
Cheng Zhao
c53e47265d Merge pull request #5535 from Godoy/translate-pt-br
Translate tutorial/devtools-extension.md to Portuguese (pt-br).
2016-05-15 09:47:29 +09:00
Cheng Zhao
5986a302d1 Merge pull request #5531 from kcrt/patch-1
wrong link destination
2016-05-15 09:46:59 +09:00
Cheng Zhao
f5acc8b599 Merge pull request #5525 from stanfieldr/doc-improvements
A little confused by docs
2016-05-15 09:45:43 +09:00
Cheng Zhao
e5af03547f Merge pull request #5534 from kcrt/master
Translate tutorial/security.md to Japanese.
2016-05-15 09:41:52 +09:00
Cheng Zhao
861a79dd6a Suppress the tests that need to call window.open on Travis CI 2016-05-15 09:41:02 +09:00
Cheng Zhao
5fe270a78f Merge pull request #5522 from Wolfer/patch-1
Update application-distribution.md
2016-05-15 09:38:31 +09:00
Steve Kinney
b1275420a3 Require download_items inline 2016-05-14 19:43:30 -04:00
Adriano Godoy
fb161d5f1f PT-BR link to devtools-extension tutorial on README.md 2016-05-14 16:06:11 -03:00
Adriano Godoy
6ac24f592c Translate tutorial/devtools-extension.md to Portuguese (pt-br). 2016-05-14 16:01:52 -03:00
TAKAHASHI Kyohei
88d158f2c1 Translate tutorial/security.md to Japanese. 2016-05-15 02:37:55 +09:00
Steve Kinney
e5036c0988 Use anonymous function for wrapping native classes 2016-05-14 12:28:28 -04:00
TAKAHASHI, Kyohei
0b5efcbc75 wrong link destination 2016-05-15 00:36:11 +09:00
Steve Kinney
0785c3bd15 💄 Add spaces to comply with Standard 2016-05-14 11:31:08 -04:00
Steve Kinney
5dc88aa543 💄 Add ES6; Clean up from CoffeeScript conversion 2016-05-14 11:17:46 -04:00
Cheng Zhao
5ec2e8d7e5 Merge pull request #5413 from electron/process-resource-usage
Fetch Process resource usage from WebContents
2016-05-14 23:28:51 +09:00
Cheng Zhao
3214fdd73f Fix failing CI on OS X 2016-05-14 23:11:13 +09:00
Cheng Zhao
d3e359ab2d No need for explicit type conversion 2016-05-14 22:50:05 +09:00
Cheng Zhao
c740438032 Rename webFrame.purgeCaches to webFrame.clearCache
This matches the name of session.clearCache.
2016-05-14 22:48:25 +09:00
Cheng Zhao
7459581d13 Fix cpplint warnings 2016-05-14 22:40:18 +09:00
Cheng Zhao
03052e81c1 Merge pull request #5519 from danhp/context-menu-docs
Fix indentation for context menu docs.
2016-05-14 21:49:16 +09:00
Daniel Pham
1bac1a9028 📝 Fix styling of the context-menu docs
[ci skip]
2016-05-14 08:43:23 -04:00
Cheng Zhao
de08473ea3 Merge pull request #5518 from danhp/popup-show-all
Fix context menu positioning on OS X
2016-05-14 20:00:30 +09:00
Robert Stanfield
2d46f6f66f It isn't entirely clear to me that 'window-all-closed' is used for
this purpose. I originally looked for an event that would fire if
all windows were closed and the reason was NOT due to the application
quitting; however, this differs in that it is called regardless of
whether the app was quitting.
2016-05-13 21:34:42 -04:00
Serg F
2287ad6d37 Update application-distribution.md 2016-05-13 23:19:56 +03:00
Paul Betts
2234307d41 Whitespace issues 2016-05-13 10:54:10 -07:00
Paul Betts
652913f8d6 Just return the type directly 2016-05-13 10:54:10 -07:00
Paul Betts
19cba3ff85 Use doubles to represent memory size in bytes 2016-05-13 10:54:10 -07:00
Paul Betts
6f0057532a Forgot scripts 2016-05-13 10:54:10 -07:00
Paul Betts
908084c0fd Document resource methods 2016-05-13 10:54:10 -07:00
Paul Betts
d83c36e0fd Add a way to drop all cached memory 2016-05-13 10:54:10 -07:00
Paul Betts
22a3765394 Wire up a new method in web frame 2016-05-13 10:54:10 -07:00
Paul Betts
61e775c055 Write native_mate converters for WebCache::ResourceTypeStat and friends 2016-05-13 10:54:10 -07:00
Daniel Pham
bebf8eabca 🍎 Fix context menu positioning 2016-05-13 10:54:40 -04:00
Cheng Zhao
847d9580b7 Bump v1.1.0 2016-05-13 17:00:02 +09:00
Cheng Zhao
faf896db67 Merge pull request #5461 from electron/chrome50
Continue the work of Chrome 50 upgrade
2016-05-13 14:52:09 +09:00
Cheng Zhao
10f144069d Allow using __weak keyword 2016-05-13 13:49:53 +09:00
Cheng Zhao
29b799de73 Update clang revision to 261368 2016-05-13 11:18:16 +09:00
Cheng Zhao
525d456f7c Update to Chrome 50.0.2661.102 2016-05-13 11:14:43 +09:00
Cheng Zhao
f1142cf2b5 Adapt to changes on hash functions of Chrome 50 2016-05-13 11:12:15 +09:00
Cheng Zhao
08779eb6d9 Use VS2015 on appveyor 2016-05-13 11:12:15 +09:00
Cheng Zhao
2d7b5c53b1 Change version number so native modules can build 2016-05-13 11:12:15 +09:00
Cheng Zhao
8dc8f8f485 Update libchromiumcontent: fix Release build on Windows 2016-05-13 11:12:01 +09:00
Cheng Zhao
4a409b870e chromedriver's version is now v2.21 2016-05-13 11:12:01 +09:00
Cheng Zhao
bb5b30b8a0 It is not allowed to run scripts in DidCreateDocumentElement 2016-05-13 11:12:01 +09:00
Cheng Zhao
906ae043f9 Fix crash when creating external buffer 2016-05-13 11:12:01 +09:00
Cheng Zhao
0ad03d9ff7 Suppress crashReporter test on x64 Windows for now 2016-05-13 11:12:01 +09:00
Cheng Zhao
3aaff23f78 Do not call import_vs_env for non-win32 2016-05-13 11:12:01 +09:00
Cheng Zhao
e77582baee Fix compilation warnings introduced by VS 2015 2016-05-13 11:12:01 +09:00
Cheng Zhao
2497c73009 Import build env from VS 2015 2016-05-13 11:12:01 +09:00
Cheng Zhao
73223fe5c3 Upgrade to Node v6 2016-05-13 11:12:01 +09:00
Cheng Zhao
9c0f298064 Update libchromiumcontent to fix renderer process crash 2016-05-13 11:12:01 +09:00
Cheng Zhao
525e3ee9c6 Update crashpad with AppKit patch 2016-05-13 11:11:50 +09:00
Cheng Zhao
9ccb495f60 Do not remove the patch for Command key 2016-05-13 11:11:50 +09:00
Cheng Zhao
35d9e37220 Simplify the check for web_frame_widget 2016-05-13 11:11:50 +09:00
Brian R. Bondy
e8c4fb6903 setBaseBackgroundColor moved to WebFrameWidget 2016-05-13 11:11:50 +09:00
Brian R. Bondy
a9652052c4 Update Brightray and libchromiumcontent v50 ref (Electron maintainer use
your refs)
2016-05-13 11:11:50 +09:00
Brian R. Bondy
a52dbf0784 Update SharedMemory buf constructor 2016-05-13 11:07:17 +09:00
Brian R. Bondy
900001e547 Update PlatformCanvas to SKCanvas 2016-05-13 11:07:17 +09:00
Brian R. Bondy
37ccd34a88 Update x11 global shortcut listeners 2016-05-13 11:07:17 +09:00
Brian R. Bondy
f93fa53aea Update linux menu overrides 2016-05-13 11:07:17 +09:00
Brian R. Bondy
0253aec0cd Add SkUserConfig.h with blank SkDebugf macro
This file was copied from:
./third_party/skia/include/config/SkUserConfig.h

But because of this linking error we needed to
define a macro for SkDebugf.

```
"SkDebugf(char const*, ...)", referenced from:
      SkBitmap::allocPixels(SkImageInfo const&, unsigned long) in
      libbrave_lib.a(brave_lib.native_desktop_media_list.o)
      ld: symbol(s) not found for architecture x86_64
```

There used to be a hack to copy this file here which was removed:
8de9d9e2bc
2016-05-13 11:07:17 +09:00
Brian R. Bondy
ce7c1023d5 Minimum fixes needed for chromium_src 2016-05-13 11:07:17 +09:00
Brian R. Bondy
02d72c81af Fix linking problem with IPC::MessageT
IPC::MessageT<ChromeUtilityHostMsg_ProcessStarted_Meta, std::__1::tuple<>, void>::MessageT(IPC::Routing)
2016-05-13 11:07:17 +09:00
Brian R. Bondy
22863b9f31 Fix GURL coonstructor from webkit string error 2016-05-13 11:07:17 +09:00
Brian R. Bondy
48e62ac0b5 Remove wwebaudio from web_preferences
Becauseit doesn't exist there anymore
2016-05-13 11:07:17 +09:00
Brian R. Bondy
732936713a GetNativeScreen -> GetScreen 2016-05-13 11:07:17 +09:00
Brian R. Bondy
f418ac5b5d Update to brave crashpad dep (Electron maintainer rebase this to use
your ref)
2016-05-13 11:07:17 +09:00
Brian R. Bondy
d889bdef49 Remove user_gesture parameter from PermissionManager::RequestPermission 2016-05-13 11:07:17 +09:00
Brian R. Bondy
c04353a845 WebFindOptions in its own header 2016-05-13 11:07:17 +09:00
Brian R. Bondy
ff91aeb5d4 Iterator to use size_t 2016-05-13 11:07:17 +09:00
Brian R. Bondy
8a2aebd03f PermissionStatus constant update 2016-05-13 11:07:17 +09:00
Brian R. Bondy
82f3bb26ce AccessTokenSet -> AccessTokenMap 2016-05-13 11:07:17 +09:00
Brian R. Bondy
2da39d31aa Update to new pref service location in components 2016-05-13 11:07:17 +09:00
Brian R. Bondy
5fda9bc6ae LoadAccessTokensCallbackType -> LoadAccessTokensCallback 2016-05-13 11:07:17 +09:00
Brian R. Bondy
93e9cf4ac1 No more GetCookieMonster 2016-05-13 11:07:17 +09:00
Brian R. Bondy
dc7928021d Widevine AAC CDM no longer avail
See chromium ./third_party /widevine/cdm/widevine_cdm_common.h
2016-05-13 11:07:17 +09:00
Brian R. Bondy
b78fe04f8f Remove Vorbis from CDM support
See https://codereview.chromium.org/1690353002
2016-05-13 11:07:17 +09:00
Brian R. Bondy
8d4ed037a2 Add referrer_schems to AddAdditionalSchemes 2016-05-13 11:07:17 +09:00
Cheng Zhao
57b0f288cb Bump v1.0.2 2016-05-13 09:21:33 +09:00
Cheng Zhao
ceea7adf98 Update brightray for electron/brightray#219 2016-05-13 09:19:46 +09:00
Cheng Zhao
751ebe7377 Merge pull request #5513 from danhp/patch-1
Document 'Tab' as a supported accelerator.
2016-05-13 09:08:32 +09:00
Cheng Zhao
c59f38c370 Merge pull request #5508 from electron/bengotow/docs-tweaks
Add to security checklist
2016-05-13 08:46:08 +09:00
Daniel Pham
9a72afc963 📝 Document 'Tab' as a supported accelerator.
[ci skip]
2016-05-12 16:00:58 -04:00
Ben Gotow
b9b6e8aa68 Add to security checklist 2016-05-12 10:42:29 -07:00
Cheng Zhao
b32bc8cf3e Merge pull request #5502 from anthonyryan1/master
Replace gtk_widget_hide_all with gtk_widget_hide
2016-05-12 19:37:25 +09:00
Cheng Zhao
01dcee6449 Update brightray for #5503 2016-05-12 18:01:03 +09:00
Machisté N. Quintana
83e3d059b4 Merge pull request #5504 from dalabarge/patch-1
Fixed grammar issue.
2016-05-11 19:29:36 -07:00
Daniel LaBarge
eef9d9beaf Fixed grammar issue. 2016-05-11 21:08:01 -05:00
Cheng Zhao
f86bd75f82 Merge pull request #5501 from ecmadao/patch-1
Update screen.md
2016-05-12 10:36:38 +09:00
Cheng Zhao
9a35d54ecf Merge pull request #5500 from radarhere/master
Fixed typo
2016-05-12 10:26:39 +09:00
Cheng Zhao
989dfe01e1 Merge pull request #5496 from deepak1556/linux_dialog_icon_patch
dialog: resize icon on linux before showing
2016-05-12 10:24:32 +09:00
ecmadao
b81742f335 Update screen.md
bugfix-修改错别字
2016-05-12 09:21:10 +08:00
Cheng Zhao
5a702425eb Merge pull request #5489 from felixrieseberg/windows-store-guide
Add Windows Store Guide
2016-05-12 09:30:18 +09:00
Cheng Zhao
f6d4af8882 Merge pull request #5487 from felixrieseberg/windows-dialog-array
Document Dialog Buttons Behavior on Windows
2016-05-12 09:26:28 +09:00
Andrew Murray
2d19d8108b Fixed typo 2016-05-12 08:14:17 +10:00
Anthony Ryan
c29b844a97 Replace gtk_widget_hide_all with gtk_widget_hide
gtk_widget_hide_all was deprecated in gtk+ 2.24 and was removed
entirely in recent versions. This is a pretty straight forward
replacement.
2016-05-11 15:33:43 -04:00
deepak1556
64718888dd dialog: resize icon on linux before showing 2016-05-11 22:30:10 +05:30
Cheng Zhao
064af6ecb2 Merge branch '1-0-release' 2016-05-11 22:11:08 +09:00
Cheng Zhao
959f7a1911 Merge pull request #5491 from electron/key-weak-map
Extend the IDWeakMap to accept arbitrary key type
2016-05-11 22:10:43 +09:00
Cheng Zhao
ff3104b44b hash function for pair is already defined in VS 2016-05-11 21:32:28 +09:00
Cheng Zhao
12d40cd310 Add typename hint to fix compilation error on VS2015 2016-05-11 20:57:21 +09:00
Cheng Zhao
759a46f3d6 Use DoubleIDWeakMap for |rendererFunctions| 2016-05-11 20:40:48 +09:00
Cheng Zhao
6578c4f0b3 Bump v1.0.1 2016-05-11 20:10:38 +09:00
Cheng Zhao
b2d83fd8a8 Merge pull request #5490 from electron/webcontents-event
Listen for devtools-opened on webContents
2016-05-11 19:59:09 +09:00
Kevin Sawicki
a32f50ef64 Use arrow function for this binding 2016-05-11 12:54:52 +02:00
Kevin Sawicki
1b2b7fc4ce Listen for devtools-opened on webContents 2016-05-11 12:48:46 +02:00
Cheng Zhao
49ac160ff7 Move createIDWeakMap to v8Util 2016-05-11 19:30:06 +09:00
Cheng Zhao
a077355d70 Turn api::IDWeakMap into api::KeyWeakMap<T> 2016-05-11 18:21:35 +09:00
Felix Rieseberg
ffa5abe99b 📝 Add Windows Store Guide
This commit adds a guide about how to compile your app as a Windows Store app, analog to the Mac App Store guide.
2016-05-11 10:50:46 +02:00
Felix Rieseberg
9200e32b0e 📝 Document Dialog Buttons Behavior on Windows
Closes #5464
2016-05-11 10:27:37 +02:00
Cheng Zhao
04d59991b0 Use create function instead of IDWeakMap constructor 2016-05-11 16:15:32 +09:00
Cheng Zhao
c708ae8eb5 Remove IDWeakMap 2016-05-11 15:51:22 +09:00
Cheng Zhao
ea93553225 Make KeyWeakMap a template class 2016-05-11 15:17:35 +09:00
Cheng Zhao
e6c0b1fe0c Fix leak when KeyWeakMap::Remove is called directly
Usually the KeyObject would be destroyed when GC happens, but then
Remove is called before GC happens, the KeyObject would be leaked
forever. This fixes it by keeping KeyObject as a member of map.
2016-05-11 15:17:35 +09:00
Cheng Zhao
79c1ad85f9 Add KeyWeakMap without Add method 2016-05-11 15:17:35 +09:00
Cheng Zhao
7f2a46cdd5 Remove unused methods of IDWeakMap 2016-05-11 15:17:35 +09:00
Cheng Zhao
2cd41b2f84 Merge branch 'master' of https://github.com/electron/electron 2016-05-11 15:15:15 +09:00
Cheng Zhao
0f52a6da39 Merge branch '1-0-release' 2016-05-11 15:14:56 +09:00
Cheng Zhao
71704fc5d8 Merge pull request #5486 from electron/fix-dump-version-info-js
Do not use require('app') in dump-version-info.js
2016-05-11 15:12:04 +09:00
Cheng Zhao
e5890728dc Do not use require('app') in dump-version-info.js 2016-05-11 15:07:09 +09:00
Cheng Zhao
08d2320ad6 Merge pull request #5485 from preco21/korean-docs-4
docs: Update Korean docs as upstream
2016-05-11 14:48:43 +09:00
Plusb Preco
95c9e48822 📝 Update Korean docs as upstream
[ci skip]
2016-05-11 13:48:40 +09:00
Machisté N. Quintana
8bb097e0a4 Merge pull request #5480 from preco21/patch-3
docs: Match object notation style
2016-05-10 21:27:45 -07:00
Plusb Preco
01c483e0dd 📝 Update README-ko.md
[ci skip]
2016-05-11 10:48:54 +09:00
Plusb Preco
4cdba29fbd 📝 Match object notation style
[ci skip]
2016-05-11 10:30:02 +09:00
Cheng Zhao
ed70a11ff8 Merge pull request #5477 from danhp/download-bounce
Add API: app.dock.downloadFinished(filePath)
2016-05-11 09:41:08 +09:00
Cheng Zhao
8dd5f58161 Merge pull request #5479 from electron/widevine-path
Fix passing paths in command line
2016-05-11 09:24:24 +09:00
Cheng Zhao
1d6f05c9bb Merge branch 'document-fixes-4' of https://github.com/preco21/electron into preco21-document-fixes-4 2016-05-11 09:23:52 +09:00
Cheng Zhao
d0b39bc4fe Merge pull request #5473 from preco21/korean-docs-3
docs: Update Korean docs as upstream
2016-05-11 09:20:51 +09:00
Cheng Zhao
dec971a889 Merge pull request #5471 from nickytonline/fix-readme
Fixed code snippet in read me
2016-05-11 09:12:01 +09:00
Cheng Zhao
0dad2581ef Fix passing paths in command line 2016-05-11 08:57:35 +09:00
Nick Taylor
b54af73782 fixed code snippet in menu api documentation. 2016-05-10 22:32:45 +02:00
Daniel Pham
6dae07b76f Add API: app.dock.downloadFinished(filePath) 2016-05-10 15:02:56 -04:00
Plusb Preco
ebc7f5cba0 📝 Remove whitespace
[ci skip]
2016-05-11 03:34:06 +09:00
Plusb Preco
c4d34eb465 📝 Update Korean docs as upstream
[ci skip]
2016-05-11 03:14:06 +09:00
Plusb Preco
5146befa46 📝 Match variable names
[ci skip]
2016-05-11 02:38:42 +09:00
Plusb Preco
885aeec442 📝 Match variable names
[ci skip]
2016-05-11 02:16:32 +09:00
Plusb Preco
f1b184ef78 📝 Fix code style issue
* Change `var` to `let`.
* Change `function() {}` to `() => {}`.
* Use shorthand function syntax on object notation.
* Remove spaces between object notation brackets.
* Small fixes.
2016-05-11 02:15:09 +09:00
Plusb Preco
139a4f984a 📝 Add missing semicolons
[ci skip]
2016-05-11 01:57:55 +09:00
Plusb Preco
6e0112bf9f 📝 Cleanup codes
[ci skip]
2016-05-11 01:34:51 +09:00
Plusb Preco
552102b88d 📝 Remove whitespace after code block
[ci skip]
2016-05-11 01:32:13 +09:00
Plusb Preco
4d7296e1db 📝 Match destructuring style
[ci skip]
2016-05-11 01:26:38 +09:00
Cheng Zhao
61bf3ae1ee Merge pull request #5462 from zicai/patch-1
Docs:fix a minor typo
2016-05-10 19:44:36 +09:00
Plusb Preco
5787bb0226 📝 Fix code style issue
* Match equality operators for consistent that `==`, `!=` by `===`,
`!==`.
* Match string expression notation `"` by `'`.

[ci skip]
2016-05-10 18:42:21 +09:00
zicai
8e48fde5ac Docs:fix a minor typo 2016-05-10 16:53:14 +08:00
Plusb Preco
3cc2dd216f 📝 Adjust line length to 80
[ci skip]
2016-05-10 17:41:16 +09:00
Plusb Preco
cd3d154cc3 📝 Small fixes
[ci skip]
2016-05-10 17:35:12 +09:00
Plusb Preco
6bad16377d 📝 Update Korean docs as upstream
[ci skip]
2016-05-10 16:27:14 +09:00
Cheng Zhao
3014e61792 Update native_mate: close #5392 2016-05-10 16:10:02 +09:00
Plusb Preco
12e62746b3 📝 Add security.md
[ci skip]
2016-05-10 13:48:26 +09:00
Cheng Zhao
61ec3acde9 Merge pull request #5459 from electron/soft-warning
Turn exception in protocol.registerStandardSchemes into warning warning
2016-05-10 11:11:00 +09:00
Cheng Zhao
8e7a5adc60 spec: protocol.registerStandardSchemes does not throw 2016-05-10 09:57:13 +09:00
Cheng Zhao
4dc431043f docs: When to use protocol.registerStandardSchemes 2016-05-10 09:53:35 +09:00
Cheng Zhao
566bb1f708 Turn the exception in protocol.registerStandardSchemes to warning 2016-05-10 09:53:35 +09:00
Cheng Zhao
ab3122ef2a No need to keep the deprecated APIs
They will be removed in next release.
2016-05-10 09:53:35 +09:00
Cheng Zhao
c40fb67890 Bump v1.0.0 2016-05-09 21:17:35 +09:00
Cheng Zhao
797b0ddb9a Fix exception when refreshing specs window 2016-05-09 20:08:50 +09:00
Cheng Zhao
e139012f9a Merge pull request #5373 from electron/remove-deprecated-apis
Remove deprecated apis
2016-05-09 19:16:38 +09:00
Plusb Preco
60d7dd991d 📝 Fix small typos
[ci skip]
2016-05-09 16:23:11 +09:00
Plusb Preco
897d376978 📝 Update Korean docs as upstream
[ci skip]
2016-05-09 16:20:05 +09:00
Plusb Preco
ad4450ec88 📝 Small fixes
[ci skip]
2016-05-09 11:23:46 +09:00
Plusb Preco
fe5dc5d28e 📝 Update Korean docs as upstream
[ci skip]
2016-05-09 10:43:52 +09:00
Cheng Zhao
af0afecb45 Merge pull request #5406 from deepak1556/protocol_standard_scheme_patch
protocol: fix registerStandardSchemes api
2016-05-09 09:12:35 +09:00
Cheng Zhao
6b79f53416 Merge pull request #5440 from electron/bengotow/remove-default-protocol
Implement RemoveAsDefaultProtocolClient on OS X
2016-05-09 08:36:21 +09:00
Ben Gotow
ac905e7080 Add docs, avoid side effects when not currently default 2016-05-08 10:50:17 -07:00
deepak1556
70dac71639 delay protocol object creation 2016-05-08 16:44:14 +05:30
Cheng Zhao
4841e37502 Merge pull request #5445 from electron/fix-flaky-tests
Suppress the window.open tests on travis CI's mac machine
2016-05-08 16:44:29 +09:00
Cheng Zhao
c682ccd9d0 Suppress the window.open tests on travis CI's mac machine 2016-05-08 15:15:16 +09:00
Cheng Zhao
b358dff689 Merge pull request #5444 from electron/expiration-date
Fix `expirationDate` not showing for persistent cookies
2016-05-08 15:13:36 +09:00
Cheng Zhao
e24ce97731 Set expirationDate for persistent cookie 2016-05-08 14:38:07 +09:00
Cheng Zhao
1dcbd352cc Merge pull request #5436 from stevekinney/refactor-parse-args-in-dialog
Refactor parseArgs function in dialog module
2016-05-08 11:57:02 +09:00
Cheng Zhao
85f700f458 Merge pull request #5432 from stevekinney/default-app-to-es6
Update default_app to ES6 conventions
2016-05-08 11:21:01 +09:00
Cheng Zhao
3fcb4be303 Merge pull request #5418 from felixrieseberg/security-guide
Add Security Tutorial
2016-05-08 11:20:21 +09:00
deepak1556
9c71c9fa6a fix docs and spec 2016-05-08 01:37:57 +05:30
deepak1556
0f2ae385ed allow protocol module initialization before app ready.
* ensure registerStandardSchemes can only be called before app ready
 * ensure other protocol methods can only be used after app ready
2016-05-08 01:36:34 +05:30
deepak1556
1ff33b7c81 protocol: fix registerStandardSchemes api 2016-05-08 01:36:34 +05:30
Ben Gotow
19d5d3b7d1 Implement RemoveAsDefaultProtocolClient on OS X 2016-05-07 11:07:58 -07:00
Steve Kinney
91220f2a98 💄 Simplify conditional check for BrowserWindow 2016-05-07 09:13:40 -06:00
Steve Kinney
f3e633eb2c 💄 Use destructuring to shift arguments 2016-05-07 08:55:26 -06:00
Steve Kinney
6708e2a302 💄 Cache last argument in parseArgs
This is to eliminate the need to access the array twice.
2016-05-07 08:52:52 -06:00
Steve Kinney
b6fd4fed38 💄 Update default_app to ES6 conventions
Add space before object literal method
2016-05-07 08:18:22 -06:00
Felix Rieseberg
02e8e929e1 📝 Add Security Tutorial
Add basic information about Electron and Security, including an
invitation to contribute to security features. Contains information by
@zcbenz, @zeke, and @paulcbetts.
2016-05-07 10:57:36 +01:00
Cheng Zhao
b05fa2ed5b Merge pull request #5430 from deepak1556/ipc_renderer_patch
ipcRenderer: fix crash with multiple listeners to sync message
2016-05-07 16:32:54 +09:00
Cheng Zhao
e46a50512d Merge pull request #5428 from miniak/update-app-manifest
Update app manifest
2016-05-07 11:20:25 +09:00
Cheng Zhao
8f4b6afa64 Merge pull request #5431 from deepak1556/devtools_file_system_indexer_patch
devtools: handle file system indexing requests
2016-05-07 10:55:12 +09:00
Cheng Zhao
e6f4dd0f85 Update brightray for #5431 2016-05-07 10:54:34 +09:00
Cheng Zhao
767c235708 Fix compilation error 2016-05-07 10:38:41 +09:00
Milan Burda
bc8689889d Add dpiAware to app manifest instead of calling SetProcessDpiAwareness / SetProcessDPIAware 2016-05-07 01:18:01 +02:00
Milan Burda
bb32039fde Add disableWindowFiltering to app manifest to enable enumeration of modern app windows in node modules 2016-05-07 01:17:27 +02:00
deepak1556
53ac79cb19 devtools: handle file system indexing requests 2016-05-07 04:32:54 +05:30
Kevin Sawicki
081c8e1f28 Merge pull request #5426 from electron/vendor-link-in-docs
Link to vendor folder on GitHub
2016-05-06 13:31:23 -07:00
Kevin Sawicki
6861d645ad Link to vendor folder on GitHub 2016-05-06 13:25:01 -07:00
Kevin Sawicki
ef459c7676 Remove support for options now on webPreferences 2016-05-06 10:12:56 -07:00
Cheng Zhao
28f1aef7b4 Remove ELECTRON_HIDE_INTERNAL_MODULES in docs 2016-05-06 10:12:56 -07:00
Cheng Zhao
fd432ddbc9 Fix the toDataUrl call in desktopCapturer 2016-05-06 10:12:56 -07:00
Cheng Zhao
446da677b5 Remove NativeImage.toDataUrl 2016-05-06 10:12:56 -07:00
Kevin Sawicki
7685380105 Remove crashed event forwarding 2016-05-06 10:12:56 -07:00
Kevin Sawicki
56cd57872c Remove BrowserWindow events now on WebContents 2016-05-06 10:12:56 -07:00
Kevin Sawicki
f2d8eadf4e Remove deprecated prototol APIs 2016-05-06 10:12:55 -07:00
deepak1556
14661819c2 move session wrapper to webcontents 2016-05-06 10:12:55 -07:00
Kevin Sawicki
609f5dcaaf Update read path to something that exists 2016-05-06 10:12:55 -07:00
Kevin Sawicki
4d6b95aa52 Tweak spec description 2016-05-06 10:12:55 -07:00
Kevin Sawicki
0eefb282ca Test no handler via call to deprecate.log 2016-05-06 10:12:55 -07:00
Kevin Sawicki
722a07de86 Add explicit call to deprecate.log 2016-05-06 10:12:55 -07:00
Kevin Sawicki
30b60516fe Initialize session explicitly 2016-05-06 10:12:55 -07:00
Kevin Sawicki
814ae7b4a4 🎨 2016-05-06 10:12:55 -07:00
Kevin Sawicki
d627ead273 Remove linter errors 2016-05-06 10:12:55 -07:00
Kevin Sawicki
16d4c436cb Keep exporting deprecate/deprecations 2016-05-06 10:12:55 -07:00
Kevin Sawicki
7ad86a12b4 Remove empty _init 2016-05-06 10:12:54 -07:00
Kevin Sawicki
58473f41ab Remove deprecated BrowserWindow options specs 2016-05-06 10:12:54 -07:00
Kevin Sawicki
4cb620c195 Remove support for translating hyphenated options 2016-05-06 10:12:54 -07:00
Kevin Sawicki
bea232f53a Update specs for internal module require 2016-05-06 10:12:54 -07:00
Kevin Sawicki
ef801d5543 Remove .only call 2016-05-06 10:12:54 -07:00
Kevin Sawicki
1e140fb32c Remove ipc.js files 2016-05-06 10:12:54 -07:00
Kevin Sawicki
2ce4237083 Remove hideInternalModules API 2016-05-06 10:12:54 -07:00
Kevin Sawicki
dafa14fe42 Don't export deprecate API 2016-05-06 10:12:54 -07:00
Kevin Sawicki
bf91410a22 Remove deprecated main process ipc module 2016-05-06 10:12:54 -07:00
Kevin Sawicki
d988cae16d Remove deprecated ipc module 2016-05-06 10:12:53 -07:00
Kevin Sawicki
a6cf7a1095 Remove deprecated crashReporter.start options 2016-05-06 10:12:53 -07:00
Kevin Sawicki
6f0471f6cb Remove deprecated options check in BrowserWindow 2016-05-06 10:12:53 -07:00
Kevin Sawicki
0342db9328 Remove hyphenated options 2016-05-06 10:12:53 -07:00
Kevin Sawicki
dae68be2ce Remove deprecated APIs 2016-05-06 10:12:53 -07:00
Kevin Sawicki
0cf50b1c0b Merge pull request #5425 from electron/remove-atom-org-links
Update links to electron org in docs
2016-05-06 10:12:02 -07:00
Kevin Sawicki
7cca287b60 Update links to electron org 2016-05-06 10:11:43 -07:00
Kevin Sawicki
476aea5a3f Merge pull request #5424 from electron/windows-installer-docs
Link to electron-winstaller
2016-05-06 10:11:33 -07:00
Kevin Sawicki
f84b5a7642 Link to electron-winstaller 2016-05-06 10:05:12 -07:00
Kevin Sawicki
9a56974c83 Merge pull request #5423 from electron/fix-spacing-app-doc
Fix spacing on lines and url
2016-05-06 09:59:58 -07:00
Jessica Lord
0e8636cb2a Fix spacing on lines and url 2016-05-06 18:56:07 +02:00
Cheng Zhao
f58b3f853e Merge pull request #5421 from electron/default-app-flag
Add a flag indicating app is started from default app
2016-05-06 22:09:02 +09:00
Cheng Zhao
c18880bd77 Add a flag indicating app is started from default app 2016-05-06 21:49:49 +09:00
Cheng Zhao
7b83d920fa Merge pull request #5412 from electron/osx-disable-rubber-banding
Add scrollBounce option and disable it by default
2016-05-06 15:35:14 +09:00
Cheng Zhao
df397dab30 Add scrollBounce option and disable it by default 2016-05-06 14:57:43 +09:00
Cheng Zhao
4ce26dfa68 Merge pull request #5409 from electron/did-fail-load-clarification
Clarify how did-fail-load handles redirects
2016-05-06 14:27:46 +09:00
Cheng Zhao
16bfc19547 Merge pull request #5411 from electron/min-max-size-docs
docs: Make it clear that size constraints only apply for users
2016-05-06 14:24:59 +09:00
Cheng Zhao
a4405dad45 docs: Make it clear that size constraints only apply for users
[ci skip]
2016-05-06 14:21:19 +09:00
Cheng Zhao
aa516ae01a Merge pull request #5408 from electron/ld-update-code-of-conduct
📝 Update to v1.4 of the Code of Conduct
2016-05-06 10:41:25 +09:00
Charlie Hess
69c4c7e3be Clarify how did-fail-load handles redirects. 2016-05-05 15:52:00 -07:00
deepak1556
45b3bd3a22 ipcRenderer: fix crash with multiple listeners to sync message 2016-05-06 02:52:59 +05:30
Lee Dohm
edfb1b5d0e 📝 Update to v1.4 of the Code of Conduct
Also, switch email address for reporting.
2016-05-05 13:48:44 -07:00
Cheng Zhao
969a30fc3b Merge branch 'update-code-samples' of https://github.com/stevekinney/electron into stevekinney-update-code-samples 2016-05-05 20:55:25 +09:00
Cheng Zhao
636570306a Merge pull request #5401 from electron/ns-js-object
Fully support the userInfo object in app.setUserActivity and continue-activity event
2016-05-05 17:59:43 +09:00
Cheng Zhao
2c31d7c1e8 Revert "Generalize this mate converter for reuse."
This reverts commit 92606579d3.
2016-05-05 17:26:31 +09:00
Cheng Zhao
c9c4ba39ab docs: We support arbitrary NSDictionary now 2016-05-05 17:07:46 +09:00
Cheng Zhao
2f9fee0c8a Move the job of creating userActivity to AtomApplication 2016-05-05 16:38:47 +09:00
Cheng Zhao
60bd60e1ed Fully support converting NSDictionary to JS userInfo object 2016-05-05 16:26:44 +09:00
Cheng Zhao
8e1d2479ac spec: Should not run app.setUserActivity test on non-OS X 2016-05-05 12:27:25 +09:00
Cheng Zhao
7268f434b2 Fix code styling problems 2016-05-05 12:26:23 +09:00
Cheng Zhao
3f2a25d07c Merge pull request #5352 from CharlieHess/hands-on-hand-off
OS X Handoff Feature
2016-05-05 12:06:56 +09:00
Cheng Zhao
f10ab71f60 Merge pull request #5388 from electron/default-app-styling
Make the drag box fill the remaining height of window in default app
2016-05-05 11:16:16 +09:00
Cheng Zhao
4b42fe1b24 Merge pull request #5393 from appetizermonster/patch-2
Fix small mistakes in Korean Doc
2016-05-05 11:15:35 +09:00
Cheng Zhao
0901a70166 Merge pull request #5379 from danhp/context-menu
Expose the 'context-menu' event.
2016-05-05 11:12:58 +09:00
Charlie Hess
b2fb95f857 Use scoped_nsobject to ensure our intermediate objects get cleaned up. 2016-05-04 11:28:49 -07:00
Steve Kinney
55babea2bb 📝 Update tutorials to ES6 [ci skip] 2016-05-04 12:11:51 -06:00
Steve Kinney
3271492c86 📝 Update FAQ to ES6 [ci skip] 2016-05-04 12:02:24 -06:00
Steve Kinney
afe0296e0f 📝 Rewrite docs on destructuring assignment [ci skip] 2016-05-04 11:59:40 -06:00
Steve Kinney
5a9f28e034 📝 Update API documentation to ES6 [ci skip] 2016-05-04 11:59:02 -06:00
Steve Kinney
178496afe5 📝 Update documentation style guide to ES6 [ci skip] 2016-05-04 10:55:05 -06:00
Heejin Lee
2b079588bb Fix small mistakes in CONTRIBUTING-ko.md 2016-05-05 00:02:53 +09:00
Daniel Pham
a6f2d401fa Follow object naming conventions for params in the 'context-menu' event 2016-05-04 10:41:10 -04:00
Cheng Zhao
6fba72a40c Merge pull request #5383 from preco21/korean-docs-2
docs: Update Korean docs as upstream
2016-05-04 23:20:44 +09:00
Cheng Zhao
fe73688975 Merge pull request #5387 from preco21/patch-1
docs: Match code syntax
2016-05-04 23:20:23 +09:00
Cheng Zhao
ef561fb919 Merge pull request #5378 from CGamesPlay/master
Use select to query the uv kqueue
2016-05-04 23:08:12 +09:00
Plusb Preco
9483cd351a 📝 Update Korean docs as upstream
[ci skip]
2016-05-04 18:45:52 +09:00
Cheng Zhao
28d12166fd Fix margin of elements in flex 2016-05-04 18:01:29 +09:00
Cheng Zhao
7074789011 Remove some unnecessary css rules 2016-05-04 18:01:29 +09:00
Cheng Zhao
5e73b0372d Make the drag box fill the remaining height of window 2016-05-04 18:01:29 +09:00
Cheng Zhao
540076e9d5 Fix code styling issue 2016-05-04 17:12:10 +09:00
Cheng Zhao
8957ba5222 Merge pull request #5371 from adambuckland/fix_auto_update_error
Fix autoUpdater error on OS X
2016-05-04 16:58:25 +09:00
Cheng Zhao
4c1a0d29b0 Merge pull request #5367 from sindresorhus/patch-1
improve the `webContents.openDevTools` docs
2016-05-04 16:52:48 +09:00
Charlie Hess
7b207aa1b6 Don't run this spec on platforms where the method is unavailable. 2016-05-03 23:33:40 -07:00
Plusb Preco
9fcafc6f9e 📝 Update Korean docs as upstream
[ci skip]
2016-05-04 15:00:59 +09:00
Plusb Preco
8be2239a45 📝 Match code syntax
[ci skip]
2016-05-04 14:34:11 +09:00
Plusb Preco
d63d570327 📝 Fix typo
[ci skip]
2016-05-04 09:46:14 +09:00
Charlie Hess
12764a66ed Add an accessor for the current activity type and write the simplest possible test. 2016-05-03 15:51:31 -07:00
Charlie Hess
42768bcc2b Save the activity on the application instance to ensure we hold a reference. Activities that enable search need to persist. 2016-05-03 14:57:16 -07:00
Daniel Pham
81eb3e3428 📝 Document 'context-menu' event 2016-05-03 17:52:24 -04:00
Daniel Pham
0fffbea79d Add 'context-menu' event to 'WebContents' 2016-05-03 17:50:54 -04:00
Plusb Preco
ebd8d30f25 📝 Small fixes
[ci skip]
2016-05-04 02:55:10 +09:00
Charlie Hess
a5a2e20449 📝 on using only strings. 2016-05-03 10:34:59 -07:00
Charlie Hess
03d25ce6c0 Revert "Add some shady methods to get V8 objects or arrays from NSDictionary or NSArray."
This reverts commit 2295f3a832.
2016-05-03 10:32:42 -07:00
Charlie Hess
f84a973d69 Revert "Use a DictionaryValue everywhere instead of a string map."
This reverts commit 90cc10944a.
2016-05-03 10:31:53 -07:00
Paul Betts
2606f8020a Merge pull request #5382 from danhp/patch-1
Fix Windows debug doc pointing to OS X
2016-05-03 09:28:45 -07:00
Daniel Pham
e9c9e22a9e 📝 Fix Windows debug doc pointing to OS X
[ci skip]
2016-05-03 11:51:57 -04:00
Cheng Zhao
513b07b3b3 Merge pull request #5377 from electron/custom_compiler
Add more options for building on Linux
2016-05-03 22:23:31 +09:00
Ryan Patterson
b15c07e1a8 Use select to query the uv kqueue
This resolves #38. I've verified that events still get processed like they
should on El Capitan 10.11.3 (15D21).
2016-05-02 23:54:21 -07:00
Plusb Preco
0e7de568a2 📝 Small fixes
[ci skip]
2016-05-03 15:34:47 +09:00
Plusb Preco
f984536523 📝 Improve grammar
[ci skip]
2016-05-03 12:07:06 +09:00
Cheng Zhao
67a768fc77 Do not download clang on Windows 2016-05-03 09:38:15 +09:00
Cheng Zhao
49eed1ebb9 Ignore CC and CXX if user didn't change build configuration 2016-05-03 09:31:39 +09:00
Cheng Zhao
0567f09d6d docs: The building environment variables 2016-05-03 08:29:23 +09:00
Charlie Hess
90cc10944a Use a DictionaryValue everywhere instead of a string map. 2016-05-02 16:18:58 -07:00
Charlie Hess
2295f3a832 Add some shady methods to get V8 objects or arrays from NSDictionary or NSArray. 2016-05-02 14:45:59 -07:00
Charlie Hess
b53480e15c Merge remote-tracking branch 'origin/master' into hands-on-hand-off 2016-05-02 12:18:26 -07:00
Charlie Hess
dbe36748d4 Merge branch 'master' of https://github.com/atom/atom-shell 2016-05-02 12:18:10 -07:00
Plusb Preco
be32039cf9 📝 Update Korean docs as upstream
[ci skip]
2016-05-03 02:43:21 +09:00
Kevin Sawicki
543211b53a Merge pull request #5372 from electron/update-appveyor
Update link to AppVeyor build badge
2016-05-02 09:26:14 -07:00
Kevin Sawicki
fecd9ee4a0 Update link to AppVeyor build badge 2016-05-02 09:07:14 -07:00
Cheng Zhao
e39d5a9eb9 docs: Introduce clang flags 2016-05-02 22:32:43 +09:00
Cheng Zhao
ac3a704abc Avoid overriding environment variables 2016-05-02 12:38:17 +00:00
Cheng Zhao
34b4ebd9f3 Fix logic errors 2016-05-02 12:15:10 +00:00
Cheng Zhao
098d72b741 Convert --clang_dir and --disable_clang to --defines 2016-05-02 21:19:16 +09:00
Cheng Zhao
26e4ce30bb Pass --disable_clang and --clang_dir to libchromiumcontent 2016-05-02 20:06:21 +09:00
Cheng Zhao
7cbe6bc8bd Merge pull request #5366 from electron/bootstrap-libchromiumcontent
Add --build_libchromiumcontent command line switch
2016-05-02 19:07:22 +09:00
Cheng Zhao
bd70d9008f Update modules before calling build_libchromiumcontent 2016-05-02 07:45:48 +00:00
Sindre Sorhus
ad09196433 improve the webContents.openDevTools docs
consistent value notation and explain the difference between `undocked` and `detach` mode.
2016-05-02 14:39:46 +07:00
Cheng Zhao
cc24bea813 Fix pylint warnings 2016-05-02 16:38:58 +09:00
Cheng Zhao
459a65d296 docs: the --build_libchromiumcontent switch 2016-05-02 16:35:33 +09:00
Cheng Zhao
64abae0b3c docs: Cleanup unnecessary parts in build-instructions-linux.md 2016-05-02 16:26:18 +09:00
Cheng Zhao
26c0ad1c2f Add --build_libchromiumcontent option 2016-05-02 16:17:38 +09:00
Plusb Preco
a83b891a95 📝 Update Korean docs as upstream
[ci skip]
2016-05-02 10:21:27 +09:00
Plusb Preco
51f095e5c3 Merge remote-tracking branch 'refs/remotes/electron/master' 2016-05-02 10:18:38 +09:00
Plusb Preco
a60bb9031a Merge remote-tracking branch 'refs/remotes/electron/master' 2016-05-02 10:18:25 +09:00
Cheng Zhao
f1edd88e56 Merge pull request #5365 from TyanNN/master
Translated application distribution and application packaging to ru_RU
2016-05-02 10:08:20 +09:00
Cheng Zhao
c48598a5bc Merge pull request #5360 from miniak/patch-1
Fix systemPreferences docs
2016-05-02 09:43:35 +09:00
TyanNN
6cb8f278a2 Translated application distribution and application packaging to ru_RU 2016-05-01 21:18:49 +03:00
Milan Burda
91911d2d32 Fix systemPreferences docs 2016-05-01 18:03:58 +02:00
Adam Buckland
abb60ecd2e Fix autoUpdater error on OS X
If there is no localizedFailureReason, then then this will no longer be
added to the error string (which would result previously in it printing
'(null)' as part of the string)
2016-05-01 13:43:56 +01:00
Cheng Zhao
586e5e2ba5 Merge pull request #5361 from preco21/korean-docs
docs: Update Korean docs as upstream
2016-05-01 14:34:00 +09:00
Cheng Zhao
b2e77b2e6b Merge pull request #5357 from TyanNN/master
Translated Quickstart to ru_RU
2016-05-01 11:46:15 +09:00
Charlie Hess
21ae288ee7 📝 about the plist changes. 2016-04-30 13:03:10 -07:00
Charlie Hess
05493502ea Value first, key second. 2016-04-30 11:17:29 -07:00
Plusb Preco
33aecb9978 📝 Update Korean docs as upstream
[ci skip]
2016-05-01 02:46:19 +09:00
Plusb Preco
a554f9e683 📝 Update Korean docs as upstream
[ci skip]
2016-05-01 02:10:23 +09:00
Plusb Preco
6fda14ce88 📝 Update Korean docs as upstream
[ci skip]
2016-05-01 01:53:21 +09:00
Plusb Preco
f426c9c951 📝 Improve grammar
[ci skip]
2016-05-01 01:12:54 +09:00
Plusb Preco
bde412dd69 📝 Fix typos
[ci skip]
2016-05-01 01:11:21 +09:00
Cheng Zhao
03ce8a195a Merge pull request #5359 from electron/windows-pdb
Upload PDBs to Windows symbol server
2016-05-01 00:10:34 +09:00
Cheng Zhao
47f7f7b02e Revert "Don't upload PDB files in CI"
This reverts commit 7ab8134613.
2016-04-30 21:43:33 +09:00
Cheng Zhao
d91cd424fe Revert "Run tests for branches on appveyor"
This reverts commit 33370b18b3.

This commit was wrongly pushed.
2016-04-30 21:21:11 +09:00
Cheng Zhao
5766f4703a Merge pull request #5358 from electron/windows-ci
Run tests on Windows CI machine
2016-04-30 21:18:23 +09:00
Cheng Zhao
f65f8918c9 Fix specs on Windows when running without desktop session 2016-04-30 21:03:22 +09:00
Cheng Zhao
33370b18b3 Run tests for branches on appveyor 2016-04-30 20:42:24 +09:00
TyanNN
dae63ec4f1 Translated Quickstart to ru_RU 2016-04-30 13:54:19 +03:00
Cheng Zhao
214eb0430c Fix a few failing tests on Windows 2016-04-30 18:21:18 +09:00
Cheng Zhao
2a55d93501 Remove the output file after testing 2016-04-30 17:52:53 +09:00
Cheng Zhao
b68a25835f Make sure output is written when test fails 2016-04-30 17:48:07 +09:00
Cheng Zhao
3dcf69eab3 Also run tests on 32bit Windows 2016-04-30 17:17:23 +09:00
Cheng Zhao
8aa88067ca Do not write to stdout in Electron when running on win32 CI machine
This makes Electron crash on CI machine somehow.
2016-04-30 17:08:51 +09:00
Cheng Zhao
6756f8c7af Make win32 CI machine run tests 2016-04-30 15:38:23 +09:00
Charlie Hess
cea1b49db0 Add some documentation in app.md. 2016-04-29 22:25:09 -07:00
Charlie Hess
195940292d This is preventDefault by convention. 2016-04-29 22:08:19 -07:00
Charlie Hess
88805ec7e2 Make the Linter happy. 2016-04-29 22:05:36 -07:00
Cheng Zhao
fe3c78ad84 Merge pull request #5353 from electron/update-old-bracket-notation-in-translations
update all references to old atom-log bracket notation
2016-04-30 12:13:07 +09:00
Cheng Zhao
47a2a3a13f Merge pull request #5349 from electron/link-to-electron-prebuilt
describe electron-prebuilt and link to it
2016-04-30 11:59:44 +09:00
Cheng Zhao
b693ced765 Merge pull request #5346 from electron/update-quick-start-code
update quick-start code to match quick-start repo
2016-04-30 11:56:50 +09:00
Zeke Sikelianos
9f99ba3b73 update all references to old atom-log bracket notation 2016-04-29 18:35:02 -07:00
Charlie Hess
3a9a1d35d7 Add the AppDelegate override for restoring from hand-off, and fire the app event. 2016-04-29 17:37:01 -07:00
Charlie Hess
c20acb0361 Implement a "continue-activity" event on app for resuming from hand-off. 2016-04-29 17:36:04 -07:00
Charlie Hess
6df4bb176d Implement app.setUserActivity(type, userInfo). 2016-04-29 17:35:07 -07:00
Charlie Hess
92606579d3 Generalize this mate converter for reuse. 2016-04-29 17:32:25 -07:00
Kevin Sawicki
1bbc6211ca Merge pull request #5347 from rhedshi/patch-1
Update mac-app-store-submission-guide.md
2016-04-29 13:34:02 -07:00
Zeke Sikelianos
0c9c1229e3 describe electron-prebuilt and link to it 2016-04-29 13:32:00 -07:00
rhedshi
95476a81ae Update mac-app-store-submission-guide.md 2016-04-29 13:28:41 -07:00
Zeke Sikelianos
2f71d6afe0 update quick-start code to match quick-start repo 2016-04-29 13:17:50 -07:00
Charlie Hess
e9514bf35d Merge branch 'master' of https://github.com/atom/atom-shell 2016-04-29 13:12:56 -07:00
Cheng Zhao
edb73fb734 Bump v0.37.8 2016-04-29 20:48:19 +09:00
Cheng Zhao
cb45c94db9 Merge pull request #5340 from electron/create-user-data
Make sure the userData directory is created before ready event
2016-04-29 20:36:27 +09:00
Cheng Zhao
66853344c0 Make sure the userData directory is created before ready event 2016-04-29 20:20:52 +09:00
Plusb Preco
83af5de572 📝 Small fixes
[ci skip]
2016-04-29 10:32:33 +09:00
Arif Çakıroğlu
f7d4ff90ea added accelerator.md to api folders and translated (#5316)
* added accelerator.md to api folders and translated 🎉

* added file-object.md to api folder and translated

* added all folders to /tr-TR for broken links

* removed untouched documentation file

* broken link fix
2016-04-29 08:28:46 +09:00
Cheng Zhao
4001f10e2d Merge pull request #5334 from miniak/fix-screen-events
Fix #3075 by not caching the displays (id is not persistent on Windows)
2016-04-29 08:24:55 +09:00
Cheng Zhao
c2833274bf Merge pull request #5332 from Stone-Jay/patch-7
Update desktop-environment-integration.md (zh-CN)
2016-04-29 08:22:26 +09:00
Kevin Sawicki
9f82620bb0 Merge pull request #5300 from electron/default-app-styles
Update default app styles
2016-04-28 09:27:33 -07:00
Kevin Sawicki
b0dc7ff841 Remove header link hover color 2016-04-28 09:12:13 -07:00
Kevin Sawicki
80bece5640 Add links to nav bar 2016-04-28 09:12:13 -07:00
simurai
5995e3f400 Make drag&drop text wrap-able 2016-04-28 09:12:13 -07:00
simurai
3e4ecd6d6e Fix logo
So the inner dot is filled
2016-04-28 09:12:12 -07:00
Kevin Sawicki
6979ea7fda Use default cursor on holder area 2016-04-28 09:12:12 -07:00
Kevin Sawicki
068909dc03 Tweak header text color 2016-04-28 09:12:12 -07:00
Kevin Sawicki
dd337640f5 🎨 2016-04-28 09:12:12 -07:00
Kevin Sawicki
c6edab0950 Tweak link style 2016-04-28 09:12:12 -07:00
Kevin Sawicki
7e9d790070 Tweak font weight on holder div 2016-04-28 09:12:12 -07:00
Kevin Sawicki
54aa458ba4 Tweak font 2016-04-28 09:12:12 -07:00
Kevin Sawicki
09b036f07b Update header colors 2016-04-28 09:12:12 -07:00
Milan Burda
340b7220f1 Fix #3075 by not caching the displays (id is not persistent on Windows) 2016-04-28 17:46:41 +02:00
StoneStoneStone
1bac04c69d Update desktop-environment-integration.md 2016-04-28 22:30:14 +08:00
Cheng Zhao
850bc2d443 Merge pull request #5320 from deepak1556/desktopcapture_api_patch
renderer: fix desktop capture api not responding different subsequest calls
2016-04-28 20:14:58 +09:00
deepak1556
d64e3784f4 renderer: fix desktop capture api not responding different subsequest calls 2016-04-28 14:24:22 +05:30
Cheng Zhao
68192785e7 Merge pull request #5319 from deepak1556/webcontents_executejavascript_patch
webContents: fix executejavascript when called before page load
2016-04-28 16:43:50 +09:00
Cheng Zhao
d9db23185c Merge pull request #5302 from ritazh/default-protocol-handler
Add API: IsDefaultProtocolClient
2016-04-28 16:13:06 +09:00
Cheng Zhao
122652a368 Merge pull request #5315 from deepak1556/download_manager_patch
browser: fix some edge cases with download manager
2016-04-28 16:08:22 +09:00
Cheng Zhao
77573281b5 Merge pull request #5314 from Stone-Jay/patch-6
Translate `testing-on-headless-ci.md` to Chinese
2016-04-28 11:12:55 +09:00
deepak1556
4e6b148eaa webContents: fix executejavascript when called before page load 2016-04-28 01:54:08 +05:30
Rita Zhang
df2141d9e6 Add API: IsDefaultProtocolClient 2016-04-27 12:24:46 -07:00
deepak1556
6dbd2ce243 use DownloadItem to determine download initiator 2016-04-27 20:29:39 +05:30
StoneStoneStone
bfae925b0f Translate testing-on-headless-ci.md to Chinese 2016-04-27 22:49:07 +08:00
deepak1556
46208b5b3e session: dont attach download dialog to deleted webContents window 2016-04-27 20:00:31 +05:30
Cheng Zhao
0fa92923da Merge pull request #5311 from electron/fix-singleton
Create user_data_dir before creating singleton lock
2016-04-27 22:25:15 +09:00
Cheng Zhao
4435cdc576 Create user_data_dir before creating singleton lock 2016-04-27 21:52:50 +09:00
Cheng Zhao
302a6e42bd Merge pull request #5310 from electron/ci-no-clean
Do not run clean in cibuild
2016-04-27 20:21:55 +09:00
Cheng Zhao
f3c3042deb Do not run clean in cibuild 2016-04-27 19:55:01 +09:00
Cheng Zhao
7b8a05f01f Merge pull request #5298 from phamdaniel/fix-mac-accelerators
Fix converting from windows virtual keycode back to mac keycode
2016-04-27 10:23:28 +09:00
Kevin Sawicki
32c93f713a Merge pull request #5301 from electron/webframe-docs
Update module names in docs
2016-04-26 13:46:38 -07:00
Kevin Sawicki
4080442f80 content-tracing -> contentTracing 2016-04-26 10:28:20 -07:00
Kevin Sawicki
b1c0e7e2ab web-frame -> webFrame 2016-04-26 10:28:04 -07:00
Daniel Pham
21af03d71a 🍎 Fix converting from windows virtual keycode back to mac keycode 2016-04-26 10:53:26 -04:00
Cheng Zhao
cdb4444caa Merge pull request #5293 from electron/native-gc
Dereference remote objects with native code
2016-04-26 19:39:48 +09:00
Cheng Zhao
76a954077d Simplify RemoteCallbackFreer 2016-04-26 16:37:46 +09:00
Cheng Zhao
4f21a50d23 Remove duplicated converter for content::WebContents 2016-04-26 16:31:56 +09:00
Cheng Zhao
d9778413e1 Should also destory RemoteCallbackFreer when page is reloaded 2016-04-26 16:30:26 +09:00
Cheng Zhao
06cf0406fe Dereference remote objects with native code
Previously we rely on the v8util.setDestructor to dereference the remote
objects in JavaScript, however as documented in V8, it is forbidden to
call V8 APIs in object's destructor (e.g. the weak callback), and doing
so would result in crashs.

This commit removes the JavaScript setDestructor method, and avoids
doing the dereference work with V8.
2016-04-26 16:16:22 +09:00
Cheng Zhao
570dc7ca9b Merge branch 'MarshallOfSound-master' 2016-04-26 11:15:56 +09:00
Cheng Zhao
f081c77422 Fix compilation error 2016-04-26 11:15:36 +09:00
Cheng Zhao
f3a9d3eed7 Merge pull request #5290 from arifcakiroglu/master
Translate docs to Turkish
2016-04-26 11:13:09 +09:00
Samuel Attard
315cd9d2c8 Emit an error if quitAndInstall is called without an update being available 2016-04-26 11:55:57 +10:00
Cheng Zhao
db91adc2e8 Merge branch 'michal1106-patch-1' 2016-04-26 10:24:57 +09:00
Cheng Zhao
a0c14eed04 Revise the using-pepper-flash-plugin.md 2016-04-26 10:24:43 +09:00
Cheng Zhao
63d0704490 Merge pull request #5282 from electron/system-preferences
Add systemPreferences module
2016-04-26 08:21:43 +09:00
arifcakiroglu
64db17dde7 Added Turkish Docs link to README-ko 2016-04-26 01:03:17 +03:00
arifcakiroglu
d02125bde5 Update README 2016-04-26 00:49:34 +03:00
michal1106
62d00163a8 Update using-pepper-flash-plugin.md 2016-04-25 16:45:56 +03:00
Cheng Zhao
b5d2e51100 docs: platform-theme-changed is deprecated 2016-04-25 22:27:44 +09:00
Cheng Zhao
11653aa9c8 docs: systemPreferences 2016-04-25 15:36:38 +09:00
Cheng Zhao
067e9c1a85 Add systemPreferences.getUserDefault 2016-04-25 15:35:52 +09:00
Cheng Zhao
a421c66f3f Deprecate the platform-theme-changed event 2016-04-25 14:35:34 +09:00
Cheng Zhao
9557226223 Add systemPreferences.subscribeNotification 2016-04-25 14:25:14 +09:00
Cheng Zhao
ddd8eae661 Move isAeroGlassEnabled and isDarkMode to systemPreferences 2016-04-25 12:35:09 +09:00
Cheng Zhao
d72a0e452f BuildPrototype should not be empty 2016-04-25 12:24:11 +09:00
Cheng Zhao
13f8599ba1 Add systemPreferences module 2016-04-25 11:32:33 +09:00
Cheng Zhao
60b9ff3948 Merge pull request #5280 from electron/better-wrappable
Clean up the Wrappable class
2016-04-25 11:22:56 +09:00
Cheng Zhao
9fe3dbcfe0 Make VS happy 2016-04-25 10:40:19 +09:00
Cheng Zhao
272592415d Fix building on non-mac 2016-04-25 10:34:41 +09:00
Cheng Zhao
993695af07 Remove unneeded cleanup code 2016-04-25 10:23:36 +09:00
Cheng Zhao
60d2cb8a84 Remove the isolate parameter of GetWrapper 2016-04-25 10:19:25 +09:00
Cheng Zhao
2ae52d0ff4 Make Wrappable a template class 2016-04-25 10:17:54 +09:00
Cheng Zhao
a8f08e1fab Merge pull request #5263 from miniak/mac-fix-maximize
Fix BrowserWindow.maximize/unmaximize on Mac
2016-04-24 13:58:36 +09:00
Cheng Zhao
096b948570 Merge pull request #5249 from electron/api-summaries
create a one-liner description for each API
2016-04-24 13:50:17 +09:00
Cheng Zhao
c7f338a5ef Merge pull request #5260 from fierroformo/fix-spanish-docs
Fix spanish docs
2016-04-24 13:45:13 +09:00
Cheng Zhao
c7754e712d Merge pull request #5253 from preco21/master
docs: Update Korean docs as Upstream
2016-04-24 13:38:06 +09:00
Cheng Zhao
2f06a2af81 Merge pull request #5252 from miniak/doc-fix
Documentation fixes
2016-04-24 13:37:45 +09:00
Milan Burda
e1516d4244 Fix BrowserWindow.maximize/unmaximize on Mac 2016-04-23 01:16:31 +02:00
Alejandro Betancourt
778d18a510 Fix links in readme for spanish translation 2016-04-22 17:13:51 -05:00
Milan Burda
dfd1a46956 Document process.crash method 2016-04-22 23:58:41 +02:00
Alejandro Betancourt
28381757d5 Fix translations to spanish 2016-04-22 14:34:46 -05:00
Zeke Sikelianos
799fd13c50 more updates to api summaries based on feedback 2016-04-22 11:42:54 -07:00
Zeke Sikelianos
2c8261b429 update excerpts based on feedback 2016-04-22 10:32:28 -07:00
Zeke Sikelianos
0527b17e42 blockquote summaries 2016-04-22 10:32:28 -07:00
Zeke Sikelianos
ee190ca62a create a one-liner description for each API 2016-04-22 10:32:28 -07:00
Jessica Lord
a4de40ec89 Merge pull request #5254 from preco21/document-fixes-3
docs: Improve documentations
2016-04-22 09:55:25 -07:00
Kevin Sawicki
08e18d46ea Merge pull request #5244 from electron/disable-node-in-web-view-when-disabled-in-parent
Disable node in webviews when disabled in parent window
2016-04-22 09:05:58 -07:00
Plusb Preco
6205dfa25f 📝 Remove additional whitespaces
[ci skip]
2016-04-22 23:30:41 +09:00
Plusb Preco
a14014941b 📝 Fix coding style issues
[ci skip]
2016-04-22 23:26:19 +09:00
Plusb Preco
ba9fa95653 📝 Remove additional whitespaces
[ci skip]
2016-04-22 23:23:39 +09:00
Plusb Preco
66f4701d93 📝 Remove additional whitespaces
[ci skip]
2016-04-22 23:23:15 +09:00
Plusb Preco
b6f8dcea20 📝 Add missing platform specified tag
[ci skip]
2016-04-22 23:21:42 +09:00
Plusb Preco
7fa4b7c8b5 📝 Normalize code tags
[ci skip]
2016-04-22 23:15:31 +09:00
Plusb Preco
b862cee6ec 📝 Correct heading order
[ci skip]
2016-04-22 23:11:39 +09:00
Plusb Preco
741f8091b4 📝 Fix coding style issues
* Correct heading order
* Adjust line length to `80`
* Beautify docs
* Apply small fixes
* Normalize whitespaces

[ci skip]
2016-04-22 23:09:59 +09:00
Plusb Preco
cbc2a869e3 📝 Fix typos
[ci skip]
2016-04-22 22:56:24 +09:00
Plusb Preco
c72bb6df33 📝 Remove unused link reference
[ci skip]
2016-04-22 22:55:38 +09:00
Plusb Preco
4f4277e25e 📝 Fix coding style issues
* Adjust line length to `80`
* Normalize whitespaces

[ci skip]
2016-04-22 22:54:43 +09:00
Plusb Preco
0282180b9c 📝 Correct description style
[ci skip]
2016-04-22 22:20:41 +09:00
Plusb Preco
08dbd35ced 📝 Apply small fixes
[ci skip]
2016-04-22 22:14:42 +09:00
Plusb Preco
552609db73 📝 Apply small fixes
[ci skip]
2016-04-22 22:13:02 +09:00
Plusb Preco
57115a447c 📝 Update README-ko.md
[ci skip]
2016-04-22 22:12:46 +09:00
Plusb Preco
d125483c13 📝 Update Korean docs as upstream
[ci skip]
2016-04-22 22:02:39 +09:00
Milan Burda
da727a3c1b Fix display.rotation documentation 2016-04-22 12:32:11 +02:00
Kevin Sawicki
8e7bf1051d Disable node integration on webview when disabled on window 2016-04-21 11:52:10 -07:00
Kevin Sawicki
e4bd592e0e Add failing spec 2016-04-21 11:49:42 -07:00
Plusb Preco
67f672541c 📝 Update Korean docs as upstream
[ci skip]
2016-04-21 18:51:27 +09:00
Plusb Preco
30d37fcba4 📝 Small fixes
[ci skip]
2016-04-21 12:33:56 +09:00
Plusb Preco
720fbc1003 📝 Update Korean docs as upstream
* Update docs
* Small fixes

[ci skip]
2016-04-20 18:45:07 +09:00
Plusb Preco
c8e77f47ab 📝 Fix typos
[ci skip]
2016-04-18 02:39:05 +09:00
Charlie Hess
a66565fd3f Merge remote-tracking branch 'upstream/master' 2016-04-02 11:54:16 -07:00
Heilig Benedek
1282d6eedb Merge pull request #6 from atom/master
update as upstream
2016-02-25 23:50:13 +01:00
814 changed files with 32301 additions and 10663 deletions

10
.gitignore vendored
View File

@@ -18,5 +18,13 @@ node_modules/
*.xcodeproj
*.swp
*.pyc
*.VC.db
*.VC.VC.opendb
.vs/
.vscode/
*.vcxproj
*.vcxproj.user
*.vcxproj.filters
*.sln
debug.log
npm-debug.log
npm-debug.log

View File

@@ -1 +1 @@
v5.10.0
v6.3.0

View File

@@ -3,14 +3,15 @@ git:
notifications:
email: false
language: cpp
compiler: clang
language: node_js
node_js:
- "4"
os:
- linux
- osx
env:
- TARGET_ARCH=x64
osx_image: xcode7
osx_image: xcode7.3
matrix:
include:
@@ -19,8 +20,7 @@ matrix:
- os: linux
env: TARGET_ARCH=ia32
allow_failures:
- env: TARGET_ARCH=arm
- env: TARGET_ARCH=ia32
- os: osx
script: './script/cibuild'

View File

@@ -1,24 +1,46 @@
# Contributor Code of Conduct
# Contributor Covenant Code of Conduct
As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
## Our Pledge
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery
- Personal attacks
- Trolling or insulting/derogatory comments
- Public or private harassment
- Publishing other's private information, such as physical or electronic addresses, without explicit permission
- Other unethical or unprofessional conduct
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer at [atom@github.com](mailto:atom@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.
## Enforcement
This Code of Conduct is adapted from the Contributor Covenant, version 1.3.0, available from http://contributor-covenant.org/version/1/3/0/
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [electron@github.com](mailto:electron@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@@ -1,5 +1,7 @@
# Contributing to Electron
:memo: Available Translations: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/CONTRIBUTING.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/CONTRIBUTING.md)
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md).
@@ -65,7 +67,7 @@ possible with your report. If you can, please include:
* :non-potable_water: `:non-potable_water:` when plugging memory leaks
* :memo: `:memo:` when writing docs
* :penguin: `:penguin:` when fixing something on Linux
* :apple: `:apple:` when fixing something on Mac OS
* :apple: `:apple:` when fixing something on macOS
* :checkered_flag: `:checkered_flag:` when fixing something on Windows
* :bug: `:bug:` when fixing a bug
* :fire: `:fire:` when removing code or files

View File

@@ -1,27 +1,27 @@
[![Electron Logo](http://electron.atom.io/images/electron-logo.svg)](http://electron.atom.io/)
[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/qtmod45u0cc1ouov/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron#info=devDependencies)
[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/)
:zap: *Formerly known as Atom Shell* :zap:
:memo: Available Translations: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md)
The Electron framework lets you write cross-platform desktop applications
using JavaScript, HTML and CSS. It is based on [Node.js](https://nodejs.org/) and
[Chromium](http://www.chromium.org) and is used in the [Atom
editor](https://github.com/atom/atom).
[Chromium](http://www.chromium.org) and is used by the [Atom
editor](https://github.com/atom/atom) and many other [apps](http://electron.atom.io/apps).
Follow [@ElectronJS](https://twitter.com/electronjs) on Twitter for important
announcements.
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable
behavior to atom@github.com.
behavior to electron@github.com.
## Downloads
Prebuilt binaries and debug symbols of Electron for Linux, Windows and OS X can
Prebuilt binaries and debug symbols of Electron for Linux, Windows and macOS can
be found on the [releases](https://github.com/electron/electron/releases) page.
You can also use [`npm`](https://docs.npmjs.com/) to install prebuilt electron
@@ -29,10 +29,10 @@ binaries:
```sh
# Install the `electron` command globally in your $PATH
npm install electron-prebuilt -g
npm install electron -g
# Install as a development dependency
npm install electron-prebuilt --save-dev
npm install electron --save-dev
```
### Mirrors
@@ -53,6 +53,7 @@ contains documents describing how to build and contribute to Electron.
- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es)
- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN)
- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW)
- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR)
- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA)
- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU)
- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR)
@@ -73,6 +74,8 @@ forums
- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)*
- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)*
- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(Japanese)*
- [`electron-tr`](http://www.meetup.com/Electron-JS-Istanbul/) *(Turkish)*
- [`electron-id`](https://electron-id.slack.com) *(Indonesia)*
Check out [awesome-electron](https://github.com/sindresorhus/awesome-electron)
for a community maintained list of useful example apps, tools and resources.

View File

@@ -2,6 +2,8 @@
# http://www.appveyor.com/docs/appveyor-yml
version: "{build}"
os: Visual Studio 2015
init:
- git config --global core.autocrlf input
@@ -10,7 +12,7 @@ platform:
- x64
install:
- cmd: SET PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH%
- cmd: SET PATH=C:\Program Files (x86)\MSBuild\14.0\bin\;%PATH%
- cmd: SET PATH=C:\python27;%PATH%
- cmd: python script/cibuild

1
atom/CPPLINT.cfg Normal file
View File

@@ -0,0 +1 @@
filter=+build/include_alpha

View File

@@ -89,11 +89,9 @@ content::PepperPluginInfo CreateWidevineCdmInfo(const base::FilePath& path,
// Add the supported codecs as if they came from the component manifest.
std::vector<std::string> codecs;
codecs.push_back(kCdmSupportedCodecVorbis);
codecs.push_back(kCdmSupportedCodecVp8);
codecs.push_back(kCdmSupportedCodecVp9);
#if defined(USE_PROPRIETARY_CODECS)
codecs.push_back(kCdmSupportedCodecAac);
codecs.push_back(kCdmSupportedCodecAvc1);
#endif // defined(USE_PROPRIETARY_CODECS)
std::string codec_string = base::JoinString(
@@ -126,7 +124,7 @@ void ConvertStringWithSeparatorToVector(std::vector<std::string>* vec,
void AddPepperFlashFromCommandLine(
std::vector<content::PepperPluginInfo>* plugins) {
auto command_line = base::CommandLine::ForCurrentProcess();
auto flash_path = command_line->GetSwitchValueNative(
base::FilePath flash_path = command_line->GetSwitchValuePath(
switches::kPpapiFlashPath);
if (flash_path.empty())
return;
@@ -134,20 +132,19 @@ void AddPepperFlashFromCommandLine(
auto flash_version = command_line->GetSwitchValueASCII(
switches::kPpapiFlashVersion);
plugins->push_back(
CreatePepperFlashInfo(base::FilePath(flash_path), flash_version));
plugins->push_back(CreatePepperFlashInfo(flash_path, flash_version));
}
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
void AddWidevineCdmFromCommandLine(
std::vector<content::PepperPluginInfo>* plugins) {
auto command_line = base::CommandLine::ForCurrentProcess();
auto widevine_cdm_path = command_line->GetSwitchValueNative(
base::FilePath widevine_cdm_path = command_line->GetSwitchValuePath(
switches::kWidevineCdmPath);
if (widevine_cdm_path.empty())
return;
if (!base::PathExists(base::FilePath(widevine_cdm_path)))
if (!base::PathExists(widevine_cdm_path))
return;
auto widevine_cdm_version = command_line->GetSwitchValueASCII(
@@ -155,7 +152,7 @@ void AddWidevineCdmFromCommandLine(
if (widevine_cdm_version.empty())
return;
plugins->push_back(CreateWidevineCdmInfo(base::FilePath(widevine_cdm_path),
plugins->push_back(CreateWidevineCdmInfo(widevine_cdm_path,
widevine_cdm_version));
}
#endif
@@ -182,14 +179,8 @@ base::string16 AtomContentClient::GetLocalizedString(int message_id) const {
void AtomContentClient::AddAdditionalSchemes(
std::vector<url::SchemeWithType>* standard_schemes,
std::vector<url::SchemeWithType>* referrer_schemes,
std::vector<std::string>* savable_schemes) {
std::vector<std::string> schemes;
ConvertStringWithSeparatorToVector(&schemes, ",",
switches::kRegisterStandardSchemes);
if (!schemes.empty()) {
for (const std::string& scheme : schemes)
standard_schemes->push_back({scheme.c_str(), url::SCHEME_WITHOUT_PORT});
}
standard_schemes->push_back({"chrome-extension", url::SCHEME_WITHOUT_PORT});
}

View File

@@ -25,6 +25,7 @@ class AtomContentClient : public brightray::ContentClient {
base::string16 GetLocalizedString(int message_id) const override;
void AddAdditionalSchemes(
std::vector<url::SchemeWithType>* standard_schemes,
std::vector<url::SchemeWithType>* referrer_schemes,
std::vector<std::string>* savable_schemes) override;
void AddPepperPlugins(
std::vector<content::PepperPluginInfo>* plugins) override;

View File

@@ -7,18 +7,19 @@
#include <stdlib.h>
#if defined(OS_WIN)
#include <windows.h>
#include <windows.h> // windows.h must be included first
#include <shellapi.h>
#include <shellscalingapi.h>
#include <tchar.h>
#include <shellapi.h>
#include "atom/app/atom_main_delegate.h"
#include "atom/common/crash_reporter/win/crash_service_main.h"
#include "base/environment.h"
#include "base/process/launch.h"
#include "base/win/windows_version.h"
#include "content/public/app/sandbox_helper_win.h"
#include "sandbox/win/src/sandbox_types.h"
#include "ui/gfx/win/dpi.h"
#elif defined(OS_LINUX) // defined(OS_WIN)
#include "atom/app/atom_main_delegate.h" // NOLINT
#include "content/public/app/content_main.h"
@@ -34,7 +35,6 @@
namespace {
const char* kRunAsNode = "ELECTRON_RUN_AS_NODE";
const char* kOldRunAsNode = "ATOM_SHELL_INTERNAL_RUN_AS_NODE";
bool IsEnvSet(const char* name) {
#if defined(OS_WIN)
@@ -47,50 +47,6 @@ bool IsEnvSet(const char* name) {
#endif
}
bool IsRunAsNode() {
return IsEnvSet(kRunAsNode) || IsEnvSet(kOldRunAsNode);
}
#if defined(OS_WIN)
// Win8.1 supports monitor-specific DPI scaling.
bool SetProcessDpiAwarenessWrapper(PROCESS_DPI_AWARENESS value) {
typedef HRESULT(WINAPI *SetProcessDpiAwarenessPtr)(PROCESS_DPI_AWARENESS);
SetProcessDpiAwarenessPtr set_process_dpi_awareness_func =
reinterpret_cast<SetProcessDpiAwarenessPtr>(
GetProcAddress(GetModuleHandleA("user32.dll"),
"SetProcessDpiAwarenessInternal"));
if (set_process_dpi_awareness_func) {
HRESULT hr = set_process_dpi_awareness_func(value);
if (SUCCEEDED(hr)) {
VLOG(1) << "SetProcessDpiAwareness succeeded.";
return true;
} else if (hr == E_ACCESSDENIED) {
LOG(ERROR) << "Access denied error from SetProcessDpiAwareness. "
"Function called twice, or manifest was used.";
}
}
return false;
}
// This function works for Windows Vista through Win8. Win8.1 must use
// SetProcessDpiAwareness[Wrapper].
BOOL SetProcessDPIAwareWrapper() {
typedef BOOL(WINAPI *SetProcessDPIAwarePtr)(VOID);
SetProcessDPIAwarePtr set_process_dpi_aware_func =
reinterpret_cast<SetProcessDPIAwarePtr>(
GetProcAddress(GetModuleHandleA("user32.dll"),
"SetProcessDPIAware"));
return set_process_dpi_aware_func &&
set_process_dpi_aware_func();
}
void EnableHighDPISupport() {
if (!SetProcessDpiAwarenessWrapper(PROCESS_SYSTEM_DPI_AWARE)) {
SetProcessDPIAwareWrapper();
}
}
#endif
} // namespace
#if defined(OS_WIN)
@@ -98,14 +54,11 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
int argc = 0;
wchar_t** wargv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
// Make output work in console if we are not in cygiwn.
if (!IsEnvSet("TERM") && !IsEnvSet("ELECTRON_NO_ATTACH_CONSOLE")) {
AttachConsole(ATTACH_PARENT_PROCESS);
bool run_as_node = IsEnvSet(kRunAsNode);
FILE* dontcare;
freopen_s(&dontcare, "CON", "w", stdout);
freopen_s(&dontcare, "CON", "w", stderr);
}
// Make sure the output is printed to console.
if (run_as_node || !IsEnvSet("ELECTRON_NO_ATTACH_CONSOLE"))
base::RouteStdioToConsole(false);
// Convert argv to to UTF8
char** argv = new char*[argc];
@@ -141,12 +94,12 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
}
}
if (IsRunAsNode()) {
if (run_as_node) {
// Now that argv conversion is done, we can finally start.
base::AtExitManager atexit_manager;
base::i18n::InitializeICU();
return atom::NodeMain(argc, argv);
} else if (IsEnvSet("ATOM_SHELL_INTERNAL_CRASH_SERVICE")) {
} else if (IsEnvSet("ELECTRON_INTERNAL_CRASH_SERVICE")) {
return crash_service::Main(cmd);
}
@@ -154,23 +107,18 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
content::InitializeSandboxInfo(&sandbox_info);
atom::AtomMainDelegate delegate;
// We don't want to set DPI awareness on pre-Win7 because we don't support
// DirectWrite there. GDI fonts are kerned very badly, so better to leave
// DPI-unaware and at effective 1.0. See also ShouldUseDirectWrite().
if (base::win::GetVersion() >= base::win::VERSION_WIN7)
EnableHighDPISupport();
content::ContentMainParams params(&delegate);
params.instance = instance;
params.sandbox_info = &sandbox_info;
atom::AtomCommandLine::Init(argc, argv);
atom::AtomCommandLine::InitW(argc, wargv);
return content::ContentMain(params);
}
#elif defined(OS_LINUX) // defined(OS_WIN)
int main(int argc, const char* argv[]) {
if (IsRunAsNode()) {
if (IsEnvSet(kRunAsNode)) {
base::i18n::InitializeICU();
base::AtExitManager atexit_manager;
return atom::NodeMain(argc, const_cast<char**>(argv));
@@ -187,7 +135,7 @@ int main(int argc, const char* argv[]) {
#else // defined(OS_LINUX)
int main(int argc, const char* argv[]) {
if (IsRunAsNode()) {
if (IsEnvSet(kRunAsNode)) {
return AtomInitializeICUandStartNode(argc, const_cast<char**>(argv));
}

View File

@@ -4,11 +4,12 @@
#include "atom/app/atom_main_delegate.h"
#include <string>
#include <iostream>
#include <string>
#include "atom/app/atom_content_client.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/relauncher.h"
#include "atom/common/google_api_key.h"
#include "atom/renderer/atom_renderer_client.h"
#include "atom/utility/atom_content_utility_client.h"
@@ -25,11 +26,20 @@ namespace atom {
namespace {
const char* kRelauncherProcess = "relauncher";
bool IsBrowserProcess(base::CommandLine* cmd) {
std::string process_type = cmd->GetSwitchValueASCII(switches::kProcessType);
return process_type.empty();
}
#if defined(OS_WIN)
void InvalidParameterHandler(const wchar_t*, const wchar_t*, const wchar_t*,
unsigned int, uintptr_t) {
// noop.
}
#endif
} // namespace
AtomMainDelegate::AtomMainDelegate() {
@@ -61,7 +71,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
#endif // !defined(OS_WIN)
// Only enable logging when --enable-logging is specified.
scoped_ptr<base::Environment> env(base::Environment::Create());
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (!command_line->HasSwitch(switches::kEnableLogging) &&
!env->HasVar("ELECTRON_ENABLE_LOGGING")) {
settings.logging_dest = logging::LOG_NONE;
@@ -83,6 +93,15 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
chrome::RegisterPathProvider();
#if defined(OS_MACOSX)
SetUpBundleOverrides();
#endif
#if defined(OS_WIN)
// Ignore invalid parameter errors.
_set_invalid_parameter_handler(InvalidParameterHandler);
#endif
return brightray::MainDelegate::BasicStartupComplete(exit_code);
}
@@ -90,7 +109,7 @@ void AtomMainDelegate::PreSandboxStartup() {
brightray::MainDelegate::PreSandboxStartup();
// Set google API key.
scoped_ptr<base::Environment> env(base::Environment::Create());
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (!env->HasVar("GOOGLE_API_KEY"))
env->SetVar("GOOGLE_API_KEY", GOOGLEAPIS_API_KEY);
@@ -130,8 +149,29 @@ content::ContentUtilityClient* AtomMainDelegate::CreateContentUtilityClient() {
return utility_client_.get();
}
scoped_ptr<brightray::ContentClient> AtomMainDelegate::CreateContentClient() {
return scoped_ptr<brightray::ContentClient>(new AtomContentClient);
int AtomMainDelegate::RunProcess(
const std::string& process_type,
const content::MainFunctionParams& main_function_params) {
if (process_type == kRelauncherProcess)
return relauncher::RelauncherMain(main_function_params);
else
return -1;
}
#if defined(OS_MACOSX)
bool AtomMainDelegate::ShouldSendMachPort(const std::string& process_type) {
return process_type != kRelauncherProcess;
}
bool AtomMainDelegate::DelaySandboxInitialization(
const std::string& process_type) {
return process_type == kRelauncherProcess;
}
#endif
std::unique_ptr<brightray::ContentClient>
AtomMainDelegate::CreateContentClient() {
return std::unique_ptr<brightray::ContentClient>(new AtomContentClient);
}
} // namespace atom

View File

@@ -5,8 +5,10 @@
#ifndef ATOM_APP_ATOM_MAIN_DELEGATE_H_
#define ATOM_APP_ATOM_MAIN_DELEGATE_H_
#include "brightray/common/main_delegate.h"
#include <string>
#include "brightray/common/content_client.h"
#include "brightray/common/main_delegate.h"
namespace atom {
@@ -22,19 +24,30 @@ class AtomMainDelegate : public brightray::MainDelegate {
content::ContentBrowserClient* CreateContentBrowserClient() override;
content::ContentRendererClient* CreateContentRendererClient() override;
content::ContentUtilityClient* CreateContentUtilityClient() override;
int RunProcess(
const std::string& process_type,
const content::MainFunctionParams& main_function_params) override;
#if defined(OS_MACOSX)
bool ShouldSendMachPort(const std::string& process_type) override;
bool DelaySandboxInitialization(const std::string& process_type) override;
#endif
// brightray::MainDelegate:
scoped_ptr<brightray::ContentClient> CreateContentClient() override;
std::unique_ptr<brightray::ContentClient> CreateContentClient() override;
#if defined(OS_MACOSX)
void OverrideChildProcessPath() override;
void OverrideFrameworkBundlePath() override;
#endif
private:
#if defined(OS_MACOSX)
void SetUpBundleOverrides();
#endif
brightray::ContentClient content_client_;
scoped_ptr<content::ContentBrowserClient> browser_client_;
scoped_ptr<content::ContentRendererClient> renderer_client_;
scoped_ptr<content::ContentUtilityClient> utility_client_;
std::unique_ptr<content::ContentBrowserClient> browser_client_;
std::unique_ptr<content::ContentRendererClient> renderer_client_;
std::unique_ptr<content::ContentUtilityClient> utility_client_;
DISALLOW_COPY_AND_ASSIGN(AtomMainDelegate);
};

View File

@@ -7,7 +7,10 @@
#include "base/mac/bundle_locations.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/mac/foundation_util.h"
#include "base/mac/scoped_nsautorelease_pool.h"
#include "base/path_service.h"
#include "base/strings/sys_string_conversions.h"
#include "brightray/common/application_info.h"
#include "brightray/common/mac/main_application_bundle.h"
#include "content/public/common/content_paths.h"
@@ -48,4 +51,15 @@ void AtomMainDelegate::OverrideChildProcessPath() {
PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
}
void AtomMainDelegate::SetUpBundleOverrides() {
base::mac::ScopedNSAutoreleasePool pool;
NSBundle* bundle = brightray::MainApplicationBundle();
std::string base_bundle_id =
base::SysNSStringToUTF8([bundle bundleIdentifier]);
NSString* team_id = [bundle objectForInfoDictionaryKey:@"ElectronTeamID"];
if (team_id)
base_bundle_id = base::SysNSStringToUTF8(team_id) + "." + base_bundle_id;
base::mac::SetBaseBundleID(base_bundle_id.c_str());
}
} // namespace atom

View File

@@ -8,12 +8,14 @@
#include "atom/browser/javascript_environment.h"
#include "atom/browser/node_debugger.h"
#include "base/command_line.h"
#include "atom/common/node_includes.h"
#include "base/thread_task_runner_handle.h"
#include "base/feature_list.h"
#include "base/threading/thread_task_runner_handle.h"
#include "gin/array_buffer.h"
#include "gin/public/isolate_holder.h"
#include "gin/v8_initializer.h"
#include "atom/common/node_includes.h"
namespace atom {
int NodeMain(int argc, char *argv[]) {
@@ -27,6 +29,11 @@ int NodeMain(int argc, char *argv[]) {
scoped_refptr<UvTaskRunner> uv_task_runner(new UvTaskRunner(loop));
base::ThreadTaskRunnerHandle handle(uv_task_runner);
// Initialize feature list.
std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
feature_list->InitializeFromCommandLine("", "");
base::FeatureList::SetInstance(std::move(feature_list));
gin::V8Initializer::LoadV8Snapshot();
gin::V8Initializer::LoadV8Natives();
JavascriptEnvironment gin_env;
@@ -63,7 +70,7 @@ int NodeMain(int argc, char *argv[]) {
exit_code = node::EmitExit(env);
node::RunAtExit(env);
env->Dispose();
node::FreeEnvironment(env);
}
v8::V8::Dispose();

View File

@@ -21,7 +21,7 @@ UvTaskRunner::~UvTaskRunner() {
bool UvTaskRunner::PostDelayedTask(const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) {
uv_timer_t* timer = new uv_timer_t;
auto* timer = new uv_timer_t;
timer->data = this;
uv_timer_init(loop_, timer);
uv_timer_start(timer, UvTaskRunner::OnTimeout, delay.InMilliseconds(), 0);

View File

@@ -14,6 +14,8 @@
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/browser.h"
#include "atom/browser/login_handler.h"
#include "atom/browser/relauncher.h"
#include "atom/common/atom_command_line.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
@@ -27,8 +29,10 @@
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "base/strings/string_util.h"
#include "brightray/browser/brightray_paths.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_accessibility_state.h"
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/render_frame_host.h"
@@ -40,8 +44,8 @@
#include "ui/gfx/image/image.h"
#if defined(OS_WIN)
#include "atom/browser/ui/win/jump_list.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/base/win/shell.h"
#endif
using atom::Browser;
@@ -67,8 +71,246 @@ struct Converter<Browser::UserTask> {
return true;
}
};
using atom::JumpListItem;
using atom::JumpListCategory;
using atom::JumpListResult;
template<>
struct Converter<JumpListItem::Type> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
JumpListItem::Type* out) {
std::string item_type;
if (!ConvertFromV8(isolate, val, &item_type))
return false;
if (item_type == "task")
*out = JumpListItem::Type::TASK;
else if (item_type == "separator")
*out = JumpListItem::Type::SEPARATOR;
else if (item_type == "file")
*out = JumpListItem::Type::FILE;
else
return false;
return true;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
JumpListItem::Type val) {
std::string item_type;
switch (val) {
case JumpListItem::Type::TASK:
item_type = "task";
break;
case JumpListItem::Type::SEPARATOR:
item_type = "separator";
break;
case JumpListItem::Type::FILE:
item_type = "file";
break;
}
return mate::ConvertToV8(isolate, item_type);
}
};
template<>
struct Converter<JumpListItem> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
JumpListItem* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
if (!dict.Get("type", &(out->type)))
return false;
switch (out->type) {
case JumpListItem::Type::TASK:
if (!dict.Get("program", &(out->path)) ||
!dict.Get("title", &(out->title)))
return false;
if (dict.Get("iconPath", &(out->icon_path)) &&
!dict.Get("iconIndex", &(out->icon_index)))
return false;
dict.Get("args", &(out->arguments));
dict.Get("description", &(out->description));
return true;
case JumpListItem::Type::SEPARATOR:
return true;
case JumpListItem::Type::FILE:
return dict.Get("path", &(out->path));
}
assert(false);
return false;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const JumpListItem& val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("type", val.type);
switch (val.type) {
case JumpListItem::Type::TASK:
dict.Set("program", val.path);
dict.Set("args", val.arguments);
dict.Set("title", val.title);
dict.Set("iconPath", val.icon_path);
dict.Set("iconIndex", val.icon_index);
dict.Set("description", val.description);
break;
case JumpListItem::Type::SEPARATOR:
break;
case JumpListItem::Type::FILE:
dict.Set("path", val.path);
break;
}
return dict.GetHandle();
}
};
template<>
struct Converter<JumpListCategory::Type> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
JumpListCategory::Type* out) {
std::string category_type;
if (!ConvertFromV8(isolate, val, &category_type))
return false;
if (category_type == "tasks")
*out = JumpListCategory::Type::TASKS;
else if (category_type == "frequent")
*out = JumpListCategory::Type::FREQUENT;
else if (category_type == "recent")
*out = JumpListCategory::Type::RECENT;
else if (category_type == "custom")
*out = JumpListCategory::Type::CUSTOM;
else
return false;
return true;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
JumpListCategory::Type val) {
std::string category_type;
switch (val) {
case JumpListCategory::Type::TASKS:
category_type = "tasks";
break;
case JumpListCategory::Type::FREQUENT:
category_type = "frequent";
break;
case JumpListCategory::Type::RECENT:
category_type = "recent";
break;
case JumpListCategory::Type::CUSTOM:
category_type = "custom";
break;
}
return mate::ConvertToV8(isolate, category_type);
}
};
template<>
struct Converter<JumpListCategory> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
JumpListCategory* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
if (dict.Get("name", &(out->name)) && out->name.empty())
return false;
if (!dict.Get("type", &(out->type))) {
if (out->name.empty())
out->type = JumpListCategory::Type::TASKS;
else
out->type = JumpListCategory::Type::CUSTOM;
}
if ((out->type == JumpListCategory::Type::TASKS) ||
(out->type == JumpListCategory::Type::CUSTOM)) {
if (!dict.Get("items", &(out->items)))
return false;
}
return true;
}
};
// static
template<>
struct Converter<JumpListResult> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, JumpListResult val) {
std::string result_code;
switch (val) {
case JumpListResult::SUCCESS:
result_code = "ok";
break;
case JumpListResult::ARGUMENT_ERROR:
result_code = "argumentError";
break;
case JumpListResult::GENERIC_ERROR:
result_code = "error";
break;
case JumpListResult::CUSTOM_CATEGORY_SEPARATOR_ERROR:
result_code = "invalidSeparatorError";
break;
case JumpListResult::MISSING_FILE_TYPE_REGISTRATION_ERROR:
result_code = "fileTypeRegistrationError";
break;
case JumpListResult::CUSTOM_CATEGORY_ACCESS_DENIED_ERROR:
result_code = "customCategoryAccessDeniedError";
break;
}
return ConvertToV8(isolate, result_code);
}
};
#endif
template<>
struct Converter<Browser::LoginItemSettings> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
Browser::LoginItemSettings* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
dict.Get("openAtLogin", &(out->open_at_login));
dict.Get("openAsHidden", &(out->open_as_hidden));
return true;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
Browser::LoginItemSettings val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("openAtLogin", val.open_at_login);
dict.Set("openAsHidden", val.open_as_hidden);
dict.Set("restoreState", val.restore_state);
dict.Set("wasOpenedAtLogin", val.opened_at_login);
dict.Set("wasOpenedAsHidden", val.opened_as_hidden);
return dict.GetHandle();
}
};
} // namespace mate
@@ -108,6 +350,8 @@ int GetPathConstant(const std::string& name) {
return chrome::DIR_USER_PICTURES;
else if (name == "videos")
return chrome::DIR_USER_VIDEOS;
else if (name == "pepperFlashSystemPlugin")
return chrome::FILE_PEPPER_FLASH_SYSTEM_PLUGIN;
else
return -1;
}
@@ -139,13 +383,12 @@ void OnClientCertificateSelected(
return;
}
v8::Local<v8::Object> data;
std::string data;
if (!cert_data.Get("data", &data))
return;
auto certs = net::X509Certificate::CreateCertificateListFromBytes(
node::Buffer::Data(data), node::Buffer::Length(data),
net::X509Certificate::FORMAT_AUTO);
data.c_str(), data.length(), net::X509Certificate::FORMAT_AUTO);
if (certs.size() > 0)
delegate->ContinueWithCertificate(certs[0].get());
}
@@ -194,10 +437,11 @@ int ImportIntoCertStore(
} // namespace
App::App() {
App::App(v8::Isolate* isolate) {
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(this);
Browser::Get()->AddObserver(this);
content::GpuDataManager::GetInstance()->AddObserver(this);
Init(isolate);
}
App::~App() {
@@ -245,17 +489,31 @@ void App::OnWillFinishLaunching() {
Emit("will-finish-launching");
}
void App::OnFinishLaunching() {
Emit("ready");
void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
Emit("ready", launch_info);
}
void App::OnLogin(LoginHandler* login_handler) {
void App::OnAccessibilitySupportChanged() {
Emit("accessibility-support-changed", IsAccessibilitySupportEnabled());
}
#if defined(OS_MACOSX)
void App::OnContinueUserActivity(
bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) {
*prevent_default = Emit("continue-activity", type, user_info);
}
#endif
void App::OnLogin(LoginHandler* login_handler,
const base::DictionaryValue& request_details) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = Emit(
"login",
WebContents::CreateFrom(isolate(), login_handler->GetWebContents()),
login_handler->request(),
request_details,
login_handler->auth_info(),
base::Bind(&PassLoginInformation, make_scoped_refptr(login_handler)));
@@ -309,7 +567,7 @@ void App::AllowCertificateError(
void App::SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
scoped_ptr<content::ClientCertificateDelegate> delegate) {
std::unique_ptr<content::ClientCertificateDelegate> delegate) {
std::shared_ptr<content::ClientCertificateDelegate>
shared_delegate(delegate.release());
bool prevent_default =
@@ -327,16 +585,11 @@ void App::SelectClientCertificate(
cert_request_info->client_certs[0].get());
}
void App::OnGpuProcessCrashed(base::TerminationStatus exit_code) {
Emit("gpu-process-crashed");
void App::OnGpuProcessCrashed(base::TerminationStatus status) {
Emit("gpu-process-crashed",
status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
}
#if defined(OS_MACOSX)
void App::OnPlatformThemeChanged() {
Emit("platform-theme-changed");
}
#endif
base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
bool succeed = false;
base::FilePath path;
@@ -366,27 +619,15 @@ void App::SetPath(mate::Arguments* args,
void App::SetDesktopName(const std::string& desktop_name) {
#if defined(OS_LINUX)
scoped_ptr<base::Environment> env(base::Environment::Create());
std::unique_ptr<base::Environment> env(base::Environment::Create());
env->SetVar("CHROME_DESKTOP", desktop_name);
#endif
}
void App::AllowNTLMCredentialsForAllDomains(bool should_allow) {
auto browser_context = static_cast<AtomBrowserContext*>(
AtomBrowserMainParts::Get()->browser_context());
browser_context->AllowNTLMCredentialsForAllDomains(should_allow);
}
std::string App::GetLocale() {
return l10n_util::GetApplicationLocale("");
}
#if defined(OS_WIN)
bool App::IsAeroGlassEnabled() {
return ui::win::IsAeroGlassEnabled();
}
#endif
bool App::MakeSingleInstance(
const ProcessSingleton::NotificationCallback& callback) {
if (process_singleton_.get())
@@ -409,14 +650,73 @@ bool App::MakeSingleInstance(
}
}
void App::ReleaseSingleInstance() {
if (process_singleton_.get()) {
process_singleton_->Cleanup();
process_singleton_.reset();
}
}
bool App::Relaunch(mate::Arguments* js_args) {
// Parse parameters.
bool override_argv = false;
base::FilePath exec_path;
relauncher::StringVector args;
mate::Dictionary options;
if (js_args->GetNext(&options)) {
if (options.Get("execPath", &exec_path) | options.Get("args", &args))
override_argv = true;
}
if (!override_argv) {
#if defined(OS_WIN)
const relauncher::StringVector& argv = atom::AtomCommandLine::wargv();
#else
const relauncher::StringVector& argv = atom::AtomCommandLine::argv();
#endif
return relauncher::RelaunchApp(argv);
}
relauncher::StringVector argv;
argv.reserve(1 + args.size());
if (exec_path.empty()) {
base::FilePath current_exe_path;
PathService::Get(base::FILE_EXE, &current_exe_path);
argv.push_back(current_exe_path.value());
} else {
argv.push_back(exec_path.value());
}
argv.insert(argv.end(), args.begin(), args.end());
return relauncher::RelaunchApp(argv);
}
void App::DisableHardwareAcceleration(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError("app.disableHardwareAcceleration() can only be called "
"before app is ready");
return;
}
content::GpuDataManager::GetInstance()->DisableHardwareAcceleration();
}
bool App::IsAccessibilitySupportEnabled() {
auto ax_state = content::BrowserAccessibilityState::GetInstance();
return ax_state->IsAccessibleBrowser();
}
#if defined(USE_NSS_CERTS)
void App::ImportCertificate(
const base::DictionaryValue& options,
const net::CompletionCallback& callback) {
auto browser_context = AtomBrowserMainParts::Get()->browser_context();
auto browser_context = AtomBrowserContext::From("", false);
if (!certificate_manager_model_) {
scoped_ptr<base::DictionaryValue> copy = options.CreateDeepCopy();
CertificateManagerModel::Create(browser_context,
std::unique_ptr<base::DictionaryValue> copy = options.CreateDeepCopy();
CertificateManagerModel::Create(
browser_context.get(),
base::Bind(&App::OnCertificateManagerModelCreated,
base::Unretained(this),
base::Passed(&copy),
@@ -429,9 +729,9 @@ void App::ImportCertificate(
}
void App::OnCertificateManagerModelCreated(
scoped_ptr<base::DictionaryValue> options,
std::unique_ptr<base::DictionaryValue> options,
const net::CompletionCallback& callback,
scoped_ptr<CertificateManagerModel> model) {
std::unique_ptr<CertificateManagerModel> model) {
certificate_manager_model_ = std::move(model);
int rv = ImportIntoCertStore(certificate_manager_model_.get(),
*(options.get()));
@@ -439,10 +739,74 @@ void App::OnCertificateManagerModelCreated(
}
#endif
mate::ObjectTemplateBuilder App::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
#if defined(OS_WIN)
v8::Local<v8::Value> App::GetJumpListSettings() {
JumpList jump_list(Browser::Get()->GetAppUserModelID());
int min_items = 10;
std::vector<JumpListItem> removed_items;
if (jump_list.Begin(&min_items, &removed_items)) {
// We don't actually want to change anything, so abort the transaction.
jump_list.Abort();
} else {
LOG(ERROR) << "Failed to begin Jump List transaction.";
}
auto dict = mate::Dictionary::CreateEmpty(isolate());
dict.Set("minItems", min_items);
dict.Set("removedItems", mate::ConvertToV8(isolate(), removed_items));
return dict.GetHandle();
}
JumpListResult App::SetJumpList(v8::Local<v8::Value> val,
mate::Arguments* args) {
std::vector<JumpListCategory> categories;
bool delete_jump_list = val->IsNull();
if (!delete_jump_list &&
!mate::ConvertFromV8(args->isolate(), val, &categories)) {
args->ThrowError("Argument must be null or an array of categories");
return JumpListResult::ARGUMENT_ERROR;
}
JumpList jump_list(Browser::Get()->GetAppUserModelID());
if (delete_jump_list) {
return jump_list.Delete()
? JumpListResult::SUCCESS
: JumpListResult::GENERIC_ERROR;
}
// Start a transaction that updates the JumpList of this application.
if (!jump_list.Begin())
return JumpListResult::GENERIC_ERROR;
JumpListResult result = jump_list.AppendCategories(categories);
// AppendCategories may have failed to add some categories, but it's better
// to have something than nothing so try to commit the changes anyway.
if (!jump_list.Commit()) {
LOG(ERROR) << "Failed to commit changes to custom Jump List.";
// It's more useful to return the earlier error code that might give
// some indication as to why the transaction actually failed, so don't
// overwrite it with a "generic error" code here.
if (result == JumpListResult::SUCCESS)
result = JumpListResult::GENERIC_ERROR;
}
return result;
}
#endif // defined(OS_WIN)
// static
mate::Handle<App> App::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new App(isolate));
}
// static
void App::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "App"));
auto browser = base::Unretained(Browser::Get());
return mate::ObjectTemplateBuilder(isolate)
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("quit", base::Bind(&Browser::Quit, browser))
.SetMethod("exit", base::Bind(&Browser::Exit, browser))
.SetMethod("focus", base::Bind(&Browser::Focus, browser))
@@ -457,36 +821,49 @@ mate::ObjectTemplateBuilder App::GetObjectTemplateBuilder(
base::Bind(&Browser::ClearRecentDocuments, browser))
.SetMethod("setAppUserModelId",
base::Bind(&Browser::SetAppUserModelID, browser))
.SetMethod("isDefaultProtocolClient",
base::Bind(&Browser::IsDefaultProtocolClient, browser))
.SetMethod("setAsDefaultProtocolClient",
base::Bind(&Browser::SetAsDefaultProtocolClient, browser))
.SetMethod("removeAsDefaultProtocolClient",
base::Bind(&Browser::RemoveAsDefaultProtocolClient, browser))
.SetMethod("setBadgeCount", base::Bind(&Browser::SetBadgeCount, browser))
.SetMethod("getBadgeCount", base::Bind(&Browser::GetBadgeCount, browser))
.SetMethod("getLoginItemSettings",
base::Bind(&Browser::GetLoginItemSettings, browser))
.SetMethod("setLoginItemSettings",
base::Bind(&Browser::SetLoginItemSettings, browser))
#if defined(OS_MACOSX)
.SetMethod("hide", base::Bind(&Browser::Hide, browser))
.SetMethod("show", base::Bind(&Browser::Show, browser))
.SetMethod("isDarkMode",
base::Bind(&Browser::IsDarkMode, browser))
.SetMethod("setUserActivity",
base::Bind(&Browser::SetUserActivity, browser))
.SetMethod("getCurrentActivityType",
base::Bind(&Browser::GetCurrentActivityType, browser))
#endif
#if defined(OS_WIN)
.SetMethod("setUserTasks",
base::Bind(&Browser::SetUserTasks, browser))
.SetMethod("isAeroGlassEnabled", &App::IsAeroGlassEnabled)
.SetMethod("setUserTasks", base::Bind(&Browser::SetUserTasks, browser))
.SetMethod("getJumpListSettings", &App::GetJumpListSettings)
.SetMethod("setJumpList", &App::SetJumpList)
#endif
#if defined(OS_LINUX)
.SetMethod("isUnityRunning",
base::Bind(&Browser::IsUnityRunning, browser))
#endif
.SetMethod("setPath", &App::SetPath)
.SetMethod("getPath", &App::GetPath)
.SetMethod("setDesktopName", &App::SetDesktopName)
.SetMethod("allowNTLMCredentialsForAllDomains",
&App::AllowNTLMCredentialsForAllDomains)
.SetMethod("getLocale", &App::GetLocale)
#if defined(USE_NSS_CERTS)
.SetMethod("importCertificate", &App::ImportCertificate)
#endif
.SetMethod("makeSingleInstance", &App::MakeSingleInstance);
}
// static
mate::Handle<App> App::Create(v8::Isolate* isolate) {
return CreateHandle(isolate, new App);
.SetMethod("makeSingleInstance", &App::MakeSingleInstance)
.SetMethod("releaseSingleInstance", &App::ReleaseSingleInstance)
.SetMethod("relaunch", &App::Relaunch)
.SetMethod("isAccessibilitySupportEnabled",
&App::IsAccessibilitySupportEnabled)
.SetMethod("disableHardwareAcceleration",
&App::DisableHardwareAcceleration);
}
} // namespace api
@@ -499,7 +876,8 @@ namespace {
void AppendSwitch(const std::string& switch_string, mate::Arguments* args) {
auto command_line = base::CommandLine::ForCurrentProcess();
if (switch_string == atom::switches::kPpapiFlashPath ||
if (base::EndsWith(switch_string, "-path",
base::CompareCase::INSENSITIVE_ASCII) ||
switch_string == switches::kLogNetLog) {
base::FilePath path;
args->GetNext(&path);
@@ -535,6 +913,7 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
auto command_line = base::CommandLine::ForCurrentProcess();
mate::Dictionary dict(isolate, exports);
dict.Set("App", atom::api::App::GetConstructor(isolate)->GetFunction());
dict.Set("app", atom::api::App::Create(isolate));
dict.SetMethod("appendSwitch", &AppendSwitch);
dict.SetMethod("appendArgument",
@@ -545,12 +924,15 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
dict.SetMethod("dockBounce", &DockBounce);
dict.SetMethod("dockCancelBounce",
base::Bind(&Browser::DockCancelBounce, browser));
dict.SetMethod("dockDownloadFinished",
base::Bind(&Browser::DockDownloadFinished, browser));
dict.SetMethod("dockSetBadgeText",
base::Bind(&Browser::DockSetBadgeText, browser));
dict.SetMethod("dockGetBadgeText",
base::Bind(&Browser::DockGetBadgeText, browser));
dict.SetMethod("dockHide", base::Bind(&Browser::DockHide, browser));
dict.SetMethod("dockShow", base::Bind(&Browser::DockShow, browser));
dict.SetMethod("dockIsVisible", base::Bind(&Browser::DockIsVisible, browser));
dict.SetMethod("dockSetMenu", &DockSetMenu);
dict.SetMethod("dockSetIcon", base::Bind(&Browser::DockSetIcon, browser));
#endif

View File

@@ -26,19 +26,26 @@ class FilePath;
namespace mate {
class Arguments;
}
} // namespace mate
namespace atom {
#if defined(OS_WIN)
enum class JumpListResult : int;
#endif
namespace api {
class App : public AtomBrowserClient::Delegate,
public mate::EventEmitter,
public mate::EventEmitter<App>,
public BrowserObserver,
public content::GpuDataManagerObserver {
public:
static mate::Handle<App> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Called when window with disposition needs to be created.
void OnCreateWindow(const GURL& target_url,
const std::string& frame_name,
@@ -48,14 +55,14 @@ class App : public AtomBrowserClient::Delegate,
#if defined(USE_NSS_CERTS)
void OnCertificateManagerModelCreated(
scoped_ptr<base::DictionaryValue> options,
std::unique_ptr<base::DictionaryValue> options,
const net::CompletionCallback& callback,
scoped_ptr<CertificateManagerModel> model);
std::unique_ptr<CertificateManagerModel> model);
#endif
protected:
App();
virtual ~App();
explicit App(v8::Isolate* isolate);
~App() override;
// BrowserObserver:
void OnBeforeQuit(bool* prevent_default) override;
@@ -66,8 +73,16 @@ class App : public AtomBrowserClient::Delegate,
void OnOpenURL(const std::string& url) override;
void OnActivate(bool has_visible_windows) override;
void OnWillFinishLaunching() override;
void OnFinishLaunching() override;
void OnLogin(LoginHandler* login_handler) override;
void OnFinishLaunching(const base::DictionaryValue& launch_info) override;
void OnLogin(LoginHandler* login_handler,
const base::DictionaryValue& request_details) override;
void OnAccessibilitySupportChanged() override;
#if defined(OS_MACOSX)
void OnContinueUserActivity(
bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) override;
#endif
// content::ContentBrowserClient:
void AllowCertificateError(
@@ -84,18 +99,10 @@ class App : public AtomBrowserClient::Delegate,
void SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
scoped_ptr<content::ClientCertificateDelegate> delegate) override;
std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
// content::GpuDataManagerObserver:
void OnGpuProcessCrashed(base::TerminationStatus exit_code) override;
#if defined(OS_MACOSX)
void OnPlatformThemeChanged() override;
#endif
// mate::Wrappable:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
void OnGpuProcessCrashed(base::TerminationStatus status) override;
private:
// Get/Set the pre-defined path in PathService.
@@ -105,24 +112,30 @@ class App : public AtomBrowserClient::Delegate,
const base::FilePath& path);
void SetDesktopName(const std::string& desktop_name);
void AllowNTLMCredentialsForAllDomains(bool should_allow);
std::string GetLocale();
bool MakeSingleInstance(
const ProcessSingleton::NotificationCallback& callback);
std::string GetLocale();
void ReleaseSingleInstance();
bool Relaunch(mate::Arguments* args);
void DisableHardwareAcceleration(mate::Arguments* args);
bool IsAccessibilitySupportEnabled();
#if defined(USE_NSS_CERTS)
void ImportCertificate(const base::DictionaryValue& options,
const net::CompletionCallback& callback);
#endif
#if defined(OS_WIN)
bool IsAeroGlassEnabled();
#endif
// Get the current Jump List settings.
v8::Local<v8::Value> GetJumpListSettings();
scoped_ptr<ProcessSingleton> process_singleton_;
// Set or remove a custom Jump List for the application.
JumpListResult SetJumpList(v8::Local<v8::Value> val, mate::Arguments* args);
#endif // defined(OS_WIN)
std::unique_ptr<ProcessSingleton> process_singleton_;
#if defined(USE_NSS_CERTS)
scoped_ptr<CertificateManagerModel> certificate_manager_model_;
std::unique_ptr<CertificateManagerModel> certificate_manager_model_;
#endif
DISALLOW_COPY_AND_ASSIGN(App);

View File

@@ -4,12 +4,12 @@
#include "atom/browser/api/atom_api_auto_updater.h"
#include "base/time/time.h"
#include "atom/browser/browser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/window_list.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/node_includes.h"
#include "base/time/time.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
@@ -34,8 +34,9 @@ namespace atom {
namespace api {
AutoUpdater::AutoUpdater() {
AutoUpdater::AutoUpdater(v8::Isolate* isolate) {
auto_updater::AutoUpdater::SetDelegate(this);
Init(isolate);
}
AutoUpdater::~AutoUpdater() {
@@ -78,12 +79,10 @@ void AutoUpdater::OnWindowAllClosed() {
QuitAndInstall();
}
mate::ObjectTemplateBuilder AutoUpdater::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
.SetMethod("setFeedURL", &auto_updater::AutoUpdater::SetFeedURL)
.SetMethod("checkForUpdates", &auto_updater::AutoUpdater::CheckForUpdates)
.SetMethod("quitAndInstall", &AutoUpdater::QuitAndInstall);
void AutoUpdater::SetFeedURL(const std::string& url, mate::Arguments* args) {
auto_updater::AutoUpdater::HeaderMap headers;
args->GetNext(&headers);
auto_updater::AutoUpdater::SetFeedURL(url, headers);
}
void AutoUpdater::QuitAndInstall() {
@@ -102,7 +101,18 @@ void AutoUpdater::QuitAndInstall() {
// static
mate::Handle<AutoUpdater> AutoUpdater::Create(v8::Isolate* isolate) {
return CreateHandle(isolate, new AutoUpdater);
return mate::CreateHandle(isolate, new AutoUpdater(isolate));
}
// static
void AutoUpdater::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "AutoUpdater"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("checkForUpdates", &auto_updater::AutoUpdater::CheckForUpdates)
.SetMethod("getFeedURL", &auto_updater::AutoUpdater::GetFeedURL)
.SetMethod("setFeedURL", &AutoUpdater::SetFeedURL)
.SetMethod("quitAndInstall", &AutoUpdater::QuitAndInstall);
}
} // namespace api
@@ -112,11 +122,14 @@ mate::Handle<AutoUpdater> AutoUpdater::Create(v8::Isolate* isolate) {
namespace {
using atom::api::AutoUpdater;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("autoUpdater", atom::api::AutoUpdater::Create(isolate));
dict.Set("autoUpdater", AutoUpdater::Create(isolate));
dict.Set("AutoUpdater", AutoUpdater::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -10,21 +10,25 @@
#include "atom/browser/api/event_emitter.h"
#include "atom/browser/auto_updater.h"
#include "atom/browser/window_list_observer.h"
#include "native_mate/arguments.h"
#include "native_mate/handle.h"
namespace atom {
namespace api {
class AutoUpdater : public mate::EventEmitter,
class AutoUpdater : public mate::EventEmitter<AutoUpdater>,
public auto_updater::Delegate,
public WindowListObserver {
public:
static mate::Handle<AutoUpdater> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
AutoUpdater();
virtual ~AutoUpdater();
explicit AutoUpdater(v8::Isolate* isolate);
~AutoUpdater() override;
// Delegate implementations.
void OnError(const std::string& error) override;
@@ -39,11 +43,9 @@ class AutoUpdater : public mate::EventEmitter,
// WindowListObserver:
void OnWindowAllClosed() override;
// mate::Wrappable implementations:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
private:
std::string GetFeedURL();
void SetFeedURL(const std::string& url, mate::Arguments* args);
void QuitAndInstall();
DISALLOW_COPY_AND_ASSIGN(AutoUpdater);

View File

@@ -7,12 +7,13 @@
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/node_includes.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "content/public/browser/tracing_controller.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
using content::TracingController;
namespace mate {

View File

@@ -4,6 +4,7 @@
#include "atom/browser/api/atom_api_cookies.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
@@ -30,7 +31,7 @@ struct Converter<atom::api::Cookies::Error> {
if (val == atom::api::Cookies::SUCCESS)
return v8::Null(isolate);
else
return v8::Exception::Error(StringToV8(isolate, "failed"));
return v8::Exception::Error(StringToV8(isolate, "Setting cookie failed"));
}
};
@@ -47,7 +48,7 @@ struct Converter<net::CanonicalCookie> {
dict.Set("secure", val.IsSecure());
dict.Set("httpOnly", val.IsHttpOnly());
dict.Set("session", !val.IsPersistent());
if (!val.IsPersistent())
if (val.IsPersistent())
dict.Set("expirationDate", val.ExpiryDate().ToDoubleT());
return dict.GetHandle();
}
@@ -112,7 +113,7 @@ void RunCallbackInUI(const base::Closure& callback) {
}
// Remove cookies from |list| not matching |filter|, and pass it to |callback|.
void FilterCookies(scoped_ptr<base::DictionaryValue> filter,
void FilterCookies(std::unique_ptr<base::DictionaryValue> filter,
const Cookies::GetCallback& callback,
const net::CookieList& list) {
net::CookieList result;
@@ -125,7 +126,7 @@ void FilterCookies(scoped_ptr<base::DictionaryValue> filter,
// Receives cookies matching |filter| in IO thread.
void GetCookiesOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
scoped_ptr<base::DictionaryValue> filter,
std::unique_ptr<base::DictionaryValue> filter,
const Cookies::GetCallback& callback) {
std::string url;
filter->GetString("url", &url);
@@ -133,12 +134,12 @@ void GetCookiesOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
auto filtered_callback =
base::Bind(FilterCookies, base::Passed(&filter), callback);
net::CookieMonster* monster = GetCookieStore(getter)->GetCookieMonster();
// Empty url will match all url cookies.
if (url.empty())
monster->GetAllCookiesAsync(filtered_callback);
GetCookieStore(getter)->GetAllCookiesAsync(filtered_callback);
else
monster->GetAllCookiesForURLAsync(GURL(url), filtered_callback);
GetCookieStore(getter)->GetAllCookiesForURLAsync(GURL(url),
filtered_callback);
}
// Removes cookie with |url| and |name| in IO thread.
@@ -157,12 +158,14 @@ void OnSetCookie(const Cookies::SetCallback& callback, bool success) {
// Sets cookie with |details| in IO thread.
void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
scoped_ptr<base::DictionaryValue> details,
std::unique_ptr<base::DictionaryValue> details,
const Cookies::SetCallback& callback) {
std::string url, name, value, domain, path;
bool secure = false;
bool http_only = false;
double creation_date;
double expiration_date;
double last_access_date;
details->GetString("url", &url);
details->GetString("name", &name);
details->GetString("value", &value);
@@ -171,6 +174,13 @@ void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
details->GetBoolean("secure", &secure);
details->GetBoolean("httpOnly", &http_only);
base::Time creation_time;
if (details->GetDouble("creationDate", &creation_date)) {
creation_time = (creation_date == 0) ?
base::Time::UnixEpoch() :
base::Time::FromDoubleT(creation_date);
}
base::Time expiration_time;
if (details->GetDouble("expirationDate", &expiration_date)) {
expiration_time = (expiration_date == 0) ?
@@ -178,16 +188,26 @@ void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
base::Time::FromDoubleT(expiration_date);
}
GetCookieStore(getter)->GetCookieMonster()->SetCookieWithDetailsAsync(
GURL(url), name, value, domain, path, expiration_time, secure, http_only,
false, false, false, net::COOKIE_PRIORITY_DEFAULT,
base::Bind(OnSetCookie, callback));
base::Time last_access_time;
if (details->GetDouble("lastAccessDate", &last_access_date)) {
last_access_time = (last_access_date == 0) ?
base::Time::UnixEpoch() :
base::Time::FromDoubleT(last_access_date);
}
GetCookieStore(getter)->SetCookieWithDetailsAsync(
GURL(url), name, value, domain, path, creation_time,
expiration_time, last_access_time, secure, http_only,
net::CookieSameSite::DEFAULT_MODE, false,
net::COOKIE_PRIORITY_DEFAULT, base::Bind(OnSetCookie, callback));
}
} // namespace
Cookies::Cookies(content::BrowserContext* browser_context)
: request_context_getter_(browser_context->GetRequestContext()) {
Cookies::Cookies(v8::Isolate* isolate,
AtomBrowserContext* browser_context)
: request_context_getter_(browser_context->url_request_context_getter()) {
Init(isolate);
}
Cookies::~Cookies() {
@@ -195,7 +215,7 @@ Cookies::~Cookies() {
void Cookies::Get(const base::DictionaryValue& filter,
const GetCallback& callback) {
scoped_ptr<base::DictionaryValue> copied(filter.CreateDeepCopy());
std::unique_ptr<base::DictionaryValue> copied(filter.CreateDeepCopy());
auto getter = make_scoped_refptr(request_context_getter_);
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
@@ -212,7 +232,7 @@ void Cookies::Remove(const GURL& url, const std::string& name,
void Cookies::Set(const base::DictionaryValue& details,
const SetCallback& callback) {
scoped_ptr<base::DictionaryValue> copied(details.CreateDeepCopy());
std::unique_ptr<base::DictionaryValue> copied(details.CreateDeepCopy());
auto getter = make_scoped_refptr(request_context_getter_);
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
@@ -222,14 +242,15 @@ void Cookies::Set(const base::DictionaryValue& details,
// static
mate::Handle<Cookies> Cookies::Create(
v8::Isolate* isolate,
content::BrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Cookies(browser_context));
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Cookies(isolate, browser_context));
}
// static
void Cookies::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Cookies"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("get", &Cookies::Get)
.SetMethod("remove", &Cookies::Remove)
.SetMethod("set", &Cookies::Set);

View File

@@ -16,16 +16,14 @@ namespace base {
class DictionaryValue;
}
namespace content {
class BrowserContext;
}
namespace net {
class URLRequestContextGetter;
}
namespace atom {
class AtomBrowserContext;
namespace api {
class Cookies : public mate::TrackableObject<Cookies> {
@@ -39,15 +37,15 @@ class Cookies : public mate::TrackableObject<Cookies> {
using SetCallback = base::Callback<void(Error)>;
static mate::Handle<Cookies> Create(v8::Isolate* isolate,
content::BrowserContext* browser_context);
AtomBrowserContext* browser_context);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit Cookies(content::BrowserContext* browser_context);
~Cookies();
Cookies(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Cookies() override;
void Get(const base::DictionaryValue& filter, const GetCallback& callback);
void Remove(const GURL& url, const std::string& name,

View File

@@ -9,7 +9,6 @@
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "content/public/browser/devtools_agent_host.h"
@@ -17,23 +16,18 @@
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "atom/common/node_includes.h"
using content::DevToolsAgentHost;
namespace atom {
namespace api {
namespace {
// The wrapDebugger funtion which is implemented in JavaScript.
using WrapDebuggerCallback = base::Callback<void(v8::Local<v8::Value>)>;
WrapDebuggerCallback g_wrap_debugger;
} // namespace
Debugger::Debugger(content::WebContents* web_contents)
Debugger::Debugger(v8::Isolate* isolate, content::WebContents* web_contents)
: web_contents_(web_contents),
previous_request_id_(0) {
Init(isolate);
}
Debugger::~Debugger() {
@@ -51,7 +45,7 @@ void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
const std::string& message) {
DCHECK(agent_host == agent_host_.get());
scoped_ptr<base::Value> parsed_message(base::JSONReader::Read(message));
std::unique_ptr<base::Value> parsed_message(base::JSONReader::Read(message));
if (!parsed_message->IsType(base::Value::TYPE_DICTIONARY))
return;
@@ -114,7 +108,7 @@ bool Debugger::IsAttached() {
void Debugger::Detach() {
if (!agent_host_.get())
return;
agent_host_->DetachClient();
agent_host_->DetachClient(this);
AgentHostClosed(agent_host_.get(), false);
agent_host_ = nullptr;
}
@@ -143,51 +137,40 @@ void Debugger::SendCommand(mate::Arguments* args) {
std::string json_args;
base::JSONWriter::Write(request, &json_args);
agent_host_->DispatchProtocolMessage(json_args);
agent_host_->DispatchProtocolMessage(this, json_args);
}
// static
mate::Handle<Debugger> Debugger::Create(
v8::Isolate* isolate,
content::WebContents* web_contents) {
auto handle = mate::CreateHandle(isolate, new Debugger(web_contents));
g_wrap_debugger.Run(handle.ToV8());
return handle;
return mate::CreateHandle(isolate, new Debugger(isolate, web_contents));
}
// static
void Debugger::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Debugger"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("attach", &Debugger::Attach)
.SetMethod("isAttached", &Debugger::IsAttached)
.SetMethod("detach", &Debugger::Detach)
.SetMethod("sendCommand", &Debugger::SendCommand);
}
void ClearWrapDebugger() {
g_wrap_debugger.Reset();
}
void SetWrapDebugger(const WrapDebuggerCallback& callback) {
g_wrap_debugger = callback;
// Cleanup the wrapper on exit.
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
base::Bind(ClearWrapDebugger));
}
} // namespace api
} // namespace atom
namespace {
using atom::api::Debugger;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.SetMethod("_setWrapDebugger", &atom::api::SetWrapDebugger);
mate::Dictionary(isolate, exports)
.Set("Debugger", Debugger::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -39,11 +39,11 @@ class Debugger: public mate::TrackableObject<Debugger>,
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit Debugger(content::WebContents* web_contents);
~Debugger();
Debugger(v8::Isolate* isolate, content::WebContents* web_contents);
~Debugger() override;
// content::DevToolsAgentHostClient:
void AgentHostClosed(content::DevToolsAgentHost* agent_host,

View File

@@ -38,7 +38,8 @@ namespace atom {
namespace api {
DesktopCapturer::DesktopCapturer() {
DesktopCapturer::DesktopCapturer(v8::Isolate* isolate) {
Init(isolate);
}
DesktopCapturer::~DesktopCapturer() {
@@ -60,9 +61,9 @@ void DesktopCapturer::StartHandling(bool capture_window,
options.set_disable_effects(false);
#endif
scoped_ptr<webrtc::ScreenCapturer> screen_capturer(
std::unique_ptr<webrtc::ScreenCapturer> screen_capturer(
capture_screen ? webrtc::ScreenCapturer::Create(options) : nullptr);
scoped_ptr<webrtc::WindowCapturer> window_capturer(
std::unique_ptr<webrtc::WindowCapturer> window_capturer(
capture_window ? webrtc::WindowCapturer::Create(options) : nullptr);
media_list_.reset(new NativeDesktopMediaList(
std::move(screen_capturer), std::move(window_capturer)));
@@ -88,19 +89,20 @@ void DesktopCapturer::OnSourceThumbnailChanged(int index) {
bool DesktopCapturer::OnRefreshFinished() {
Emit("finished", media_list_->GetSources());
media_list_.reset();
return false;
}
mate::ObjectTemplateBuilder DesktopCapturer::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
.SetMethod("startHandling", &DesktopCapturer::StartHandling);
}
// static
mate::Handle<DesktopCapturer> DesktopCapturer::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new DesktopCapturer);
return mate::CreateHandle(isolate, new DesktopCapturer(isolate));
}
// static
void DesktopCapturer::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "DesktopCapturer"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("startHandling", &DesktopCapturer::StartHandling);
}
} // namespace api

View File

@@ -14,18 +14,21 @@ namespace atom {
namespace api {
class DesktopCapturer: public mate::EventEmitter,
class DesktopCapturer: public mate::EventEmitter<DesktopCapturer>,
public DesktopMediaListObserver {
public:
static mate::Handle<DesktopCapturer> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
void StartHandling(bool capture_window,
bool capture_screen,
const gfx::Size& thumbnail_size);
protected:
DesktopCapturer();
~DesktopCapturer();
explicit DesktopCapturer(v8::Isolate* isolate);
~DesktopCapturer() override;
// DesktopMediaListObserver overrides.
void OnSourceAdded(int index) override;
@@ -36,11 +39,7 @@ class DesktopCapturer: public mate::EventEmitter,
bool OnRefreshFinished() override;
private:
// mate::Wrappable:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
scoped_ptr<DesktopMediaList> media_list_;
std::unique_ptr<DesktopMediaList> media_list_;
DISALLOW_COPY_AND_ASSIGN(DesktopCapturer);
};

View File

@@ -67,6 +67,7 @@ void ShowMessageBox(int type,
}
void ShowOpenDialog(const std::string& title,
const std::string& button_label,
const base::FilePath& default_path,
const file_dialog::Filters& filters,
int properties,
@@ -77,17 +78,18 @@ void ShowOpenDialog(const std::string& title,
if (mate::Converter<file_dialog::OpenDialogCallback>::FromV8(args->isolate(),
peek,
&callback)) {
file_dialog::ShowOpenDialog(window, title, default_path, filters,
properties, callback);
file_dialog::ShowOpenDialog(window, title, button_label, default_path,
filters, properties, callback);
} else {
std::vector<base::FilePath> paths;
if (file_dialog::ShowOpenDialog(window, title, default_path, filters,
properties, &paths))
if (file_dialog::ShowOpenDialog(window, title, button_label, default_path,
filters, properties, &paths))
args->Return(paths);
}
}
void ShowSaveDialog(const std::string& title,
const std::string& button_label,
const base::FilePath& default_path,
const file_dialog::Filters& filters,
atom::NativeWindow* window,
@@ -97,11 +99,12 @@ void ShowSaveDialog(const std::string& title,
if (mate::Converter<file_dialog::SaveDialogCallback>::FromV8(args->isolate(),
peek,
&callback)) {
file_dialog::ShowSaveDialog(window, title, default_path, filters, callback);
file_dialog::ShowSaveDialog(window, title, button_label, default_path,
filters, callback);
} else {
base::FilePath path;
if (file_dialog::ShowSaveDialog(window, title, default_path, filters,
&path))
if (file_dialog::ShowSaveDialog(window, title, button_label, default_path,
filters, &path))
args->Return(path);
}
}

View File

@@ -10,13 +10,13 @@
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/node_includes.h"
#include "base/memory/linked_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "native_mate/dictionary.h"
#include "net/base/filename_util.h"
#include "atom/common/node_includes.h"
namespace mate {
template<>
@@ -25,6 +25,9 @@ struct Converter<content::DownloadItem::DownloadState> {
content::DownloadItem::DownloadState state) {
std::string download_state;
switch (state) {
case content::DownloadItem::IN_PROGRESS:
download_state = "progressing";
break;
case content::DownloadItem::COMPLETE:
download_state = "completed";
break;
@@ -49,17 +52,15 @@ namespace api {
namespace {
// The wrapDownloadItem funtion which is implemented in JavaScript
using WrapDownloadItemCallback = base::Callback<void(v8::Local<v8::Value>)>;
WrapDownloadItemCallback g_wrap_download_item;
std::map<uint32_t, linked_ptr<v8::Global<v8::Value>>> g_download_item_objects;
std::map<uint32_t, v8::Global<v8::Object>> g_download_item_objects;
} // namespace
DownloadItem::DownloadItem(content::DownloadItem* download_item)
DownloadItem::DownloadItem(v8::Isolate* isolate,
content::DownloadItem* download_item)
: download_item_(download_item) {
download_item_->AddObserver(this);
Init(isolate);
AttachAsUserData(download_item);
}
@@ -71,9 +72,7 @@ DownloadItem::~DownloadItem() {
}
// Remove from the global map.
auto iter = g_download_item_objects.find(weak_map_id());
if (iter != g_download_item_objects.end())
g_download_item_objects.erase(iter);
g_download_item_objects.erase(weak_map_id());
}
void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
@@ -83,7 +82,7 @@ void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
// Destroy the item once item is downloaded.
base::MessageLoop::current()->PostTask(FROM_HERE, GetDestroyClosure());
} else {
Emit("updated");
Emit("updated", item->GetState());
}
}
@@ -97,10 +96,18 @@ void DownloadItem::Pause() {
download_item_->Pause();
}
bool DownloadItem::IsPaused() const {
return download_item_->IsPaused();
}
void DownloadItem::Resume() {
download_item_->Resume();
}
bool DownloadItem::CanResume() const {
return download_item_->CanResume();
}
void DownloadItem::Cancel() {
download_item_->Cancel(true);
download_item_->Remove();
@@ -128,7 +135,7 @@ std::string DownloadItem::GetFilename() const {
std::string(),
download_item_->GetSuggestedFilename(),
GetMimeType(),
std::string()).LossyDisplayName());
"download").LossyDisplayName());
}
std::string DownloadItem::GetContentDisposition() const {
@@ -139,6 +146,14 @@ const GURL& DownloadItem::GetURL() const {
return download_item_->GetURL();
}
content::DownloadItem::DownloadState DownloadItem::GetState() const {
return download_item_->GetState();
}
bool DownloadItem::IsDone() const {
return download_item_->IsDone();
}
void DownloadItem::SetSavePath(const base::FilePath& path) {
save_path_ = path;
}
@@ -149,11 +164,14 @@ base::FilePath DownloadItem::GetSavePath() const {
// static
void DownloadItem::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "DownloadItem"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("pause", &DownloadItem::Pause)
.SetMethod("isPaused", &DownloadItem::IsPaused)
.SetMethod("resume", &DownloadItem::Resume)
.SetMethod("canResume", &DownloadItem::CanResume)
.SetMethod("cancel", &DownloadItem::Cancel)
.SetMethod("getReceivedBytes", &DownloadItem::GetReceivedBytes)
.SetMethod("getTotalBytes", &DownloadItem::GetTotalBytes)
@@ -162,6 +180,8 @@ void DownloadItem::BuildPrototype(v8::Isolate* isolate,
.SetMethod("getFilename", &DownloadItem::GetFilename)
.SetMethod("getContentDisposition", &DownloadItem::GetContentDisposition)
.SetMethod("getURL", &DownloadItem::GetURL)
.SetMethod("getState", &DownloadItem::GetState)
.SetMethod("isDone", &DownloadItem::IsDone)
.SetMethod("setSavePath", &DownloadItem::SetSavePath)
.SetMethod("getSavePath", &DownloadItem::GetSavePath);
}
@@ -173,27 +193,14 @@ mate::Handle<DownloadItem> DownloadItem::Create(
if (existing)
return mate::CreateHandle(isolate, static_cast<DownloadItem*>(existing));
auto handle = mate::CreateHandle(isolate, new DownloadItem(item));
g_wrap_download_item.Run(handle.ToV8());
auto handle = mate::CreateHandle(isolate, new DownloadItem(isolate, item));
// Reference this object in case it got garbage collected.
g_download_item_objects[handle->weak_map_id()] = make_linked_ptr(
new v8::Global<v8::Value>(isolate, handle.ToV8()));
g_download_item_objects[handle->weak_map_id()] =
v8::Global<v8::Object>(isolate, handle.ToV8());
return handle;
}
void ClearWrapDownloadItem() {
g_wrap_download_item.Reset();
}
void SetWrapDownloadItem(const WrapDownloadItemCallback& callback) {
g_wrap_download_item = callback;
// Cleanup the wrapper on exit.
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
base::Bind(ClearWrapDownloadItem));
}
} // namespace api
} // namespace atom
@@ -203,8 +210,9 @@ namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.SetMethod("_setWrapDownloadItem", &atom::api::SetWrapDownloadItem);
mate::Dictionary(isolate, exports)
.Set("DownloadItem",
atom::api::DownloadItem::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -23,12 +23,13 @@ class DownloadItem : public mate::TrackableObject<DownloadItem>,
static mate::Handle<DownloadItem> Create(v8::Isolate* isolate,
content::DownloadItem* item);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
void Pause();
bool IsPaused() const;
void Resume();
bool CanResume() const;
void Cancel();
int64_t GetReceivedBytes() const;
int64_t GetTotalBytes() const;
@@ -37,11 +38,13 @@ class DownloadItem : public mate::TrackableObject<DownloadItem>,
std::string GetFilename() const;
std::string GetContentDisposition() const;
const GURL& GetURL() const;
content::DownloadItem::DownloadState GetState() const;
bool IsDone() const;
void SetSavePath(const base::FilePath& path);
base::FilePath GetSavePath() const;
protected:
explicit DownloadItem(content::DownloadItem* download_item);
DownloadItem(v8::Isolate* isolate, content::DownloadItem* download_item);
~DownloadItem();
// Override content::DownloadItem::Observer methods

View File

@@ -19,7 +19,8 @@ namespace atom {
namespace api {
GlobalShortcut::GlobalShortcut() {
GlobalShortcut::GlobalShortcut(v8::Isolate* isolate) {
Init(isolate);
}
GlobalShortcut::~GlobalShortcut() {
@@ -66,20 +67,22 @@ void GlobalShortcut::UnregisterAll() {
GlobalShortcutListener::GetInstance()->UnregisterAccelerators(this);
}
mate::ObjectTemplateBuilder GlobalShortcut::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
// static
mate::Handle<GlobalShortcut> GlobalShortcut::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new GlobalShortcut(isolate));
}
// static
void GlobalShortcut::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "GlobalShortcut"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("register", &GlobalShortcut::Register)
.SetMethod("isRegistered", &GlobalShortcut::IsRegistered)
.SetMethod("unregister", &GlobalShortcut::Unregister)
.SetMethod("unregisterAll", &GlobalShortcut::UnregisterAll);
}
// static
mate::Handle<GlobalShortcut> GlobalShortcut::Create(v8::Isolate* isolate) {
return CreateHandle(isolate, new GlobalShortcut);
}
} // namespace api
} // namespace atom

View File

@@ -23,13 +23,12 @@ class GlobalShortcut : public extensions::GlobalShortcutListener::Observer,
public:
static mate::Handle<GlobalShortcut> Create(v8::Isolate* isolate);
protected:
GlobalShortcut();
~GlobalShortcut() override;
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// mate::Wrappable implementations:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
protected:
explicit GlobalShortcut(v8::Isolate* isolate);
~GlobalShortcut() override;
private:
typedef std::map<ui::Accelerator, base::Closure> AcceleratorCallbackMap;

View File

@@ -19,16 +19,17 @@ namespace atom {
namespace api {
Menu::Menu()
Menu::Menu(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: model_(new AtomMenuModel(this)),
parent_(NULL) {
parent_(nullptr) {
InitWith(isolate, wrapper);
}
Menu::~Menu() {
}
void Menu::AfterInit(v8::Isolate* isolate) {
mate::Dictionary wrappable(isolate, GetWrapper(isolate));
mate::Dictionary wrappable(isolate, GetWrapper());
mate::Dictionary delegate;
if (!wrappable.Get("delegate", &delegate))
return;
@@ -53,16 +54,21 @@ bool Menu::IsCommandIdVisible(int command_id) const {
return is_visible_.Run(command_id);
}
bool Menu::GetAcceleratorForCommandId(int command_id,
ui::Accelerator* accelerator) {
bool Menu::GetAcceleratorForCommandIdWithParams(
int command_id,
bool use_default_accelerator,
ui::Accelerator* accelerator) const {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Value> val = get_accelerator_.Run(command_id);
v8::Local<v8::Value> val = get_accelerator_.Run(
command_id, use_default_accelerator);
return mate::ConvertFromV8(isolate(), val, accelerator);
}
void Menu::ExecuteCommand(int command_id, int event_flags) {
execute_command_.Run(command_id);
void Menu::ExecuteCommand(int command_id, int flags) {
execute_command_.Run(
mate::internal::CreateEventFromFlags(isolate(), flags),
command_id);
}
void Menu::MenuWillShow(ui::SimpleMenuModel* source) {
@@ -149,8 +155,9 @@ bool Menu::IsVisibleAt(int index) const {
// static
void Menu::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Menu"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("insertItem", &Menu::InsertItemAt)
.SetMethod("insertCheckItem", &Menu::InsertCheckItemAt)
@@ -179,14 +186,15 @@ void Menu::BuildPrototype(v8::Isolate* isolate,
namespace {
using atom::api::Menu;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
using atom::api::Menu;
v8::Isolate* isolate = context->GetIsolate();
v8::Local<v8::Function> constructor = mate::CreateConstructor<Menu>(
isolate, "Menu", base::Bind(&Menu::Create));
Menu::SetConstructor(isolate, base::Bind(&Menu::New));
mate::Dictionary dict(isolate, exports);
dict.Set("Menu", static_cast<v8::Local<v8::Value>>(constructor));
dict.Set("Menu", Menu::GetConstructor(isolate)->GetFunction());
#if defined(OS_MACOSX)
dict.SetMethod("setApplicationMenu", &Menu::SetApplicationMenu);
dict.SetMethod("sendActionToFirstResponder",

View File

@@ -5,13 +5,13 @@
#ifndef ATOM_BROWSER_API_ATOM_API_MENU_H_
#define ATOM_BROWSER_API_ATOM_API_MENU_H_
#include <memory>
#include <string>
#include "atom/browser/api/atom_api_window.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/atom_menu_model.h"
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
namespace atom {
@@ -20,10 +20,10 @@ namespace api {
class Menu : public mate::TrackableObject<Menu>,
public AtomMenuModel::Delegate {
public:
static mate::Wrappable* Create();
static mate::WrappableBase* New(mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
#if defined(OS_MACOSX)
// Set the global menubar.
@@ -36,7 +36,7 @@ class Menu : public mate::TrackableObject<Menu>,
AtomMenuModel* model() const { return model_.get(); }
protected:
Menu();
Menu(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
~Menu() override;
// mate::Wrappable:
@@ -46,8 +46,10 @@ class Menu : public mate::TrackableObject<Menu>,
bool IsCommandIdChecked(int command_id) const override;
bool IsCommandIdEnabled(int command_id) const override;
bool IsCommandIdVisible(int command_id) const override;
bool GetAcceleratorForCommandId(int command_id,
ui::Accelerator* accelerator) override;
bool GetAcceleratorForCommandIdWithParams(
int command_id,
bool use_default_accelerator,
ui::Accelerator* accelerator) const override;
void ExecuteCommand(int command_id, int event_flags) override;
void MenuWillShow(ui::SimpleMenuModel* source) override;
@@ -55,7 +57,7 @@ class Menu : public mate::TrackableObject<Menu>,
int x = -1, int y = -1,
int positioning_item = 0) = 0;
scoped_ptr<AtomMenuModel> model_;
std::unique_ptr<AtomMenuModel> model_;
Menu* parent_;
private:
@@ -89,8 +91,8 @@ class Menu : public mate::TrackableObject<Menu>,
base::Callback<bool(int)> is_checked_;
base::Callback<bool(int)> is_enabled_;
base::Callback<bool(int)> is_visible_;
base::Callback<v8::Local<v8::Value>(int)> get_accelerator_;
base::Callback<void(int)> execute_command_;
base::Callback<v8::Local<v8::Value>(int, bool)> get_accelerator_;
base::Callback<void(v8::Local<v8::Value>, int)> execute_command_;
base::Callback<void()> menu_will_show_;
DISALLOW_COPY_AND_ASSIGN(Menu);

View File

@@ -17,9 +17,9 @@ namespace api {
class MenuMac : public Menu {
protected:
MenuMac();
MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
void PopupAt(Window* window, int x, int y, int positioning_item = 0) override;
void PopupAt(Window* window, int x, int y, int positioning_item) override;
base::scoped_nsobject<AtomMenuController> menu_controller_;

View File

@@ -5,8 +5,11 @@
#import "atom/browser/api/atom_api_menu_mac.h"
#include "atom/browser/native_window.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "content/public/browser/web_contents.h"
#include "atom/common/node_includes.h"
@@ -15,21 +18,24 @@ namespace atom {
namespace api {
MenuMac::MenuMac() {
MenuMac::MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper) {
}
void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item) {
NativeWindow* native_window = window->window();
if (!native_window)
return;
content::WebContents* web_contents = native_window->web_contents();
brightray::InspectableWebContents* web_contents =
native_window->inspectable_web_contents();
if (!web_contents)
return;
base::scoped_nsobject<AtomMenuController> menu_controller(
[[AtomMenuController alloc] initWithModel:model_.get()]);
[[AtomMenuController alloc] initWithModel:model_.get()
useDefaultAccelerator:NO]);
NSMenu* menu = [menu_controller menu];
NSView* view = web_contents->GetContentNativeView();
NSView* view = web_contents->GetView()->GetNativeView();
// Which menu item to show.
NSMenuItem* item = nil;
@@ -46,6 +52,26 @@ void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item) {
position = NSMakePoint(x, [view frame].size.height - y);
}
// If no preferred item is specified, try to show all of the menu items.
if (!positioning_item) {
CGFloat windowBottom = CGRectGetMinY([view window].frame);
CGFloat lowestMenuPoint = windowBottom + position.y - [menu size].height;
CGFloat screenBottom = CGRectGetMinY([view window].screen.frame);
CGFloat distanceFromBottom = lowestMenuPoint - screenBottom;
if (distanceFromBottom < 0)
position.y = position.y - distanceFromBottom + 4;
}
// Place the menu left of cursor if it is overflowing off right of screen.
CGFloat windowLeft = CGRectGetMinX([view window].frame);
CGFloat rightmostMenuPoint = windowLeft + position.x + [menu size].width;
CGFloat screenRight = CGRectGetMaxX([view window].screen.frame);
if (rightmostMenuPoint > screenRight)
position.x = position.x - [menu size].width;
// Don't emit unresponsive event when showing menu.
atom::UnresponsiveSuppressor suppressor;
// Show the menu.
[menu popUpMenuPositioningItem:item atLocation:position inView:view];
}
@@ -54,7 +80,8 @@ void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item) {
void Menu::SetApplicationMenu(Menu* base_menu) {
MenuMac* menu = static_cast<MenuMac*>(base_menu);
base::scoped_nsobject<AtomMenuController> menu_controller(
[[AtomMenuController alloc] initWithModel:menu->model_.get()]);
[[AtomMenuController alloc] initWithModel:menu->model_.get()
useDefaultAccelerator:YES]);
[NSApp setMainMenu:[menu_controller menu]];
// Ensure the menu_controller_ is destroyed after main menu is set.
@@ -68,8 +95,8 @@ void Menu::SendActionToFirstResponder(const std::string& action) {
}
// static
mate::Wrappable* Menu::Create() {
return new MenuMac();
mate::WrappableBase* Menu::New(mate::Arguments* args) {
return new MenuMac(args->isolate(), args->GetThis());
}
} // namespace api

View File

@@ -5,15 +5,17 @@
#include "atom/browser/api/atom_api_menu_views.h"
#include "atom/browser/native_window_views.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "content/public/browser/render_widget_host_view.h"
#include "ui/gfx/screen.h"
#include "ui/display/screen.h"
#include "ui/views/controls/menu/menu_runner.h"
namespace atom {
namespace api {
MenuViews::MenuViews() {
MenuViews::MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper) {
}
void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
@@ -30,12 +32,15 @@ void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
// (-1, -1) means showing on mouse location.
gfx::Point location;
if (x == -1 || y == -1) {
location = gfx::Screen::GetNativeScreen()->GetCursorScreenPoint();
location = display::Screen::GetScreen()->GetCursorScreenPoint();
} else {
gfx::Point origin = view->GetViewBounds().origin();
location = gfx::Point(origin.x() + x, origin.y() + y);
}
// Don't emit unresponsive event when showing menu.
atom::UnresponsiveSuppressor suppressor;
// Show the menu.
views::MenuRunner menu_runner(
model(),
@@ -49,8 +54,8 @@ void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
}
// static
mate::Wrappable* Menu::Create() {
return new MenuViews();
mate::WrappableBase* Menu::New(mate::Arguments* args) {
return new MenuViews(args->isolate(), args->GetThis());
}
} // namespace api

View File

@@ -6,7 +6,7 @@
#define ATOM_BROWSER_API_ATOM_API_MENU_VIEWS_H_
#include "atom/browser/api/atom_api_menu.h"
#include "ui/gfx/screen.h"
#include "ui/display/screen.h"
namespace atom {
@@ -14,10 +14,10 @@ namespace api {
class MenuViews : public Menu {
public:
MenuViews();
MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
protected:
void PopupAt(Window* window, int x, int y, int positioning_item = 0) override;
void PopupAt(Window* window, int x, int y, int positioning_item) override;
private:
DISALLOW_COPY_AND_ASSIGN(MenuViews);

View File

@@ -5,17 +5,19 @@
#include "atom/browser/api/atom_api_power_monitor.h"
#include "atom/browser/browser.h"
#include "atom/common/node_includes.h"
#include "base/power_monitor/power_monitor.h"
#include "base/power_monitor/power_monitor_device_source.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
PowerMonitor::PowerMonitor() {
PowerMonitor::PowerMonitor(v8::Isolate* isolate) {
base::PowerMonitor::Get()->AddObserver(this);
Init(isolate);
}
PowerMonitor::~PowerMonitor() {
@@ -42,11 +44,17 @@ v8::Local<v8::Value> PowerMonitor::Create(v8::Isolate* isolate) {
if (!Browser::Get()->is_ready()) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate,
"Cannot initialize \"power-monitor\" module before app is ready")));
"Cannot require \"powerMonitor\" module before app is ready")));
return v8::Null(isolate);
}
return CreateHandle(isolate, new PowerMonitor).ToV8();
return mate::CreateHandle(isolate, new PowerMonitor(isolate)).ToV8();
}
// static
void PowerMonitor::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "PowerMonitor"));
}
} // namespace api
@@ -56,16 +64,19 @@ v8::Local<v8::Value> PowerMonitor::Create(v8::Isolate* isolate) {
namespace {
using atom::api::PowerMonitor;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
#if defined(OS_MACOSX)
base::PowerMonitorDeviceSource::AllocateSystemIOPorts();
#endif
using atom::api::PowerMonitor;
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("powerMonitor", PowerMonitor::Create(isolate));
dict.Set("PowerMonitor",
PowerMonitor::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -19,8 +19,11 @@ class PowerMonitor : public mate::TrackableObject<PowerMonitor>,
public:
static v8::Local<v8::Value> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
PowerMonitor();
explicit PowerMonitor(v8::Isolate* isolate);
~PowerMonitor() override;
// base::PowerObserver implementations:

View File

@@ -6,18 +6,19 @@
#include <string>
#include "atom/common/node_includes.h"
#include "content/public/browser/power_save_blocker.h"
#include "content/public/browser/browser_thread.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
namespace mate {
template<>
struct Converter<content::PowerSaveBlocker::PowerSaveBlockerType> {
struct Converter<device::PowerSaveBlocker::PowerSaveBlockerType> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
content::PowerSaveBlocker::PowerSaveBlockerType* out) {
using content::PowerSaveBlocker;
device::PowerSaveBlocker::PowerSaveBlockerType* out) {
using device::PowerSaveBlocker;
std::string type;
if (!ConvertFromV8(isolate, val, &type))
return false;
@@ -37,9 +38,10 @@ namespace atom {
namespace api {
PowerSaveBlocker::PowerSaveBlocker()
PowerSaveBlocker::PowerSaveBlocker(v8::Isolate* isolate)
: current_blocker_type_(
content::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension) {
device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension) {
Init(isolate);
}
PowerSaveBlocker::~PowerSaveBlocker() {
@@ -57,30 +59,34 @@ void PowerSaveBlocker::UpdatePowerSaveBlocker() {
// higher precedence level than |kPowerSaveBlockPreventAppSuspension|.
//
// Only the highest-precedence blocker type takes effect.
content::PowerSaveBlocker::PowerSaveBlockerType new_blocker_type =
content::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension;
device::PowerSaveBlocker::PowerSaveBlockerType new_blocker_type =
device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension;
for (const auto& element : power_save_blocker_types_) {
if (element.second ==
content::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep) {
device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep) {
new_blocker_type =
content::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep;
device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep;
break;
}
}
if (!power_save_blocker_ || new_blocker_type != current_blocker_type_) {
scoped_ptr<content::PowerSaveBlocker> new_blocker =
content::PowerSaveBlocker::Create(
std::unique_ptr<device::PowerSaveBlocker> new_blocker(
new device::PowerSaveBlocker(
new_blocker_type,
content::PowerSaveBlocker::kReasonOther,
ATOM_PRODUCT_NAME);
device::PowerSaveBlocker::kReasonOther,
ATOM_PRODUCT_NAME,
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI),
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::FILE)));
power_save_blocker_.swap(new_blocker);
current_blocker_type_ = new_blocker_type;
}
}
int PowerSaveBlocker::Start(
content::PowerSaveBlocker::PowerSaveBlockerType type) {
device::PowerSaveBlocker::PowerSaveBlockerType type) {
static int count = 0;
power_save_blocker_types_[count] = type;
UpdatePowerSaveBlocker();
@@ -97,17 +103,19 @@ bool PowerSaveBlocker::IsStarted(int id) {
return power_save_blocker_types_.find(id) != power_save_blocker_types_.end();
}
mate::ObjectTemplateBuilder PowerSaveBlocker::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
.SetMethod("start", &PowerSaveBlocker::Start)
.SetMethod("stop", &PowerSaveBlocker::Stop)
.SetMethod("isStarted", &PowerSaveBlocker::IsStarted);
// static
mate::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new PowerSaveBlocker(isolate));
}
// static
mate::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(v8::Isolate* isolate) {
return CreateHandle(isolate, new PowerSaveBlocker);
void PowerSaveBlocker::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "PowerSaveBlocker"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("start", &PowerSaveBlocker::Start)
.SetMethod("stop", &PowerSaveBlocker::Stop)
.SetMethod("isStarted", &PowerSaveBlocker::IsStarted);
}
} // namespace api

View File

@@ -6,10 +6,10 @@
#define ATOM_BROWSER_API_ATOM_API_POWER_SAVE_BLOCKER_H_
#include <map>
#include <memory>
#include "atom/browser/api/trackable_object.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/browser/power_save_blocker.h"
#include "device/power_save_blocker/power_save_blocker.h"
#include "native_mate/handle.h"
namespace mate {
@@ -24,28 +24,27 @@ class PowerSaveBlocker : public mate::TrackableObject<PowerSaveBlocker> {
public:
static mate::Handle<PowerSaveBlocker> Create(v8::Isolate* isolate);
protected:
PowerSaveBlocker();
~PowerSaveBlocker() override;
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// mate::Wrappable implementations:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
protected:
explicit PowerSaveBlocker(v8::Isolate* isolate);
~PowerSaveBlocker() override;
private:
void UpdatePowerSaveBlocker();
int Start(content::PowerSaveBlocker::PowerSaveBlockerType type);
int Start(device::PowerSaveBlocker::PowerSaveBlockerType type);
bool Stop(int id);
bool IsStarted(int id);
scoped_ptr<content::PowerSaveBlocker> power_save_blocker_;
std::unique_ptr<device::PowerSaveBlocker> power_save_blocker_;
// Currnet blocker type used by |power_save_blocker_|
content::PowerSaveBlocker::PowerSaveBlockerType current_blocker_type_;
device::PowerSaveBlocker::PowerSaveBlockerType current_blocker_type_;
// Map from id to the corresponding blocker type for each request.
using PowerSaveBlockerTypeMap =
std::map<int, content::PowerSaveBlocker::PowerSaveBlockerType>;
std::map<int, device::PowerSaveBlocker::PowerSaveBlockerType>;
PowerSaveBlockerTypeMap power_save_blocker_types_;
DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);

View File

@@ -5,16 +5,21 @@
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/browser.h"
#include "atom/browser/net/url_request_async_asar_job.h"
#include "atom/browser/net/url_request_buffer_job.h"
#include "atom/browser/net/url_request_fetch_job.h"
#include "atom/browser/net/url_request_string_job.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/strings/string_util.h"
#include "content/public/browser/child_process_security_policy.h"
#include "native_mate/dictionary.h"
#include "url/url_util.h"
using content::BrowserThread;
@@ -22,16 +27,162 @@ namespace atom {
namespace api {
Protocol::Protocol(AtomBrowserContext* browser_context)
: request_context_getter_(browser_context->GetRequestContext()),
job_factory_(browser_context->job_factory()) {
CHECK(job_factory_);
namespace {
// List of registered custom standard schemes.
std::vector<std::string> g_standard_schemes;
// Clear protocol handlers in IO thread.
void ClearJobFactoryInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
job_factory->Clear();
}
mate::ObjectTemplateBuilder Protocol::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
.SetMethod("registerStandardSchemes", &Protocol::RegisterStandardSchemes)
} // namespace
std::vector<std::string> GetStandardSchemes() {
return g_standard_schemes;
}
void RegisterStandardSchemes(const std::vector<std::string>& schemes) {
g_standard_schemes = schemes;
auto* policy = content::ChildProcessSecurityPolicy::GetInstance();
for (const std::string& scheme : schemes) {
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
policy->RegisterWebSafeScheme(scheme);
}
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kStandardSchemes, base::JoinString(schemes, ","));
}
Protocol::Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: request_context_getter_(browser_context->GetRequestContext()),
weak_factory_(this) {
Init(isolate);
}
Protocol::~Protocol() {
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::Bind(ClearJobFactoryInIO, request_context_getter_));
}
void Protocol::RegisterServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
atom::AtomBrowserClient::SetCustomServiceWorkerSchemes(schemes);
}
void Protocol::UnregisterProtocol(
const std::string& scheme, mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::UnregisterProtocolInIO,
request_context_getter_, scheme),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UnregisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
if (!job_factory->HasProtocolHandler(scheme))
return PROTOCOL_NOT_REGISTERED;
job_factory->SetProtocolHandler(scheme, nullptr);
return PROTOCOL_OK;
}
void Protocol::IsProtocolHandled(const std::string& scheme,
const BooleanCallback& callback) {
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::IsProtocolHandledInIO,
request_context_getter_, scheme),
callback);
}
// static
bool Protocol::IsProtocolHandledInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
return request_context_getter->job_factory()->IsHandledProtocol(scheme);
}
void Protocol::UninterceptProtocol(
const std::string& scheme, mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::UninterceptProtocolInIO,
request_context_getter_, scheme),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UninterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
return static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory())->UninterceptProtocol(scheme) ?
PROTOCOL_OK : PROTOCOL_NOT_INTERCEPTED;
}
void Protocol::OnIOCompleted(
const CompletionCallback& callback, ProtocolError error) {
// The completion callback is optional.
if (callback.is_null())
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
if (error == PROTOCOL_OK) {
callback.Run(v8::Null(isolate()));
} else {
std::string str = ErrorCodeToString(error);
callback.Run(v8::Exception::Error(mate::StringToV8(isolate(), str)));
}
}
std::string Protocol::ErrorCodeToString(ProtocolError error) {
switch (error) {
case PROTOCOL_FAIL: return "Failed to manipulate protocol factory";
case PROTOCOL_REGISTERED: return "The scheme has been registered";
case PROTOCOL_NOT_REGISTERED: return "The scheme has not been registered";
case PROTOCOL_INTERCEPTED: return "The scheme has been intercepted";
case PROTOCOL_NOT_INTERCEPTED: return "The scheme has not been intercepted";
default: return "Unexpected error";
}
}
AtomURLRequestJobFactory* Protocol::GetJobFactoryInIO() const {
request_context_getter_->GetURLRequestContext(); // Force init.
return static_cast<AtomURLRequestJobFactory*>(
static_cast<brightray::URLRequestContextGetter*>(
request_context_getter_.get())->job_factory());
}
// static
mate::Handle<Protocol> Protocol::Create(
v8::Isolate* isolate, AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Protocol(isolate, browser_context));
}
// static
void Protocol::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Protocol"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("registerServiceWorkerSchemes",
&Protocol::RegisterServiceWorkerSchemes)
.SetMethod("registerStringProtocol",
@@ -55,117 +206,29 @@ mate::ObjectTemplateBuilder Protocol::GetObjectTemplateBuilder(
.SetMethod("uninterceptProtocol", &Protocol::UninterceptProtocol);
}
void Protocol::RegisterStandardSchemes(
const std::vector<std::string>& schemes) {
atom::AtomBrowserClient::SetCustomSchemes(schemes);
}
void Protocol::RegisterServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
atom::AtomBrowserClient::SetCustomServiceWorkerSchemes(schemes);
}
void Protocol::UnregisterProtocol(
const std::string& scheme, mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::UnregisterProtocolInIO,
base::Unretained(this), scheme),
base::Bind(&Protocol::OnIOCompleted,
base::Unretained(this), callback));
}
Protocol::ProtocolError Protocol::UnregisterProtocolInIO(
const std::string& scheme) {
if (!job_factory_->HasProtocolHandler(scheme))
return PROTOCOL_NOT_REGISTERED;
job_factory_->SetProtocolHandler(scheme, nullptr);
return PROTOCOL_OK;
}
void Protocol::IsProtocolHandled(const std::string& scheme,
const BooleanCallback& callback) {
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::IsProtocolHandledInIO,
base::Unretained(this), scheme),
callback);
}
bool Protocol::IsProtocolHandledInIO(const std::string& scheme) {
return job_factory_->IsHandledProtocol(scheme);
}
void Protocol::UninterceptProtocol(
const std::string& scheme, mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::UninterceptProtocolInIO,
base::Unretained(this), scheme),
base::Bind(&Protocol::OnIOCompleted,
base::Unretained(this), callback));
}
Protocol::ProtocolError Protocol::UninterceptProtocolInIO(
const std::string& scheme) {
if (!original_protocols_.contains(scheme))
return PROTOCOL_NOT_INTERCEPTED;
job_factory_->ReplaceProtocol(scheme,
original_protocols_.take_and_erase(scheme));
return PROTOCOL_OK;
}
void Protocol::OnIOCompleted(
const CompletionCallback& callback, ProtocolError error) {
// The completion callback is optional.
if (callback.is_null())
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
if (error == PROTOCOL_OK) {
callback.Run(v8::Null(isolate()));
} else {
std::string str = ErrorCodeToString(error);
callback.Run(v8::Exception::Error(mate::StringToV8(isolate(), str)));
}
}
std::string Protocol::ErrorCodeToString(ProtocolError error) {
switch (error) {
case PROTOCOL_FAIL: return "Failed to manipulate protocol factory";
case PROTOCOL_REGISTERED: return "The scheme has been registred";
case PROTOCOL_NOT_REGISTERED: return "The scheme has not been registred";
case PROTOCOL_INTERCEPTED: return "The scheme has been intercepted";
case PROTOCOL_NOT_INTERCEPTED: return "The scheme has not been intercepted";
default: return "Unexpected error";
}
}
// static
mate::Handle<Protocol> Protocol::Create(
v8::Isolate* isolate, AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Protocol(browser_context));
}
} // namespace api
} // namespace atom
namespace {
void RegisterStandardSchemes(
const std::vector<std::string>& schemes, mate::Arguments* args) {
if (atom::Browser::Get()->is_ready()) {
args->ThrowError("protocol.registerStandardSchemes should be called before "
"app is ready");
return;
}
atom::api::RegisterStandardSchemes(schemes);
}
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
auto browser_context = static_cast<atom::AtomBrowserContext*>(
atom::AtomBrowserMainParts::Get()->browser_context());
dict.Set("protocol", atom::api::Protocol::Create(isolate, browser_context));
dict.SetMethod("registerStandardSchemes", &RegisterStandardSchemes);
dict.SetMethod("getStandardSchemes", &atom::api::GetStandardSchemes);
}
} // namespace

View File

@@ -5,47 +5,48 @@
#ifndef ATOM_BROWSER_API_ATOM_API_PROTOCOL_H_
#define ATOM_BROWSER_API_ATOM_API_PROTOCOL_H_
#include <string>
#include <map>
#include <string>
#include <vector>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/net/atom_url_request_job_factory.h"
#include "base/callback.h"
#include "base/containers/scoped_ptr_hash_map.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/browser_thread.h"
#include "native_mate/arguments.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable.h"
#include "net/url_request/url_request_context.h"
namespace net {
class URLRequest;
class URLRequestContextGetter;
namespace base {
class DictionaryValue;
}
namespace atom {
class AtomBrowserContext;
class AtomURLRequestJobFactory;
namespace api {
class Protocol : public mate::Wrappable {
std::vector<std::string> GetStandardSchemes();
void RegisterStandardSchemes(const std::vector<std::string>& schemes);
class Protocol : public mate::TrackableObject<Protocol> {
public:
using Handler =
base::Callback<void(const net::URLRequest*, v8::Local<v8::Value>)>;
base::Callback<void(const base::DictionaryValue&, v8::Local<v8::Value>)>;
using CompletionCallback = base::Callback<void(v8::Local<v8::Value>)>;
using BooleanCallback = base::Callback<void(bool)>;
static mate::Handle<Protocol> Create(
v8::Isolate* isolate, AtomBrowserContext* browser_context);
protected:
explicit Protocol(AtomBrowserContext* browser_context);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// mate::Wrappable implementations:
virtual mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate);
protected:
Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Protocol();
private:
// Possible errors.
@@ -77,21 +78,18 @@ class Protocol : public mate::Wrappable {
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override {
RequestJob* request_job = new RequestJob(request, network_delegate);
request_job->SetHandlerInfo(isolate_, request_context_, handler_);
request_job->SetHandlerInfo(isolate_, request_context_.get(), handler_);
return request_job;
}
private:
v8::Isolate* isolate_;
net::URLRequestContextGetter* request_context_;
scoped_refptr<net::URLRequestContextGetter> request_context_;
Protocol::Handler handler_;
DISALLOW_COPY_AND_ASSIGN(CustomProtocolHandler);
};
// Register schemes to standard scheme list.
void RegisterStandardSchemes(const std::vector<std::string>& schemes);
// Register schemes that can handle service worker.
void RegisterServiceWorkerSchemes(const std::vector<std::string>& schemes);
@@ -105,19 +103,24 @@ class Protocol : public mate::Wrappable {
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::RegisterProtocolInIO<RequestJob>,
base::Unretained(this), scheme, handler),
request_context_getter_, isolate(), scheme, handler),
base::Bind(&Protocol::OnIOCompleted,
base::Unretained(this), callback));
GetWeakPtr(), callback));
}
template<typename RequestJob>
ProtocolError RegisterProtocolInIO(const std::string& scheme,
const Handler& handler) {
if (job_factory_->IsHandledProtocol(scheme))
static ProtocolError RegisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
if (job_factory->IsHandledProtocol(scheme))
return PROTOCOL_REGISTERED;
scoped_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
std::unique_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
new CustomProtocolHandler<RequestJob>(
isolate(), request_context_getter_, handler));
if (job_factory_->SetProtocolHandler(scheme, std::move(protocol_handler)))
isolate, request_context_getter.get(), handler));
if (job_factory->SetProtocolHandler(scheme, std::move(protocol_handler)))
return PROTOCOL_OK;
else
return PROTOCOL_FAIL;
@@ -125,12 +128,16 @@ class Protocol : public mate::Wrappable {
// Unregister the protocol handler that handles |scheme|.
void UnregisterProtocol(const std::string& scheme, mate::Arguments* args);
ProtocolError UnregisterProtocolInIO(const std::string& scheme);
static ProtocolError UnregisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Whether the protocol has handler registered.
void IsProtocolHandled(const std::string& scheme,
const BooleanCallback& callback);
bool IsProtocolHandledInIO(const std::string& scheme);
static bool IsProtocolHandledInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Replace the protocol handler with a new one.
template<typename RequestJob>
@@ -142,32 +149,36 @@ class Protocol : public mate::Wrappable {
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::InterceptProtocolInIO<RequestJob>,
base::Unretained(this), scheme, handler),
request_context_getter_, isolate(), scheme, handler),
base::Bind(&Protocol::OnIOCompleted,
base::Unretained(this), callback));
GetWeakPtr(), callback));
}
template<typename RequestJob>
ProtocolError InterceptProtocolInIO(const std::string& scheme,
const Handler& handler) {
if (!job_factory_->IsHandledProtocol(scheme))
static ProtocolError InterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
if (!job_factory->IsHandledProtocol(scheme))
return PROTOCOL_NOT_REGISTERED;
// It is possible a protocol is handled but can not be intercepted.
if (!job_factory_->HasProtocolHandler(scheme))
if (!job_factory->HasProtocolHandler(scheme))
return PROTOCOL_FAIL;
if (ContainsKey(original_protocols_, scheme))
return PROTOCOL_INTERCEPTED;
scoped_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
std::unique_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
new CustomProtocolHandler<RequestJob>(
isolate(), request_context_getter_, handler));
original_protocols_.set(
scheme,
job_factory_->ReplaceProtocol(scheme, std::move(protocol_handler)));
isolate, request_context_getter.get(), handler));
if (!job_factory->InterceptProtocol(scheme, std::move(protocol_handler)))
return PROTOCOL_INTERCEPTED;
return PROTOCOL_OK;
}
// Restore the |scheme| to its original protocol handler.
void UninterceptProtocol(const std::string& scheme, mate::Arguments* args);
ProtocolError UninterceptProtocolInIO(const std::string& scheme);
static ProtocolError UninterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Convert error code to JS exception and call the callback.
void OnIOCompleted(const CompletionCallback& callback, ProtocolError error);
@@ -175,15 +186,14 @@ class Protocol : public mate::Wrappable {
// Convert error code to string.
std::string ErrorCodeToString(ProtocolError error);
net::URLRequestContextGetter* request_context_getter_;
AtomURLRequestJobFactory* GetJobFactoryInIO() const;
// Map that stores the original protocols of schemes.
using OriginalProtocolsMap = base::ScopedPtrHashMap<
std::string,
scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>>;
OriginalProtocolsMap original_protocols_;
base::WeakPtr<Protocol> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
AtomURLRequestJobFactory* job_factory_; // weak ref
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter_;
base::WeakPtrFactory<Protocol> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(Protocol);
};

View File

@@ -0,0 +1,90 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_render_process_preferences.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "content/public/browser/render_process_host.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
namespace {
bool IsWebContents(v8::Isolate* isolate, content::RenderProcessHost* process) {
content::WebContents* web_contents =
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->
GetWebContentsFromProcessID(process->GetID());
if (!web_contents)
return false;
auto api_web_contents = WebContents::CreateFrom(isolate, web_contents);
auto type = api_web_contents->GetType();
return type == WebContents::Type::BROWSER_WINDOW ||
type == WebContents::Type::WEB_VIEW;
}
} // namespace
RenderProcessPreferences::RenderProcessPreferences(
v8::Isolate* isolate,
const atom::RenderProcessPreferences::Predicate& predicate)
: preferences_(predicate) {
Init(isolate);
}
RenderProcessPreferences::~RenderProcessPreferences() {
}
int RenderProcessPreferences::AddEntry(const base::DictionaryValue& entry) {
return preferences_.AddEntry(entry);
}
void RenderProcessPreferences::RemoveEntry(int id) {
preferences_.RemoveEntry(id);
}
// static
void RenderProcessPreferences::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(
mate::StringToV8(isolate, "RenderProcessPreferences"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("addEntry", &RenderProcessPreferences::AddEntry)
.SetMethod("removeEntry", &RenderProcessPreferences::RemoveEntry);
}
// static
mate::Handle<RenderProcessPreferences>
RenderProcessPreferences::ForAllWebContents(v8::Isolate* isolate) {
return mate::CreateHandle(
isolate,
new RenderProcessPreferences(isolate,
base::Bind(&IsWebContents, isolate)));
}
} // namespace api
} // namespace atom
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
mate::Dictionary dict(context->GetIsolate(), exports);
dict.SetMethod("forAllWebContents",
&atom::api::RenderProcessPreferences::ForAllWebContents);
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_render_process_preferences,
Initialize)

View File

@@ -0,0 +1,44 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_
#define ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_
#include "atom/browser/render_process_preferences.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable.h"
namespace atom {
namespace api {
class RenderProcessPreferences
: public mate::Wrappable<RenderProcessPreferences> {
public:
static mate::Handle<RenderProcessPreferences>
ForAllWebContents(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
int AddEntry(const base::DictionaryValue& entry);
void RemoveEntry(int id);
protected:
RenderProcessPreferences(
v8::Isolate* isolate,
const atom::RenderProcessPreferences::Predicate& predicate);
~RenderProcessPreferences() override;
private:
atom::RenderProcessPreferences preferences_;
DISALLOW_COPY_AND_ASSIGN(RenderProcessPreferences);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_

View File

@@ -12,7 +12,9 @@
#include "base/bind.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "ui/gfx/screen.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/gfx/geometry/point.h"
#include "atom/common/node_includes.h"
@@ -34,22 +36,23 @@ typename T::iterator FindById(T* container, int id) {
// Convert the changed_metrics bitmask to string array.
std::vector<std::string> MetricsToArray(uint32_t metrics) {
std::vector<std::string> array;
if (metrics & gfx::DisplayObserver::DISPLAY_METRIC_BOUNDS)
if (metrics & display::DisplayObserver::DISPLAY_METRIC_BOUNDS)
array.push_back("bounds");
if (metrics & gfx::DisplayObserver::DISPLAY_METRIC_WORK_AREA)
if (metrics & display::DisplayObserver::DISPLAY_METRIC_WORK_AREA)
array.push_back("workArea");
if (metrics & gfx::DisplayObserver::DISPLAY_METRIC_DEVICE_SCALE_FACTOR)
if (metrics & display::DisplayObserver::DISPLAY_METRIC_DEVICE_SCALE_FACTOR)
array.push_back("scaleFactor");
if (metrics & gfx::DisplayObserver::DISPLAY_METRIC_ROTATION)
if (metrics & display::DisplayObserver::DISPLAY_METRIC_ROTATION)
array.push_back("rotation");
return array;
}
} // namespace
Screen::Screen(gfx::Screen* screen) : screen_(screen) {
displays_ = screen_->GetAllDisplays();
Screen::Screen(v8::Isolate* isolate, display::Screen* screen)
: screen_(screen) {
screen_->AddObserver(this);
Init(isolate);
}
Screen::~Screen() {
@@ -60,73 +63,64 @@ gfx::Point Screen::GetCursorScreenPoint() {
return screen_->GetCursorScreenPoint();
}
gfx::Display Screen::GetPrimaryDisplay() {
display::Display Screen::GetPrimaryDisplay() {
return screen_->GetPrimaryDisplay();
}
std::vector<gfx::Display> Screen::GetAllDisplays() {
return displays_;
std::vector<display::Display> Screen::GetAllDisplays() {
return screen_->GetAllDisplays();
}
gfx::Display Screen::GetDisplayNearestPoint(const gfx::Point& point) {
display::Display Screen::GetDisplayNearestPoint(const gfx::Point& point) {
return screen_->GetDisplayNearestPoint(point);
}
gfx::Display Screen::GetDisplayMatching(const gfx::Rect& match_rect) {
display::Display Screen::GetDisplayMatching(const gfx::Rect& match_rect) {
return screen_->GetDisplayMatching(match_rect);
}
void Screen::OnDisplayAdded(const gfx::Display& new_display) {
displays_.push_back(new_display);
void Screen::OnDisplayAdded(const display::Display& new_display) {
Emit("display-added", new_display);
}
void Screen::OnDisplayRemoved(const gfx::Display& old_display) {
auto iter = FindById(&displays_, old_display.id());
if (iter == displays_.end())
return;
displays_.erase(iter);
void Screen::OnDisplayRemoved(const display::Display& old_display) {
Emit("display-removed", old_display);
}
void Screen::OnDisplayMetricsChanged(const gfx::Display& display,
void Screen::OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) {
auto iter = FindById(&displays_, display.id());
if (iter == displays_.end())
return;
*iter = display;
Emit("display-metrics-changed", display, MetricsToArray(changed_metrics));
}
mate::ObjectTemplateBuilder Screen::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return mate::ObjectTemplateBuilder(isolate)
.SetMethod("getCursorScreenPoint", &Screen::GetCursorScreenPoint)
.SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
.SetMethod("getAllDisplays", &Screen::GetAllDisplays)
.SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
.SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
}
// static
v8::Local<v8::Value> Screen::Create(v8::Isolate* isolate) {
if (!Browser::Get()->is_ready()) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate,
"Cannot initialize \"screen\" module before app is ready")));
"Cannot require \"screen\" module before app is ready")));
return v8::Null(isolate);
}
gfx::Screen* screen = gfx::Screen::GetNativeScreen();
display::Screen* screen = display::Screen::GetScreen();
if (!screen) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate, "Failed to get screen information")));
return v8::Null(isolate);
}
return mate::CreateHandle(isolate, new Screen(screen)).ToV8();
return mate::CreateHandle(isolate, new Screen(isolate, screen)).ToV8();
}
// static
void Screen::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Screen"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("getCursorScreenPoint", &Screen::GetCursorScreenPoint)
.SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
.SetMethod("getAllDisplays", &Screen::GetAllDisplays)
.SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
.SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
}
} // namespace api
@@ -135,10 +129,14 @@ v8::Local<v8::Value> Screen::Create(v8::Isolate* isolate) {
namespace {
using atom::api::Screen;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
mate::Dictionary dict(context->GetIsolate(), exports);
dict.Set("screen", atom::api::Screen::Create(context->GetIsolate()));
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("screen", Screen::Create(isolate));
dict.Set("Screen", Screen::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -9,7 +9,8 @@
#include "atom/browser/api/event_emitter.h"
#include "native_mate/handle.h"
#include "ui/gfx/display_observer.h"
#include "ui/display/display_observer.h"
#include "ui/display/screen.h"
namespace gfx {
class Point;
@@ -21,34 +22,32 @@ namespace atom {
namespace api {
class Screen : public mate::EventEmitter,
public gfx::DisplayObserver {
class Screen : public mate::EventEmitter<Screen>,
public display::DisplayObserver {
public:
static v8::Local<v8::Value> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit Screen(gfx::Screen* screen);
virtual ~Screen();
Screen(v8::Isolate* isolate, display::Screen* screen);
~Screen() override;
gfx::Point GetCursorScreenPoint();
gfx::Display GetPrimaryDisplay();
std::vector<gfx::Display> GetAllDisplays();
gfx::Display GetDisplayNearestPoint(const gfx::Point& point);
gfx::Display GetDisplayMatching(const gfx::Rect& match_rect);
display::Display GetPrimaryDisplay();
std::vector<display::Display> GetAllDisplays();
display::Display GetDisplayNearestPoint(const gfx::Point& point);
display::Display GetDisplayMatching(const gfx::Rect& match_rect);
// gfx::DisplayObserver:
void OnDisplayAdded(const gfx::Display& new_display) override;
void OnDisplayRemoved(const gfx::Display& old_display) override;
void OnDisplayMetricsChanged(const gfx::Display& display,
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;
// mate::Wrappable:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
private:
gfx::Screen* screen_;
std::vector<gfx::Display> displays_;
display::Screen* screen_;
DISALLOW_COPY_AND_ASSIGN(Screen);
};

View File

@@ -4,33 +4,35 @@
#include "atom/browser/api/atom_api_session.h"
#include <map>
#include <string>
#include <vector>
#include "atom/browser/api/atom_api_cookies.h"
#include "atom/browser/api/atom_api_download_item.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/api/atom_api_web_request.h"
#include "atom/browser/api/save_page_handler.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/browser.h"
#include "atom/browser/net/atom_cert_verifier.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/content_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "base/files/file_path.h"
#include "base/guid.h"
#include "base/prefs/pref_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/thread_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
#include "brightray/browser/net/devtools_network_conditions.h"
#include "brightray/browser/net/devtools_network_controller_handle.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "native_mate/dictionary.h"
@@ -38,10 +40,14 @@
#include "net/base/load_flags.h"
#include "net/disk_cache/disk_cache.h"
#include "net/dns/host_cache.h"
#include "net/proxy/proxy_service.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_auth_preferences.h"
#include "net/proxy/proxy_config_service_fixed.h"
#include "net/proxy/proxy_service.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
#include "ui/base/l10n/l10n_util.h"
using content::BrowserThread;
using content::StoragePartition;
@@ -92,6 +98,15 @@ uint32_t GetQuotaMask(const std::vector<std::string>& quota_types) {
return quota_mask;
}
void SetUserAgentInIO(scoped_refptr<net::URLRequestContextGetter> getter,
const std::string& accept_lang,
const std::string& user_agent) {
getter->GetURLRequestContext()->set_http_user_agent_settings(
new net::StaticHttpUserAgentSettings(
net::HttpUtil::GenerateAcceptLanguageHeader(accept_lang),
user_agent));
}
} // namespace
namespace mate {
@@ -119,7 +134,7 @@ struct Converter<net::ProxyConfig> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
net::ProxyConfig* out) {
std::string proxy_rules;
std::string proxy_rules, proxy_bypass_rules;
GURL pac_url;
mate::Dictionary options;
// Fallback to previous API when passed String.
@@ -129,6 +144,7 @@ struct Converter<net::ProxyConfig> {
} else if (ConvertFromV8(isolate, val, &options)) {
options.Get("pacScript", &pac_url);
options.Get("proxyRules", &proxy_rules);
options.Get("proxyBypassRules", &proxy_bypass_rules);
} else {
return false;
}
@@ -138,6 +154,7 @@ struct Converter<net::ProxyConfig> {
out->set_pac_url(pac_url);
} else {
out->proxy_rules().ParseFromString(proxy_rules);
out->proxy_rules().bypass_rules.ParseFromString(proxy_bypass_rules);
}
return true;
}
@@ -151,9 +168,10 @@ namespace api {
namespace {
// The wrapSession funtion which is implemented in JavaScript
using WrapSessionCallback = base::Callback<void(v8::Local<v8::Value>)>;
WrapSessionCallback g_wrap_session;
const char kPersistPrefix[] = "persist:";
// Referenced session objects.
std::map<uint32_t, v8::Global<v8::Object>> g_sessions;
class ResolveProxyHelper {
public:
@@ -163,7 +181,7 @@ class ResolveProxyHelper {
: callback_(callback),
original_thread_(base::ThreadTaskRunnerHandle::Get()) {
scoped_refptr<net::URLRequestContextGetter> context_getter =
browser_context->GetRequestContext();
browser_context->url_request_context_getter();
context_getter->GetNetworkTaskRunner()->PostTask(
FROM_HERE,
base::Bind(&ResolveProxyHelper::ResolveProxy,
@@ -192,7 +210,7 @@ class ResolveProxyHelper {
// Start the request.
int result = proxy_service->ResolveProxy(
url, net::LOAD_NORMAL, &proxy_info_, completion_callback,
url, "GET", net::LOAD_NORMAL, &proxy_info_, completion_callback,
&pac_req_, nullptr, net::BoundNetLog());
// Completed synchronously.
@@ -229,10 +247,10 @@ void OnGetBackend(disk_cache::Backend** backend_ptr,
} else if (action == Session::CacheAction::STATS) {
base::StringPairs stats;
(*backend_ptr)->GetStats(&stats);
for (size_t i = 0; i < stats.size(); ++i) {
if (stats[i].first == "Current size") {
for (const auto& stat : stats) {
if (stat.first == "Current size") {
int current_size;
base::StringToInt(stats[i].second, &current_size);
base::StringToInt(stat.second, &current_size);
RunCallbackInUI(callback, current_size);
break;
}
@@ -254,7 +272,7 @@ void DoCacheActionInIO(
// Call GetBackend and make the backend's ptr accessable in OnGetBackend.
using BackendPtr = disk_cache::Backend*;
BackendPtr* backend_ptr = new BackendPtr(nullptr);
auto* backend_ptr = new BackendPtr(nullptr);
net::CompletionCallback on_get_backend =
base::Bind(&OnGetBackend, base::Owned(backend_ptr), action, callback);
int rv = http_cache->GetBackend(backend_ptr, on_get_backend);
@@ -266,13 +284,21 @@ void SetProxyInIO(net::URLRequestContextGetter* getter,
const net::ProxyConfig& config,
const base::Closure& callback) {
auto proxy_service = getter->GetURLRequestContext()->proxy_service();
proxy_service->ResetConfigService(make_scoped_ptr(
proxy_service->ResetConfigService(base::WrapUnique(
new net::ProxyConfigServiceFixed(config)));
// Refetches and applies the new pac script if provided.
proxy_service->ForceReloadProxyConfig();
RunCallbackInUI(callback);
}
void SetCertVerifyProcInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const AtomCertVerifier::VerifyProc& proc) {
auto request_context = context_getter->GetURLRequestContext();
static_cast<AtomCertVerifier*>(request_context->cert_verifier())->
SetVerifyProc(proc);
}
void ClearHostResolverCacheInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const base::Closure& callback) {
@@ -286,32 +312,54 @@ void ClearHostResolverCacheInIO(
}
}
void AllowNTLMCredentialsForDomainsInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const std::string& domains) {
auto request_context = context_getter->GetURLRequestContext();
auto auth_handler = request_context->http_auth_handler_factory();
if (auth_handler) {
auto auth_preferences = const_cast<net::HttpAuthPreferences*>(
auth_handler->http_auth_preferences());
if (auth_preferences)
auth_preferences->set_server_whitelist(domains);
}
}
void OnClearStorageDataDone(const base::Closure& callback) {
if (!callback.is_null())
callback.Run();
}
} // namespace
Session::Session(AtomBrowserContext* browser_context)
Session::Session(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: devtools_network_emulation_client_id_(base::GenerateGUID()),
browser_context_(browser_context) {
AttachAsUserData(browser_context);
// Observe DownloadManger to get download notifications.
content::BrowserContext::GetDownloadManager(browser_context)->
AddObserver(this);
Init(isolate);
AttachAsUserData(browser_context);
}
Session::~Session() {
content::BrowserContext::GetDownloadManager(browser_context())->
RemoveObserver(this);
g_sessions.erase(weak_map_id());
}
void Session::OnDownloadCreated(content::DownloadManager* manager,
content::DownloadItem* item) {
auto web_contents = item->GetWebContents();
if (SavePageHandler::IsSavePageTypes(item->GetMimeType()))
if (item->IsSavePackageDownload())
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = Emit(
"will-download",
DownloadItem::Create(isolate(), item),
api::WebContents::CreateFrom(isolate(), web_contents));
item->GetWebContents());
if (prevent_default) {
item->Cancel(true);
item->Remove();
@@ -332,21 +380,19 @@ void Session::DoCacheAction(const net::CompletionCallback& callback) {
}
void Session::ClearStorageData(mate::Arguments* args) {
// clearStorageData([options, ]callback)
// clearStorageData([options, callback])
ClearStorageDataOptions options;
args->GetNext(&options);
base::Closure callback;
if (!args->GetNext(&callback)) {
args->ThrowError();
return;
}
args->GetNext(&options);
args->GetNext(&callback);
auto storage_partition =
content::BrowserContext::GetStoragePartition(browser_context(), nullptr);
storage_partition->ClearData(
options.storage_types, options.quota_types, options.origin,
content::StoragePartition::OriginMatcherFunction(),
base::Time(), base::Time::Max(), callback);
base::Time(), base::Time::Max(),
base::Bind(&OnClearStorageDataDone, callback));
}
void Session::FlushStorageData() {
@@ -368,9 +414,9 @@ void Session::SetDownloadPath(const base::FilePath& path) {
}
void Session::EnableNetworkEmulation(const mate::Dictionary& options) {
scoped_ptr<brightray::DevToolsNetworkConditions> conditions;
std::unique_ptr<brightray::DevToolsNetworkConditions> conditions;
bool offline = false;
double latency, download_throughput, upload_throughput;
double latency = 0.0, download_throughput = 0.0, upload_throughput = 0.0;
if (options.Get("offline", &offline) && offline) {
conditions.reset(new brightray::DevToolsNetworkConditions(offline));
} else {
@@ -391,7 +437,7 @@ void Session::EnableNetworkEmulation(const mate::Dictionary& options) {
}
void Session::DisableNetworkEmulation() {
scoped_ptr<brightray::DevToolsNetworkConditions> conditions;
std::unique_ptr<brightray::DevToolsNetworkConditions> conditions;
browser_context_->network_controller_handle()->SetNetworkState(
devtools_network_emulation_client_id_, std::move(conditions));
browser_context_->network_delegate()->SetDevToolsNetworkEmulationClientId(
@@ -406,7 +452,10 @@ void Session::SetCertVerifyProc(v8::Local<v8::Value> val,
return;
}
browser_context_->cert_verifier()->SetVerifyProc(proc);
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&SetCertVerifyProcInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
proc));
}
void Session::SetPermissionRequestHandler(v8::Local<v8::Value> val,
@@ -431,6 +480,45 @@ void Session::ClearHostResolverCache(mate::Arguments* args) {
callback));
}
void Session::AllowNTLMCredentialsForDomains(const std::string& domains) {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&AllowNTLMCredentialsForDomainsInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
domains));
}
void Session::SetUserAgent(const std::string& user_agent,
mate::Arguments* args) {
browser_context_->SetUserAgent(user_agent);
std::string accept_lang = l10n_util::GetApplicationLocale("");
args->GetNext(&accept_lang);
auto getter = browser_context_->GetRequestContext();
getter->GetNetworkTaskRunner()->PostTask(
FROM_HERE,
base::Bind(&SetUserAgentInIO, getter, accept_lang, user_agent));
}
std::string Session::GetUserAgent() {
return browser_context_->GetUserAgent();
}
void Session::GetBlobData(
const std::string& uuid,
const AtomBlobReader::CompletionCallback& callback) {
if (callback.is_null())
return;
AtomBlobReader* blob_reader =
browser_context()->GetBlobReader();
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&AtomBlobReader::StartReading,
base::Unretained(blob_reader),
uuid,
callback));
}
v8::Local<v8::Value> Session::Cookies(v8::Isolate* isolate) {
if (cookies_.IsEmpty()) {
auto handle = atom::api::Cookies::Create(isolate, browser_context());
@@ -439,6 +527,14 @@ v8::Local<v8::Value> Session::Cookies(v8::Isolate* isolate) {
return v8::Local<v8::Value>::New(isolate, cookies_);
}
v8::Local<v8::Value> Session::Protocol(v8::Isolate* isolate) {
if (protocol_.IsEmpty()) {
auto handle = atom::api::Protocol::Create(isolate, browser_context());
protocol_.Reset(isolate, handle.ToV8());
}
return v8::Local<v8::Value>::New(isolate, protocol_);
}
v8::Local<v8::Value> Session::WebRequest(v8::Isolate* isolate) {
if (web_request_.IsEmpty()) {
auto handle = atom::api::WebRequest::Create(isolate, browser_context());
@@ -454,23 +550,39 @@ mate::Handle<Session> Session::CreateFrom(
if (existing)
return mate::CreateHandle(isolate, static_cast<Session*>(existing));
auto handle = mate::CreateHandle(isolate, new Session(browser_context));
g_wrap_session.Run(handle.ToV8());
auto handle = mate::CreateHandle(
isolate, new Session(isolate, browser_context));
// The Sessions should never be garbage collected, since the common pattern is
// to use partition strings, instead of using the Session object directly.
g_sessions[handle->weak_map_id()] =
v8::Global<v8::Object>(isolate, handle.ToV8());
return handle;
}
// static
mate::Handle<Session> Session::FromPartition(
v8::Isolate* isolate, const std::string& partition, bool in_memory) {
auto browser_context = brightray::BrowserContext::From(partition, in_memory);
return CreateFrom(isolate,
static_cast<AtomBrowserContext*>(browser_context.get()));
v8::Isolate* isolate, const std::string& partition,
const base::DictionaryValue& options) {
scoped_refptr<AtomBrowserContext> browser_context;
if (partition.empty()) {
browser_context = AtomBrowserContext::From("", false, options);
} else if (base::StartsWith(partition, kPersistPrefix,
base::CompareCase::SENSITIVE)) {
std::string name = partition.substr(8);
browser_context = AtomBrowserContext::From(name, false, options);
} else {
browser_context = AtomBrowserContext::From(partition, true, options);
}
return CreateFrom(isolate, browser_context.get());
}
// static
void Session::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Session"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("resolveProxy", &Session::ResolveProxy)
.SetMethod("getCacheSize", &Session::DoCacheAction<CacheAction::STATS>)
@@ -485,34 +597,41 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)
.SetMethod("allowNTLMCredentialsForDomains",
&Session::AllowNTLMCredentialsForDomains)
.SetMethod("setUserAgent", &Session::SetUserAgent)
.SetMethod("getUserAgent", &Session::GetUserAgent)
.SetMethod("getBlobData", &Session::GetBlobData)
.SetProperty("cookies", &Session::Cookies)
.SetProperty("protocol", &Session::Protocol)
.SetProperty("webRequest", &Session::WebRequest);
}
void ClearWrapSession() {
g_wrap_session.Reset();
}
void SetWrapSession(const WrapSessionCallback& callback) {
g_wrap_session = callback;
// Cleanup the wrapper on exit.
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
base::Bind(ClearWrapSession));
}
} // namespace api
} // namespace atom
namespace {
using atom::api::Session;
v8::Local<v8::Value> FromPartition(
const std::string& partition, mate::Arguments* args) {
if (!atom::Browser::Get()->is_ready()) {
args->ThrowError("Session can only be received when app is ready");
return v8::Null(args->isolate());
}
base::DictionaryValue options;
args->GetNext(&options);
return Session::FromPartition(args->isolate(), partition, options).ToV8();
}
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.SetMethod("fromPartition", &atom::api::Session::FromPartition);
dict.SetMethod("_setWrapSession", &atom::api::SetWrapSession);
dict.Set("Session", Session::GetConstructor(isolate)->GetFunction());
dict.SetMethod("fromPartition", &FromPartition);
}
} // namespace

View File

@@ -8,6 +8,8 @@
#include <string>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_blob_reader.h"
#include "base/values.h"
#include "content/public/browser/download_manager.h"
#include "native_mate/handle.h"
#include "net/base/completion_callback.h"
@@ -47,25 +49,18 @@ class Session: public mate::TrackableObject<Session>,
static mate::Handle<Session> CreateFrom(
v8::Isolate* isolate, AtomBrowserContext* browser_context);
// Gets the Session of |partition| and |in_memory|.
// Gets the Session of |partition|.
static mate::Handle<Session> FromPartition(
v8::Isolate* isolate, const std::string& partition, bool in_memory);
v8::Isolate* isolate, const std::string& partition,
const base::DictionaryValue& options = base::DictionaryValue());
AtomBrowserContext* browser_context() const { return browser_context_.get(); }
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit Session(AtomBrowserContext* browser_context);
~Session();
// content::DownloadManager::Observer:
void OnDownloadCreated(content::DownloadManager* manager,
content::DownloadItem* item) override;
private:
// Methods.
void ResolveProxy(const GURL& url, ResolveProxyCallback callback);
template<CacheAction action>
void DoCacheAction(const net::CompletionCallback& callback);
@@ -79,11 +74,27 @@ class Session: public mate::TrackableObject<Session>,
void SetPermissionRequestHandler(v8::Local<v8::Value> val,
mate::Arguments* args);
void ClearHostResolverCache(mate::Arguments* args);
void AllowNTLMCredentialsForDomains(const std::string& domains);
void SetUserAgent(const std::string& user_agent, mate::Arguments* args);
std::string GetUserAgent();
void GetBlobData(const std::string& uuid,
const AtomBlobReader::CompletionCallback& callback);
v8::Local<v8::Value> Cookies(v8::Isolate* isolate);
v8::Local<v8::Value> Protocol(v8::Isolate* isolate);
v8::Local<v8::Value> WebRequest(v8::Isolate* isolate);
protected:
Session(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Session();
// content::DownloadManager::Observer:
void OnDownloadCreated(content::DownloadManager* manager,
content::DownloadItem* item) override;
private:
// Cached object.
v8::Global<v8::Value> cookies_;
v8::Global<v8::Value> protocol_;
v8::Global<v8::Value> web_request_;
// The X-DevTools-Emulate-Network-Conditions-Client-Id.

View File

@@ -0,0 +1,85 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_system_preferences.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "native_mate/dictionary.h"
namespace atom {
namespace api {
SystemPreferences::SystemPreferences(v8::Isolate* isolate) {
Init(isolate);
#if defined(OS_WIN)
InitializeWindow();
#endif
}
SystemPreferences::~SystemPreferences() {
}
#if !defined(OS_MACOSX)
bool SystemPreferences::IsDarkMode() {
return false;
}
#endif
// static
mate::Handle<SystemPreferences> SystemPreferences::Create(
v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new SystemPreferences(isolate));
}
// static
void SystemPreferences::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "SystemPreferences"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
#if defined(OS_WIN)
.SetMethod("getAccentColor", &SystemPreferences::GetAccentColor)
.SetMethod("isAeroGlassEnabled", &SystemPreferences::IsAeroGlassEnabled)
#elif defined(OS_MACOSX)
.SetMethod("postNotification",
&SystemPreferences::PostNotification)
.SetMethod("postLocalNotification",
&SystemPreferences::PostLocalNotification)
.SetMethod("subscribeNotification",
&SystemPreferences::SubscribeNotification)
.SetMethod("unsubscribeNotification",
&SystemPreferences::UnsubscribeNotification)
.SetMethod("subscribeLocalNotification",
&SystemPreferences::SubscribeLocalNotification)
.SetMethod("unsubscribeLocalNotification",
&SystemPreferences::UnsubscribeLocalNotification)
.SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
.SetMethod("isSwipeTrackingFromScrollEventsEnabled",
&SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled)
#endif
.SetMethod("isDarkMode", &SystemPreferences::IsDarkMode);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::SystemPreferences;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("systemPreferences", SystemPreferences::Create(isolate));
dict.Set("SystemPreferences",
SystemPreferences::GetConstructor(isolate)->GetFunction());
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_system_preferences, Initialize);

View File

@@ -0,0 +1,104 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
#define ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
#include <string>
#include "atom/browser/api/event_emitter.h"
#include "base/callback.h"
#include "base/values.h"
#include "native_mate/handle.h"
namespace base {
class DictionaryValue;
}
namespace atom {
namespace api {
class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
public:
static mate::Handle<SystemPreferences> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
#if defined(OS_WIN)
bool IsAeroGlassEnabled();
typedef HRESULT (STDAPICALLTYPE *DwmGetColorizationColor)(DWORD *, BOOL *);
DwmGetColorizationColor dwmGetColorizationColor =
(DwmGetColorizationColor) GetProcAddress(LoadLibraryW(L"dwmapi.dll"),
"DwmGetColorizationColor");
std::string GetAccentColor();
void InitializeWindow();
#elif defined(OS_MACOSX)
using NotificationCallback = base::Callback<
void(const std::string&, const base::DictionaryValue&)>;
void PostNotification(const std::string& name,
const base::DictionaryValue& user_info);
void PostLocalNotification(const std::string& name,
const base::DictionaryValue& user_info);
int SubscribeNotification(const std::string& name,
const NotificationCallback& callback);
void UnsubscribeNotification(int id);
int SubscribeLocalNotification(const std::string& name,
const NotificationCallback& callback);
void UnsubscribeLocalNotification(int request_id);
v8::Local<v8::Value> GetUserDefault(const std::string& name,
const std::string& type);
bool IsSwipeTrackingFromScrollEventsEnabled();
#endif
bool IsDarkMode();
protected:
explicit SystemPreferences(v8::Isolate* isolate);
~SystemPreferences() override;
#if defined(OS_MACOSX)
void DoPostNotification(const std::string& name,
const base::DictionaryValue& user_info,
bool is_local);
int DoSubscribeNotification(const std::string& name,
const NotificationCallback& callback,
bool is_local);
void DoUnsubscribeNotification(int request_id, bool is_local);
#endif
private:
#if defined(OS_WIN)
// Static callback invoked when a message comes in to our messaging window.
static LRESULT CALLBACK
WndProcStatic(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
LRESULT CALLBACK
WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
// The window class of |window_|.
ATOM atom_;
// The handle of the module that contains the window procedure of |window_|.
HMODULE instance_;
// The window used for processing events.
HWND window_;
std::string current_color_;
#endif
DISALLOW_COPY_AND_ASSIGN(SystemPreferences);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_

View File

@@ -0,0 +1,153 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_system_preferences.h"
#include <map>
#import <Cocoa/Cocoa.h>
#include "atom/browser/mac/dict_util.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "base/strings/sys_string_conversions.h"
#include "base/values.h"
#include "net/base/mac/url_conversions.h"
namespace atom {
namespace api {
namespace {
int g_next_id = 0;
// The map to convert |id| to |int|.
std::map<int, id> g_id_map;
} // namespace
void SystemPreferences::PostNotification(const std::string& name,
const base::DictionaryValue& user_info) {
DoPostNotification(name, user_info, false);
}
void SystemPreferences::PostLocalNotification(const std::string& name,
const base::DictionaryValue& user_info) {
DoPostNotification(name, user_info, true);
}
void SystemPreferences::DoPostNotification(const std::string& name,
const base::DictionaryValue& user_info, bool is_local) {
NSNotificationCenter* center = is_local ?
[NSNotificationCenter defaultCenter] :
[NSDistributedNotificationCenter defaultCenter];
[center
postNotificationName:base::SysUTF8ToNSString(name)
object:nil
userInfo:DictionaryValueToNSDictionary(user_info)
];
}
int SystemPreferences::SubscribeNotification(
const std::string& name, const NotificationCallback& callback) {
return DoSubscribeNotification(name, callback, false);
}
void SystemPreferences::UnsubscribeNotification(int request_id) {
DoUnsubscribeNotification(request_id, false);
}
int SystemPreferences::SubscribeLocalNotification(
const std::string& name, const NotificationCallback& callback) {
return DoSubscribeNotification(name, callback, true);
}
void SystemPreferences::UnsubscribeLocalNotification(int request_id) {
DoUnsubscribeNotification(request_id, true);
}
int SystemPreferences::DoSubscribeNotification(const std::string& name,
const NotificationCallback& callback, bool is_local) {
int request_id = g_next_id++;
__block NotificationCallback copied_callback = callback;
NSNotificationCenter* center = is_local ?
[NSNotificationCenter defaultCenter] :
[NSDistributedNotificationCenter defaultCenter];
g_id_map[request_id] = [center
addObserverForName:base::SysUTF8ToNSString(name)
object:nil
queue:nil
usingBlock:^(NSNotification* notification) {
std::unique_ptr<base::DictionaryValue> user_info =
NSDictionaryToDictionaryValue(notification.userInfo);
if (user_info) {
copied_callback.Run(
base::SysNSStringToUTF8(notification.name),
*user_info);
} else {
copied_callback.Run(
base::SysNSStringToUTF8(notification.name),
base::DictionaryValue());
}
}
];
return request_id;
}
void SystemPreferences::DoUnsubscribeNotification(int request_id, bool is_local) {
auto iter = g_id_map.find(request_id);
if (iter != g_id_map.end()) {
id observer = iter->second;
NSNotificationCenter* center = is_local ?
[NSNotificationCenter defaultCenter] :
[NSDistributedNotificationCenter defaultCenter];
[center removeObserver:observer];
g_id_map.erase(iter);
}
}
v8::Local<v8::Value> SystemPreferences::GetUserDefault(
const std::string& name, const std::string& type) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* key = base::SysUTF8ToNSString(name);
if (type == "string") {
return mate::StringToV8(isolate(),
base::SysNSStringToUTF8([defaults stringForKey:key]));
} else if (type == "boolean") {
return v8::Boolean::New(isolate(), [defaults boolForKey:key]);
} else if (type == "float") {
return v8::Number::New(isolate(), [defaults floatForKey:key]);
} else if (type == "integer") {
return v8::Integer::New(isolate(), [defaults integerForKey:key]);
} else if (type == "double") {
return v8::Number::New(isolate(), [defaults doubleForKey:key]);
} else if (type == "url") {
return mate::ConvertToV8(isolate(),
net::GURLWithNSURL([defaults URLForKey:key]));
} else if (type == "array") {
return mate::ConvertToV8(isolate(),
*NSArrayToListValue([defaults arrayForKey:key]));
} else if (type == "dictionary") {
return mate::ConvertToV8(isolate(),
*NSDictionaryToDictionaryValue([defaults dictionaryForKey:key]));
} else {
return v8::Undefined(isolate());
}
}
bool SystemPreferences::IsDarkMode() {
NSString* mode = [[NSUserDefaults standardUserDefaults]
stringForKey:@"AppleInterfaceStyle"];
return [mode isEqualToString:@"Dark"];
}
bool SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled() {
return [NSEvent isSwipeTrackingFromScrollEventsEnabled];
}
} // namespace api
} // namespace atom

View File

@@ -0,0 +1,93 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_system_preferences.h"
#include "base/win/wrapped_window_proc.h"
#include "ui/base/win/shell.h"
#include "ui/gfx/win/hwnd_util.h"
namespace atom {
namespace {
const wchar_t kSystemPreferencesWindowClass[] =
L"Electron_SystemPreferencesHostWindow";
} // namespace
namespace api {
bool SystemPreferences::IsAeroGlassEnabled() {
return ui::win::IsAeroGlassEnabled();
}
std::string hexColorDWORDToRGBA(DWORD color) {
std::ostringstream stream;
stream << std::hex << color;
std::string hexColor = stream.str();
return hexColor.substr(2) + hexColor.substr(0, 2);
}
std::string SystemPreferences::GetAccentColor() {
DWORD color = 0;
BOOL opaque = FALSE;
if (FAILED(dwmGetColorizationColor(&color, &opaque))) {
return "";
}
return hexColorDWORDToRGBA(color);
}
void SystemPreferences::InitializeWindow() {
WNDCLASSEX window_class;
base::win::InitializeWindowClass(
kSystemPreferencesWindowClass,
&base::win::WrappedWindowProc<SystemPreferences::WndProcStatic>,
0, 0, 0, NULL, NULL, NULL, NULL, NULL,
&window_class);
instance_ = window_class.hInstance;
atom_ = RegisterClassEx(&window_class);
// Create an offscreen window for receiving broadcast messages for the system
// colorization color. Create a hidden WS_POPUP window instead of an
// HWND_MESSAGE window, because only top-level windows such as popups can
// receive broadcast messages like "WM_DWMCOLORIZATIONCOLORCHANGED".
window_ = CreateWindow(MAKEINTATOM(atom_),
0, WS_POPUP, 0, 0, 0, 0, 0, 0, instance_, 0);
gfx::CheckWindowCreated(window_);
gfx::SetWindowUserData(window_, this);
}
LRESULT CALLBACK SystemPreferences::WndProcStatic(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
SystemPreferences* msg_wnd = reinterpret_cast<SystemPreferences*>(
GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (msg_wnd)
return msg_wnd->WndProc(hwnd, message, wparam, lparam);
else
return ::DefWindowProc(hwnd, message, wparam, lparam);
}
LRESULT CALLBACK SystemPreferences::WndProc(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
if (message == WM_DWMCOLORIZATIONCOLORCHANGED) {
DWORD new_color = (DWORD) wparam;
std::string new_color_string = hexColorDWORDToRGBA(new_color);
if (new_color_string != current_color_) {
Emit("accent-color-changed", hexColorDWORDToRGBA(new_color));
current_color_ = new_color_string;
}
}
return ::DefWindowProc(hwnd, message, wparam, lparam);
}
} // namespace api
} // namespace atom

View File

@@ -8,58 +8,92 @@
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/browser.h"
#include "atom/browser/ui/tray_icon.h"
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/node_includes.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "ui/events/event_constants.h"
#include "ui/gfx/image/image.h"
namespace mate {
template<>
struct Converter<atom::TrayIcon::HighlightMode> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
atom::TrayIcon::HighlightMode* out) {
std::string mode;
if (ConvertFromV8(isolate, val, &mode)) {
if (mode == "always") {
*out = atom::TrayIcon::HighlightMode::ALWAYS;
return true;
}
if (mode == "selection") {
*out = atom::TrayIcon::HighlightMode::SELECTION;
return true;
}
if (mode == "never") {
*out = atom::TrayIcon::HighlightMode::NEVER;
return true;
}
}
// Support old boolean parameter
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
bool highlight;
if (ConvertFromV8(isolate, val, &highlight)) {
if (highlight)
*out = atom::TrayIcon::HighlightMode::SELECTION;
else
*out = atom::TrayIcon::HighlightMode::NEVER;
return true;
}
return false;
}
};
} // namespace mate
namespace atom {
namespace api {
Tray::Tray(const gfx::Image& image)
Tray::Tray(v8::Isolate* isolate, v8::Local<v8::Object> wrapper,
mate::Handle<NativeImage> image)
: tray_icon_(TrayIcon::Create()) {
tray_icon_->SetImage(image);
SetImage(isolate, image);
tray_icon_->AddObserver(this);
InitWith(isolate, wrapper);
}
Tray::~Tray() {
// Destroy the native tray in next tick.
base::MessageLoop::current()->DeleteSoon(FROM_HERE, tray_icon_.release());
}
// static
mate::Wrappable* Tray::New(v8::Isolate* isolate, const gfx::Image& image) {
mate::WrappableBase* Tray::New(mate::Handle<NativeImage> image,
mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate, "Cannot create Tray before app is ready")));
args->ThrowError("Cannot create Tray before app is ready");
return nullptr;
}
return new Tray(image);
return new Tray(args->isolate(), args->GetThis(), image);
}
void Tray::OnClicked(const gfx::Rect& bounds, int modifiers) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitCustomEvent("click",
ModifiersToObject(isolate(), modifiers), bounds);
EmitWithFlags("click", modifiers, bounds);
}
void Tray::OnDoubleClicked(const gfx::Rect& bounds, int modifiers) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitCustomEvent("double-click",
ModifiersToObject(isolate(), modifiers), bounds);
EmitWithFlags("double-click", modifiers, bounds);
}
void Tray::OnRightClicked(const gfx::Rect& bounds, int modifiers) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitCustomEvent("right-click",
ModifiersToObject(isolate(), modifiers), bounds);
EmitWithFlags("right-click", modifiers, bounds);
}
void Tray::OnBalloonShow() {
@@ -82,6 +116,10 @@ void Tray::OnDropFiles(const std::vector<std::string>& files) {
Emit("drop-files", files);
}
void Tray::OnDropText(const std::string& text) {
Emit("drop-text", text);
}
void Tray::OnDragEntered() {
Emit("drag-enter");
}
@@ -94,29 +132,38 @@ void Tray::OnDragEnded() {
Emit("drag-end");
}
void Tray::SetImage(mate::Arguments* args, const gfx::Image& image) {
tray_icon_->SetImage(image);
void Tray::SetImage(v8::Isolate* isolate, mate::Handle<NativeImage> image) {
#if defined(OS_WIN)
tray_icon_->SetImage(image->GetHICON(GetSystemMetrics(SM_CXSMICON)));
#else
tray_icon_->SetImage(image->image());
#endif
}
void Tray::SetPressedImage(mate::Arguments* args, const gfx::Image& image) {
tray_icon_->SetPressedImage(image);
void Tray::SetPressedImage(v8::Isolate* isolate,
mate::Handle<NativeImage> image) {
#if defined(OS_WIN)
tray_icon_->SetPressedImage(image->GetHICON(GetSystemMetrics(SM_CXSMICON)));
#else
tray_icon_->SetPressedImage(image->image());
#endif
}
void Tray::SetToolTip(mate::Arguments* args, const std::string& tool_tip) {
void Tray::SetToolTip(const std::string& tool_tip) {
tray_icon_->SetToolTip(tool_tip);
}
void Tray::SetTitle(mate::Arguments* args, const std::string& title) {
void Tray::SetTitle(const std::string& title) {
tray_icon_->SetTitle(title);
}
void Tray::SetHighlightMode(mate::Arguments* args, bool highlight) {
tray_icon_->SetHighlightMode(highlight);
void Tray::SetHighlightMode(TrayIcon::HighlightMode mode) {
tray_icon_->SetHighlightMode(mode);
}
void Tray::DisplayBalloon(mate::Arguments* args,
const mate::Dictionary& options) {
gfx::Image icon;
mate::Handle<NativeImage> icon;
options.Get("icon", &icon);
base::string16 title, content;
if (!options.Get("title", &title) ||
@@ -125,7 +172,14 @@ void Tray::DisplayBalloon(mate::Arguments* args,
return;
}
tray_icon_->DisplayBalloon(icon, title, content);
#if defined(OS_WIN)
tray_icon_->DisplayBalloon(
icon.IsEmpty() ? NULL : icon->GetHICON(GetSystemMetrics(SM_CXSMICON)),
title, content);
#else
tray_icon_->DisplayBalloon(
icon.IsEmpty() ? gfx::Image() : icon->image(), title, content);
#endif
}
void Tray::PopUpContextMenu(mate::Arguments* args) {
@@ -136,24 +190,20 @@ void Tray::PopUpContextMenu(mate::Arguments* args) {
tray_icon_->PopUpContextMenu(pos, menu.IsEmpty() ? nullptr : menu->model());
}
void Tray::SetContextMenu(mate::Arguments* args, Menu* menu) {
void Tray::SetContextMenu(v8::Isolate* isolate, mate::Handle<Menu> menu) {
menu_.Reset(isolate, menu.ToV8());
tray_icon_->SetContextMenu(menu->model());
}
v8::Local<v8::Object> Tray::ModifiersToObject(v8::Isolate* isolate,
int modifiers) {
mate::Dictionary obj(isolate, v8::Object::New(isolate));
obj.Set("shiftKey", static_cast<bool>(modifiers & ui::EF_SHIFT_DOWN));
obj.Set("ctrlKey", static_cast<bool>(modifiers & ui::EF_CONTROL_DOWN));
obj.Set("altKey", static_cast<bool>(modifiers & ui::EF_ALT_DOWN));
obj.Set("metaKey", static_cast<bool>(modifiers & ui::EF_COMMAND_DOWN));
return obj.GetHandle();
gfx::Rect Tray::GetBounds() {
return tray_icon_->GetBounds();
}
// static
void Tray::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Tray"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("setImage", &Tray::SetImage)
.SetMethod("setPressedImage", &Tray::SetPressedImage)
@@ -162,7 +212,8 @@ void Tray::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setHighlightMode", &Tray::SetHighlightMode)
.SetMethod("displayBalloon", &Tray::DisplayBalloon)
.SetMethod("popUpContextMenu", &Tray::PopUpContextMenu)
.SetMethod("_setContextMenu", &Tray::SetContextMenu);
.SetMethod("setContextMenu", &Tray::SetContextMenu)
.SetMethod("getBounds", &Tray::GetBounds);
}
} // namespace api
@@ -172,14 +223,15 @@ void Tray::BuildPrototype(v8::Isolate* isolate,
namespace {
using atom::api::Tray;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
using atom::api::Tray;
v8::Isolate* isolate = context->GetIsolate();
v8::Local<v8::Function> constructor = mate::CreateConstructor<Tray>(
isolate, "Tray", base::Bind(&Tray::New));
Tray::SetConstructor(isolate, base::Bind(&Tray::New));
mate::Dictionary dict(isolate, exports);
dict.Set("Tray", static_cast<v8::Local<v8::Value>>(constructor));
dict.Set("Tray", Tray::GetConstructor(isolate)->GetFunction());
}
} // namespace

View File

@@ -5,12 +5,14 @@
#ifndef ATOM_BROWSER_API_ATOM_API_TRAY_H_
#define ATOM_BROWSER_API_ATOM_API_TRAY_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/tray_icon.h"
#include "atom/browser/ui/tray_icon_observer.h"
#include "base/memory/scoped_ptr.h"
#include "native_mate/handle.h"
namespace gfx {
class Image;
@@ -28,17 +30,20 @@ class TrayIcon;
namespace api {
class Menu;
class NativeImage;
class Tray : public mate::TrackableObject<Tray>,
public TrayIconObserver {
public:
static mate::Wrappable* New(v8::Isolate* isolate, const gfx::Image& image);
static mate::WrappableBase* New(mate::Handle<NativeImage> image,
mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit Tray(const gfx::Image& image);
Tray(v8::Isolate* isolate, v8::Local<v8::Object> wrapper,
mate::Handle<NativeImage> image);
~Tray() override;
// TrayIconObserver:
@@ -50,23 +55,24 @@ class Tray : public mate::TrackableObject<Tray>,
void OnBalloonClosed() override;
void OnDrop() override;
void OnDropFiles(const std::vector<std::string>& files) override;
void OnDropText(const std::string& text) override;
void OnDragEntered() override;
void OnDragExited() override;
void OnDragEnded() override;
void SetImage(mate::Arguments* args, const gfx::Image& image);
void SetPressedImage(mate::Arguments* args, const gfx::Image& image);
void SetToolTip(mate::Arguments* args, const std::string& tool_tip);
void SetTitle(mate::Arguments* args, const std::string& title);
void SetHighlightMode(mate::Arguments* args, bool highlight);
void SetImage(v8::Isolate* isolate, mate::Handle<NativeImage> image);
void SetPressedImage(v8::Isolate* isolate, mate::Handle<NativeImage> image);
void SetToolTip(const std::string& tool_tip);
void SetTitle(const std::string& title);
void SetHighlightMode(TrayIcon::HighlightMode mode);
void DisplayBalloon(mate::Arguments* args, const mate::Dictionary& options);
void PopUpContextMenu(mate::Arguments* args);
void SetContextMenu(mate::Arguments* args, Menu* menu);
void SetContextMenu(v8::Isolate* isolate, mate::Handle<Menu> menu);
gfx::Rect GetBounds();
private:
v8::Local<v8::Object> ModifiersToObject(v8::Isolate* isolate, int modifiers);
scoped_ptr<TrayIcon> tray_icon_;
v8::Global<v8::Object> menu_;
std::unique_ptr<TrayIcon> tray_icon_;
DISALLOW_COPY_AND_ASSIGN(Tray);
};

View File

@@ -14,8 +14,13 @@
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_security_state_model_client.h"
#include "atom/browser/lib/bluetooth_chooser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/net/atom_network_delegate.h"
#include "atom/browser/osr/osr_output_device.h"
#include "atom/browser/osr/osr_render_widget_host_view.h"
#include "atom/browser/osr/osr_web_contents_view.h"
#include "atom/browser/ui/drag_util.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/web_view_guest_delegate.h"
@@ -37,14 +42,16 @@
#include "base/strings/utf_string_conversions.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "chrome/browser/printing/print_view_manager_basic.h"
#include "chrome/browser/printing/print_preview_message_handler.h"
#include "chrome/browser/printing/print_view_manager_basic.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/view_messages.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/plugin_service.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
@@ -53,17 +60,21 @@
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/resource_request_details.h"
#include "content/public/browser/service_worker_context.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/context_menu_params.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request_context.h"
#include "third_party/WebKit/public/web/WebFindOptions.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/display/screen.h"
#if !defined(OS_MACOSX)
#include "ui/aura/window.h"
#endif
#include "atom/common/node_includes.h"
@@ -74,15 +85,6 @@ struct PrintSettings {
bool print_background;
};
void SetUserAgentInIO(scoped_refptr<net::URLRequestContextGetter> getter,
std::string accept_lang,
std::string user_agent) {
getter->GetURLRequestContext()->set_http_user_agent_settings(
new net::StaticHttpUserAgentSettings(
net::HttpUtil::GenerateAcceptLanguageHeader(accept_lang),
user_agent));
}
} // namespace
namespace mate {
@@ -132,6 +134,7 @@ struct Converter<WindowOpenDisposition> {
case NEW_FOREGROUND_TAB: disposition = "foreground-tab"; break;
case NEW_BACKGROUND_TAB: disposition = "background-tab"; break;
case NEW_POPUP: case NEW_WINDOW: disposition = "new-window"; break;
case SAVE_TO_DISK: disposition = "save-to-disk"; break;
default: break;
}
return mate::ConvertToV8(isolate, disposition);
@@ -144,7 +147,7 @@ struct Converter<net::HttpResponseHeaders*> {
net::HttpResponseHeaders* headers) {
base::DictionaryValue response_headers;
if (headers) {
void* iter = nullptr;
size_t iter = 0;
std::string key;
std::string value;
while (headers->EnumerateHeaderLines(&iter, &key, &value)) {
@@ -154,7 +157,7 @@ struct Converter<net::HttpResponseHeaders*> {
if (response_headers.GetList(key, &values))
values->AppendString(value);
} else {
scoped_ptr<base::ListValue> values(new base::ListValue());
std::unique_ptr<base::ListValue> values(new base::ListValue());
values->AppendString(value);
response_headers.Set(key, std::move(values));
}
@@ -185,6 +188,42 @@ struct Converter<content::SavePageType> {
}
};
template<>
struct Converter<atom::api::WebContents::Type> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::api::WebContents::Type val) {
using Type = atom::api::WebContents::Type;
std::string type = "";
switch (val) {
case Type::BACKGROUND_PAGE: type = "backgroundPage"; break;
case Type::BROWSER_WINDOW: type = "window"; break;
case Type::REMOTE: type = "remote"; break;
case Type::WEB_VIEW: type = "webview"; break;
case Type::OFF_SCREEN: type = "offscreen"; break;
default: break;
}
return mate::ConvertToV8(isolate, type);
}
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
atom::api::WebContents::Type* out) {
using Type = atom::api::WebContents::Type;
std::string type;
if (!ConvertFromV8(isolate, val, &type))
return false;
if (type == "webview") {
*out = Type::WEB_VIEW;
} else if (type == "backgroundPage") {
*out = Type::BACKGROUND_PAGE;
} else if (type == "offscreen") {
*out = Type::OFF_SCREEN;
} else {
return false;
}
return true;
}
};
} // namespace mate
@@ -194,10 +233,6 @@ namespace api {
namespace {
// The wrapWebContents function which is implemented in JavaScript
using WrapWebContentsCallback = base::Callback<void(v8::Local<v8::Value>)>;
WrapWebContentsCallback g_wrap_web_contents;
content::ServiceWorkerContext* GetServiceWorkerContext(
const content::WebContents* web_contents) {
auto context = web_contents->GetBrowserContext();
@@ -213,65 +248,96 @@ content::ServiceWorkerContext* GetServiceWorkerContext(
return storage_partition->GetServiceWorkerContext();
}
// Called when CapturePage is done.
void OnCapturePageDone(base::Callback<void(const gfx::Image&)> callback,
const SkBitmap& bitmap,
content::ReadbackResponse response) {
callback.Run(gfx::Image::CreateFrom1xBitmap(bitmap));
}
} // namespace
WebContents::WebContents(content::WebContents* web_contents)
WebContents::WebContents(v8::Isolate* isolate,
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents),
embedder_(nullptr),
type_(REMOTE),
request_id_(0),
background_throttling_(true) {
AttachAsUserData(web_contents);
background_throttling_(true),
enable_devtools_(true) {
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
Init(isolate);
AttachAsUserData(web_contents);
}
WebContents::WebContents(v8::Isolate* isolate,
const mate::Dictionary& options)
: embedder_(nullptr),
type_(BROWSER_WINDOW),
request_id_(0),
background_throttling_(true) {
background_throttling_(true),
enable_devtools_(true) {
// Read options.
options.Get("backgroundThrottling", &background_throttling_);
// Whether it is a guest WebContents.
bool is_guest = false;
options.Get("isGuest", &is_guest);
type_ = is_guest ? WEB_VIEW : BROWSER_WINDOW;
// FIXME(zcbenz): We should read "type" parameter for better design, but
// on Windows we have encountered a compiler bug that if we read "type"
// from |options| and then set |type_|, a memory corruption will happen
// and Electron will soon crash.
// Remvoe this after we upgraded to use VS 2015 Update 3.
bool b = false;
if (options.Get("isGuest", &b) && b)
type_ = WEB_VIEW;
else if (options.Get("isBackgroundPage", &b) && b)
type_ = BACKGROUND_PAGE;
else if (options.Get("offscreen", &b) && b)
type_ = OFF_SCREEN;
// Whether to enable DevTools.
options.Get("devTools", &enable_devtools_);
// Obtain the session.
std::string partition;
mate::Handle<api::Session> session;
if (options.Get("session", &session)) {
} else if (options.Get("partition", &partition) && !partition.empty()) {
bool in_memory = true;
if (base::StartsWith(partition, "persist:", base::CompareCase::SENSITIVE)) {
in_memory = false;
partition = partition.substr(8);
}
session = Session::FromPartition(isolate, partition, in_memory);
} else if (options.Get("partition", &partition)) {
session = Session::FromPartition(isolate, partition);
} else {
// Use the default session if not specified.
session = Session::FromPartition(isolate, "", false);
session = Session::FromPartition(isolate, "");
}
session_.Reset(isolate, session.ToV8());
content::WebContents* web_contents;
if (is_guest) {
content::SiteInstance* site_instance = content::SiteInstance::CreateForURL(
session->browser_context(), GURL("chrome-guest://fake-host"));
if (IsGuest()) {
scoped_refptr<content::SiteInstance> site_instance =
content::SiteInstance::CreateForURL(
session->browser_context(), GURL("chrome-guest://fake-host"));
content::WebContents::CreateParams params(
session->browser_context(), site_instance);
guest_delegate_.reset(new WebViewGuestDelegate);
params.guest_delegate = guest_delegate_.get();
web_contents = content::WebContents::Create(params);
} else if (IsOffScreen()) {
bool transparent = false;
options.Get("transparent", &transparent);
content::WebContents::CreateParams params(session->browser_context());
auto* view = new OffScreenWebContentsView(
transparent, base::Bind(&WebContents::OnPaint, base::Unretained(this)));
params.view = view;
params.delegate_view = view;
web_contents = content::WebContents::Create(params);
view->SetWebContents(web_contents);
} else {
content::WebContents::CreateParams params(session->browser_context());
web_contents = content::WebContents::Create(params);
}
Observe(web_contents);
AttachAsUserData(web_contents);
InitWithWebContents(web_contents);
InitWithWebContents(web_contents, session->browser_context());
managed_web_contents()->GetView()->SetDelegate(this);
@@ -285,7 +351,7 @@ WebContents::WebContents(v8::Isolate* isolate,
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
if (is_guest) {
if (IsGuest()) {
guest_delegate_->Initialize(this);
NativeWindow* owner_window = nullptr;
@@ -299,6 +365,9 @@ WebContents::WebContents(v8::Isolate* isolate,
if (owner_window)
SetOwnerWindow(owner_window);
}
Init(isolate);
AttachAsUserData(web_contents);
}
WebContents::~WebContents() {
@@ -322,7 +391,7 @@ bool WebContents::AddMessageToConsole(content::WebContents* source,
const base::string16& message,
int32_t line_no,
const base::string16& source_id) {
if (type_ == BROWSER_WINDOW) {
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) {
return false;
} else {
Emit("console-message", level, message, line_no, source_id);
@@ -333,7 +402,7 @@ bool WebContents::AddMessageToConsole(content::WebContents* source,
void WebContents::OnCreateWindow(const GURL& target_url,
const std::string& frame_name,
WindowOpenDisposition disposition) {
if (type_ == BROWSER_WINDOW)
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN)
Emit("-new-window", target_url, frame_name, disposition);
else
Emit("new-window", target_url, frame_name, disposition);
@@ -343,7 +412,7 @@ content::WebContents* WebContents::OpenURLFromTab(
content::WebContents* source,
const content::OpenURLParams& params) {
if (params.disposition != CURRENT_TAB) {
if (type_ == BROWSER_WINDOW)
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN)
Emit("-new-window", params.url, "", params.disposition);
else
Emit("new-window", params.url, "", params.disposition);
@@ -360,7 +429,7 @@ content::WebContents* WebContents::OpenURLFromTab(
void WebContents::BeforeUnloadFired(content::WebContents* tab,
bool proceed,
bool* proceed_to_fire_unload) {
if (type_ == BROWSER_WINDOW)
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN)
*proceed_to_fire_unload = proceed;
else
*proceed_to_fire_unload = true;
@@ -373,7 +442,8 @@ void WebContents::MoveContents(content::WebContents* source,
void WebContents::CloseContents(content::WebContents* source) {
Emit("close");
if (type_ == BROWSER_WINDOW)
if ((type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) && owner_window())
owner_window()->CloseContents(source);
}
@@ -381,6 +451,11 @@ void WebContents::ActivateContents(content::WebContents* source) {
Emit("activate");
}
void WebContents::UpdateTargetURL(content::WebContents* source,
const GURL& url) {
Emit("update-target-url", url);
}
bool WebContents::IsPopupOrPanel(const content::WebContents* source) const {
return type_ == BROWSER_WINDOW;
}
@@ -388,14 +463,12 @@ bool WebContents::IsPopupOrPanel(const content::WebContents* source) const {
void WebContents::HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) {
if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen()) {
// Escape exits tabbed fullscreen mode.
ExitFullscreenModeForTab(source);
} else if (type_ == BROWSER_WINDOW) {
owner_window()->HandleKeyboardEvent(source, event);
} else if (type_ == WEB_VIEW && guest_delegate_) {
if (type_ == WEB_VIEW && embedder_) {
// Send the unhandled keyboard events back to the embedder.
guest_delegate_->HandleKeyboardEvent(source, event);
embedder_->HandleKeyboardEvent(source, event);
} else {
// Go to the default keyboard handling.
CommonWebContentsDelegate::HandleKeyboardEvent(source, event);
}
}
@@ -424,22 +497,24 @@ void WebContents::ExitFullscreenModeForTab(content::WebContents* source) {
void WebContents::RendererUnresponsive(content::WebContents* source) {
Emit("unresponsive");
if (type_ == BROWSER_WINDOW)
if ((type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) && owner_window())
owner_window()->RendererUnresponsive(source);
}
void WebContents::RendererResponsive(content::WebContents* source) {
Emit("responsive");
if (type_ == BROWSER_WINDOW)
if ((type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) && owner_window())
owner_window()->RendererResponsive(source);
}
bool WebContents::HandleContextMenu(const content::ContextMenuParams& params) {
if (!params.custom_context.is_pepper_menu)
return false;
if (params.custom_context.is_pepper_menu) {
Emit("pepper-context-menu", std::make_pair(params, web_contents()));
web_contents()->NotifyContextMenuClosed(params.custom_context);
} else {
Emit("context-menu", std::make_pair(params, web_contents()));
}
Emit("pepper-context-menu", std::make_pair(params, web_contents()));
web_contents()->NotifyContextMenuClosed(params.custom_context);
return true;
}
@@ -454,22 +529,18 @@ void WebContents::FindReply(content::WebContents* web_contents,
const gfx::Rect& selection_rect,
int active_match_ordinal,
bool final_update) {
if (!final_update)
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
mate::Dictionary result = mate::Dictionary::CreateEmpty(isolate());
if (number_of_matches == -1) {
result.Set("requestId", request_id);
result.Set("selectionArea", selection_rect);
result.Set("finalUpdate", final_update);
result.Set("activeMatchOrdinal", active_match_ordinal);
Emit("found-in-page", result);
} else if (final_update) {
result.Set("requestId", request_id);
result.Set("matches", number_of_matches);
result.Set("finalUpdate", final_update);
Emit("found-in-page", result);
}
result.Set("requestId", request_id);
result.Set("matches", number_of_matches);
result.Set("selectionArea", selection_rect);
result.Set("activeMatchOrdinal", active_match_ordinal);
result.Set("finalUpdate", final_update); // Deprecate after 2.0
Emit("found-in-page", result);
}
bool WebContents::CheckMediaAccessPermission(
@@ -497,6 +568,14 @@ void WebContents::RequestToLockMouse(
permission_helper->RequestPointerLockPermission(user_gesture);
}
std::unique_ptr<content::BluetoothChooser> WebContents::RunBluetoothChooser(
content::RenderFrameHost* frame,
const content::BluetoothChooser::EventHandler& event_handler) {
std::unique_ptr<BluetoothChooser> bluetooth_chooser(
new BluetoothChooser(this, event_handler));
return std::move(bluetooth_chooser);
}
void WebContents::BeforeUnloadFired(const base::TimeTicks& proceed_time) {
// Do nothing, we override this method just to avoid compilation error since
// there are two virtual functions named BeforeUnloadFired.
@@ -507,7 +586,7 @@ void WebContents::RenderViewDeleted(content::RenderViewHost* render_view_host) {
}
void WebContents::RenderProcessGone(base::TerminationStatus status) {
Emit("crashed");
Emit("crashed", status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
}
void WebContents::PluginCrashed(const base::FilePath& plugin_path,
@@ -549,17 +628,6 @@ void WebContents::DidFinishLoad(content::RenderFrameHost* render_frame_host,
Emit("did-finish-load");
}
void WebContents::DidFailProvisionalLoad(
content::RenderFrameHost* render_frame_host,
const GURL& url,
int code,
const base::string16& description,
bool was_ignored_by_handler) {
bool is_main_frame = !render_frame_host->GetParent();
Emit("did-fail-provisional-load", code, description, url, is_main_frame);
Emit("did-fail-load", code, description, url, is_main_frame);
}
void WebContents::DidFailLoad(content::RenderFrameHost* render_frame_host,
const GURL& url,
int error_code,
@@ -603,13 +671,27 @@ void WebContents::DidGetRedirectForResourceRequest(
details.headers.get());
}
void WebContents::DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {
if (details.is_navigation_to_different_page())
Emit("did-navigate", params.url);
else if (details.is_in_page)
Emit("did-navigate-in-page", params.url);
void WebContents::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
bool is_main_frame = navigation_handle->IsInMainFrame();
if (navigation_handle->HasCommitted() && !navigation_handle->IsErrorPage()) {
auto url = navigation_handle->GetURL();
bool is_in_page = navigation_handle->IsSamePage();
if (is_main_frame && !is_in_page) {
Emit("did-navigate", url);
} else if (is_in_page) {
Emit("did-navigate-in-page", url, is_main_frame);
}
} else {
auto url = navigation_handle->GetURL();
int code = navigation_handle->GetNetErrorCode();
auto description = net::ErrorToShortString(code);
Emit("did-fail-provisional-load", code, description, url, is_main_frame);
// Do not emit "did-fail-load" for canceled requests.
if (code != net::ERR_ABORTED)
Emit("did-fail-load", code, description, url, is_main_frame);
}
}
void WebContents::TitleWasSet(content::NavigationEntry* entry,
@@ -623,10 +705,10 @@ void WebContents::TitleWasSet(content::NavigationEntry* entry,
void WebContents::DidUpdateFaviconURL(
const std::vector<content::FaviconURL>& urls) {
std::set<GURL> unique_urls;
for (auto iter = urls.begin(); iter != urls.end(); ++iter) {
if (iter->icon_type != content::FaviconURL::FAVICON)
for (const auto& iter : urls) {
if (iter.icon_type != content::FaviconURL::FAVICON)
continue;
const GURL& url = iter->icon_url;
const GURL& url = iter.icon_url;
if (url.is_valid())
unique_urls.insert(url);
}
@@ -648,6 +730,11 @@ void WebContents::DevToolsOpened() {
isolate(), managed_web_contents()->GetDevToolsWebContents());
devtools_web_contents_.Reset(isolate(), handle.ToV8());
// Set inspected tabID.
base::FundamentalValue tab_id(ID());
managed_web_contents()->CallClientFunction(
"DevToolsAPI.setInspectedTabId", &tab_id, nullptr, nullptr);
// Inherit owner window in devtools.
if (owner_window())
handle->SetOwnerWindow(managed_web_contents()->GetDevToolsWebContents(),
@@ -679,7 +766,7 @@ bool WebContents::OnMessageReceived(const IPC::Message& message) {
}
// There are three ways of destroying a webContents:
// 1. call webContents.destory();
// 1. call webContents.destroy();
// 2. garbage collection;
// 3. user closes the window of webContents;
// For webview only #1 will happen, for BrowserWindow both #1 and #3 may
@@ -718,6 +805,10 @@ int WebContents::GetID() const {
return web_contents()->GetRenderProcessHost()->GetID();
}
WebContents::Type WebContents::GetType() const {
return type_;
}
bool WebContents::Equal(const WebContents* web_contents) const {
return GetID() == web_contents->GetID();
}
@@ -741,7 +832,7 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
std::string user_agent;
if (options.Get("userAgent", &user_agent))
SetUserAgent(user_agent);
web_contents()->SetUserAgentOverride(user_agent);
std::string extra_headers;
if (options.Get("extraHeaders", &extra_headers))
@@ -778,7 +869,8 @@ void WebContents::DownloadURL(const GURL& url) {
content::BrowserContext::GetDownloadManager(browser_context);
download_manager->DownloadUrl(
content::DownloadUrlParameters::FromWebContents(web_contents(), url));
content::DownloadUrlParameters::CreateForWebContentsMainFrame(
web_contents(), url));
}
GURL WebContents::GetURL() const {
@@ -828,14 +920,9 @@ bool WebContents::IsCrashed() const {
return web_contents()->IsCrashed();
}
void WebContents::SetUserAgent(const std::string& user_agent) {
void WebContents::SetUserAgent(const std::string& user_agent,
mate::Arguments* args) {
web_contents()->SetUserAgentOverride(user_agent);
scoped_refptr<net::URLRequestContextGetter> getter =
web_contents()->GetBrowserContext()->GetRequestContext();
auto accept_lang = l10n_util::GetApplicationLocale("");
getter->GetNetworkTaskRunner()->PostTask(FROM_HERE,
base::Bind(&SetUserAgentInIO, getter, accept_lang, user_agent));
}
std::string WebContents::GetUserAgent() {
@@ -857,14 +944,19 @@ void WebContents::OpenDevTools(mate::Arguments* args) {
if (type_ == REMOTE)
return;
if (!enable_devtools_)
return;
std::string state;
if (type_ == WEB_VIEW) {
if (type_ == WEB_VIEW || !owner_window()) {
state = "detach";
} else if (args && args->Length() == 1) {
bool detach = false;
mate::Dictionary options;
if (args->GetNext(&options)) {
options.Get("mode", &state);
// TODO(kevinsawicki) Remove in 2.0
options.Get("detach", &detach);
if (state.empty() && detach)
state = "detach";
@@ -921,7 +1013,11 @@ void WebContents::InspectElement(int x, int y) {
if (type_ == REMOTE)
return;
OpenDevTools(nullptr);
if (!enable_devtools_)
return;
if (!managed_web_contents()->GetDevToolsWebContents())
OpenDevTools(nullptr);
scoped_refptr<content::DevToolsAgentHost> agent(
content::DevToolsAgentHost::GetOrCreateFor(web_contents()));
agent->InspectElement(x, y);
@@ -931,6 +1027,9 @@ void WebContents::InspectServiceWorker() {
if (type_ == REMOTE)
return;
if (!enable_devtools_)
return;
for (const auto& agent_host : content::DevToolsAgentHost::GetOrCreateAll()) {
if (agent_host->GetType() ==
content::DevToolsAgentHost::TYPE_SERVICE_WORKER) {
@@ -1068,17 +1167,47 @@ void WebContents::StopFindInPage(content::StopFindAction action) {
web_contents()->StopFinding(action);
}
void WebContents::ShowDefinitionForSelection() {
#if defined(OS_MACOSX)
const auto view = web_contents()->GetRenderWidgetHostView();
if (view)
view->ShowDefinitionForSelection();
#endif
}
void WebContents::CopyImageAt(int x, int y) {
const auto host = web_contents()->GetMainFrame();
if (host)
host->CopyImageAt(x, y);
}
void WebContents::Focus() {
web_contents()->Focus();
}
#if !defined(OS_MACOSX)
bool WebContents::IsFocused() const {
auto view = web_contents()->GetRenderWidgetHostView();
if (!view) return false;
if (GetType() != BACKGROUND_PAGE) {
auto window = web_contents()->GetNativeView()->GetToplevelWindow();
if (window && !window->IsVisible())
return false;
}
return view->HasFocus();
}
#endif
void WebContents::TabTraverse(bool reverse) {
web_contents()->FocusThroughTabTraversal(reverse);
}
bool WebContents::SendIPCMessage(const base::string16& channel,
bool WebContents::SendIPCMessage(bool all_frames,
const base::string16& channel,
const base::ListValue& args) {
return Send(new AtomViewMsg_Message(routing_id(), channel, args));
return Send(new AtomViewMsg_Message(routing_id(), all_frames, channel, args));
}
void WebContents::SendInputEvent(v8::Isolate* isolate,
@@ -1115,12 +1244,20 @@ void WebContents::SendInputEvent(v8::Isolate* isolate,
isolate, "Invalid event object")));
}
void WebContents::BeginFrameSubscription(
const FrameSubscriber::FrameCaptureCallback& callback) {
void WebContents::BeginFrameSubscription(mate::Arguments* args) {
bool only_dirty = false;
FrameSubscriber::FrameCaptureCallback callback;
args->GetNext(&only_dirty);
if (!args->GetNext(&callback)) {
args->ThrowError();
return;
}
const auto view = web_contents()->GetRenderWidgetHostView();
if (view) {
scoped_ptr<FrameSubscriber> frame_subscriber(new FrameSubscriber(
isolate(), view, callback));
std::unique_ptr<FrameSubscriber> frame_subscriber(new FrameSubscriber(
isolate(), view, callback, only_dirty));
view->BeginFrameSubscription(std::move(frame_subscriber));
}
}
@@ -1131,6 +1268,74 @@ void WebContents::EndFrameSubscription() {
view->EndFrameSubscription();
}
void WebContents::StartDrag(const mate::Dictionary& item,
mate::Arguments* args) {
base::FilePath file;
std::vector<base::FilePath> files;
if (!item.Get("files", &files) && item.Get("file", &file)) {
files.push_back(file);
}
mate::Handle<NativeImage> icon;
if (!item.Get("icon", &icon) && !file.empty()) {
// TODO(zcbenz): Set default icon from file.
}
// Error checking.
if (icon.IsEmpty()) {
args->ThrowError("icon must be set");
return;
}
// Start dragging.
if (!files.empty()) {
base::MessageLoop::ScopedNestableTaskAllower allow(
base::MessageLoop::current());
DragFileItems(files, icon->image(), web_contents()->GetNativeView());
} else {
args->ThrowError("There is nothing to drag");
}
}
void WebContents::CapturePage(mate::Arguments* args) {
gfx::Rect rect;
base::Callback<void(const gfx::Image&)> callback;
if (!(args->Length() == 1 && args->GetNext(&callback)) &&
!(args->Length() == 2 && args->GetNext(&rect)
&& args->GetNext(&callback))) {
args->ThrowError();
return;
}
const auto view = web_contents()->GetRenderWidgetHostView();
const auto host = view ? view->GetRenderWidgetHost() : nullptr;
if (!view || !host) {
callback.Run(gfx::Image());
return;
}
// Capture full page if user doesn't specify a |rect|.
const gfx::Size view_size = rect.IsEmpty() ? view->GetViewBounds().size() :
rect.size();
// By default, the requested bitmap size is the view size in screen
// coordinates. However, if there's more pixel detail available on the
// current system, increase the requested bitmap size to capture it all.
gfx::Size bitmap_size = view_size;
const gfx::NativeView native_view = view->GetNativeView();
const float scale =
display::Screen::GetScreen()->GetDisplayNearestWindow(native_view)
.device_scale_factor();
if (scale > 1.0f)
bitmap_size = gfx::ScaleToCeiledSize(view_size, scale);
host->CopyFromBackingStore(gfx::Rect(rect.origin(), view_size),
bitmap_size,
base::Bind(&OnCapturePageDone, callback),
kBGRA_8888_SkColorType);
}
void WebContents::OnCursorChange(const content::WebCursor& cursor) {
content::WebCursor::CursorInfo info;
cursor.GetCursorInfo(&info);
@@ -1138,7 +1343,9 @@ void WebContents::OnCursorChange(const content::WebCursor& cursor) {
if (cursor.IsCustom()) {
Emit("cursor-changed", CursorTypeToString(info),
gfx::Image::CreateFrom1xBitmap(info.custom_image),
info.image_scale_factor);
info.image_scale_factor,
gfx::Size(info.custom_image.width(), info.custom_image.height()),
info.hotspot);
} else {
Emit("cursor-changed", CursorTypeToString(info));
}
@@ -1153,6 +1360,74 @@ bool WebContents::IsGuest() const {
return type_ == WEB_VIEW;
}
bool WebContents::IsOffScreen() const {
return type_ == OFF_SCREEN;
}
void WebContents::OnPaint(const gfx::Rect& dirty_rect, const SkBitmap& bitmap) {
mate::Handle<NativeImage> image =
NativeImage::Create(isolate(), gfx::Image::CreateFrom1xBitmap(bitmap));
Emit("paint", dirty_rect, image);
}
void WebContents::StartPainting() {
if (!IsOffScreen())
return;
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
if (osr_rwhv)
osr_rwhv->SetPainting(true);
}
void WebContents::StopPainting() {
if (!IsOffScreen())
return;
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
if (osr_rwhv)
osr_rwhv->SetPainting(false);
}
bool WebContents::IsPainting() const {
if (!IsOffScreen())
return false;
const auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
return osr_rwhv && osr_rwhv->IsPainting();
}
void WebContents::SetFrameRate(int frame_rate) {
if (!IsOffScreen())
return;
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
if (osr_rwhv)
osr_rwhv->SetFrameRate(frame_rate);
}
int WebContents::GetFrameRate() const {
if (!IsOffScreen())
return 0;
const auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
return osr_rwhv ? osr_rwhv->GetFrameRate() : 0;
}
void WebContents::Invalidate() {
if (!IsOffScreen())
return;
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
if (osr_rwhv)
osr_rwhv->Invalidate();
}
v8::Local<v8::Value> WebContents::GetWebPreferences(v8::Isolate* isolate) {
WebContentsPreferences* web_preferences =
WebContentsPreferences::FromWebContents(web_contents());
@@ -1166,6 +1441,10 @@ v8::Local<v8::Value> WebContents::GetOwnerBrowserWindow() {
return v8::Null(isolate());
}
int32_t WebContents::ID() const {
return weak_map_id();
}
v8::Local<v8::Value> WebContents::Session(v8::Isolate* isolate) {
return v8::Local<v8::Value>::New(isolate, session_);
}
@@ -1176,6 +1455,25 @@ content::WebContents* WebContents::HostWebContents() {
return embedder_->web_contents();
}
void WebContents::SetEmbedder(const WebContents* embedder) {
if (embedder) {
NativeWindow* owner_window = nullptr;
auto relay = NativeWindowRelay::FromWebContents(embedder->web_contents());
if (relay) {
owner_window = relay->window.get();
}
if (owner_window)
SetOwnerWindow(owner_window);
content::RenderWidgetHostView* rwhv =
web_contents()->GetRenderWidgetHostView();
if (rwhv) {
rwhv->Hide();
rwhv->Show();
}
}
}
v8::Local<v8::Value> WebContents::DevToolsWebContents(v8::Isolate* isolate) {
if (devtools_web_contents_.IsEmpty())
return v8::Null(isolate);
@@ -1193,8 +1491,9 @@ v8::Local<v8::Value> WebContents::Debugger(v8::Isolate* isolate) {
// static
void WebContents::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "WebContents"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("getId", &WebContents::GetID)
.SetMethod("equal", &WebContents::Equal)
@@ -1240,14 +1539,24 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("findInPage", &WebContents::FindInPage)
.SetMethod("stopFindInPage", &WebContents::StopFindInPage)
.SetMethod("focus", &WebContents::Focus)
.SetMethod("isFocused", &WebContents::IsFocused)
.SetMethod("tabTraverse", &WebContents::TabTraverse)
.SetMethod("_send", &WebContents::SendIPCMessage)
.SetMethod("sendInputEvent", &WebContents::SendInputEvent)
.SetMethod("beginFrameSubscription",
&WebContents::BeginFrameSubscription)
.SetMethod("endFrameSubscription", &WebContents::EndFrameSubscription)
.SetMethod("startDrag", &WebContents::StartDrag)
.SetMethod("setSize", &WebContents::SetSize)
.SetMethod("isGuest", &WebContents::IsGuest)
.SetMethod("isOffscreen", &WebContents::IsOffScreen)
.SetMethod("startPainting", &WebContents::StartPainting)
.SetMethod("stopPainting", &WebContents::StopPainting)
.SetMethod("isPainting", &WebContents::IsPainting)
.SetMethod("setFrameRate", &WebContents::SetFrameRate)
.SetMethod("getFrameRate", &WebContents::GetFrameRate)
.SetMethod("invalidate", &WebContents::Invalidate)
.SetMethod("getType", &WebContents::GetType)
.SetMethod("getWebPreferences", &WebContents::GetWebPreferences)
.SetMethod("getOwnerBrowserWindow", &WebContents::GetOwnerBrowserWindow)
.SetMethod("hasServiceWorker", &WebContents::HasServiceWorker)
@@ -1258,6 +1567,12 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("_printToPDF", &WebContents::PrintToPDF)
.SetMethod("addWorkSpace", &WebContents::AddWorkSpace)
.SetMethod("removeWorkSpace", &WebContents::RemoveWorkSpace)
.SetMethod("showDefinitionForSelection",
&WebContents::ShowDefinitionForSelection)
.SetMethod("copyImageAt", &WebContents::CopyImageAt)
.SetMethod("capturePage", &WebContents::CapturePage)
.SetMethod("setEmbedder", &WebContents::SetEmbedder)
.SetProperty("id", &WebContents::ID)
.SetProperty("session", &WebContents::Session)
.SetProperty("hostWebContents", &WebContents::HostWebContents)
.SetProperty("devToolsWebContents", &WebContents::DevToolsWebContents)
@@ -1290,44 +1605,32 @@ mate::Handle<WebContents> WebContents::CreateFrom(
return mate::CreateHandle(isolate, static_cast<WebContents*>(existing));
// Otherwise create a new WebContents wrapper object.
auto handle = mate::CreateHandle(isolate, new WebContents(web_contents));
g_wrap_web_contents.Run(handle.ToV8());
return handle;
return mate::CreateHandle(isolate, new WebContents(isolate, web_contents));
}
// static
mate::Handle<WebContents> WebContents::Create(
v8::Isolate* isolate, const mate::Dictionary& options) {
auto handle = mate::CreateHandle(isolate, new WebContents(isolate, options));
g_wrap_web_contents.Run(handle.ToV8());
return handle;
}
void ClearWrapWebContents() {
g_wrap_web_contents.Reset();
}
void SetWrapWebContents(const WrapWebContentsCallback& callback) {
g_wrap_web_contents = callback;
// Cleanup the wrapper on exit.
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
base::Bind(ClearWrapWebContents));
return mate::CreateHandle(isolate, new WebContents(isolate, options));
}
} // namespace api
} // namespace atom
namespace {
using atom::api::WebContents;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.SetMethod("create", &atom::api::WebContents::Create);
dict.SetMethod("_setWrapWebContents", &atom::api::SetWrapWebContents);
dict.Set("WebContents", WebContents::GetConstructor(isolate)->GetFunction());
dict.SetMethod("create", &WebContents::Create);
dict.SetMethod("fromId", &mate::TrackableObject<WebContents>::FromWeakMapID);
dict.SetMethod("getAllWebContents",
&mate::TrackableObject<WebContents>::GetAll);
}
} // namespace

View File

@@ -12,9 +12,9 @@
#include "atom/browser/api/save_page_handler.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/common_web_contents_delegate.h"
#include "content/common/cursors/webcursor.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/favicon_url.h"
#include "content/common/cursors/webcursor.h"
#include "native_mate/handle.h"
#include "ui/gfx/image/image.h"
@@ -43,6 +43,14 @@ class WebContents : public mate::TrackableObject<WebContents>,
public CommonWebContentsDelegate,
public content::WebContentsObserver {
public:
enum Type {
BACKGROUND_PAGE, // A DevTools extension background page.
BROWSER_WINDOW, // Used by BrowserWindow.
REMOTE, // Thin wrap around an existing WebContents.
WEB_VIEW, // Used by <webview>.
OFF_SCREEN, // Used for offscreen rendering
};
// For node.js callback function type: function(error, buffer)
using PrintToPDFCallback =
base::Callback<void(v8::Local<v8::Value>, v8::Local<v8::Value>)>;
@@ -55,7 +63,11 @@ class WebContents : public mate::TrackableObject<WebContents>,
static mate::Handle<WebContents> Create(
v8::Isolate* isolate, const mate::Dictionary& options);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
int GetID() const;
Type GetType() const;
bool Equal(const WebContents* web_contents) const;
void LoadURL(const GURL& url, const mate::Dictionary& options);
void DownloadURL(const GURL& url);
@@ -70,7 +82,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
void GoForward();
void GoToOffset(int offset);
bool IsCrashed() const;
void SetUserAgent(const std::string& user_agent);
void SetUserAgent(const std::string& user_agent, mate::Arguments* args);
std::string GetUserAgent();
void InsertCSS(const std::string& css);
bool SavePage(const base::FilePath& full_file_path,
@@ -90,6 +102,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
void SetAudioMuted(bool muted);
bool IsAudioMuted();
void Print(mate::Arguments* args);
void SetEmbedder(const WebContents* embedder);
// Print current page as PDF.
void PrintToPDF(const base::DictionaryValue& setting,
@@ -113,27 +126,47 @@ class WebContents : public mate::TrackableObject<WebContents>,
void ReplaceMisspelling(const base::string16& word);
uint32_t FindInPage(mate::Arguments* args);
void StopFindInPage(content::StopFindAction action);
void ShowDefinitionForSelection();
void CopyImageAt(int x, int y);
// Focus.
void Focus();
bool IsFocused() const;
void TabTraverse(bool reverse);
// Send messages to browser.
bool SendIPCMessage(const base::string16& channel,
bool SendIPCMessage(bool all_frames,
const base::string16& channel,
const base::ListValue& args);
// Send WebInputEvent to the page.
void SendInputEvent(v8::Isolate* isolate, v8::Local<v8::Value> input_event);
// Subscribe to the frame updates.
void BeginFrameSubscription(
const FrameSubscriber::FrameCaptureCallback& callback);
void BeginFrameSubscription(mate::Arguments* args);
void EndFrameSubscription();
// Dragging native items.
void StartDrag(const mate::Dictionary& item, mate::Arguments* args);
// Captures the page with |rect|, |callback| would be called when capturing is
// done.
void CapturePage(mate::Arguments* args);
// Methods for creating <webview>.
void SetSize(const SetSizeParams& params);
bool IsGuest() const;
// Methods for offscreen rendering
bool IsOffScreen() const;
void OnPaint(const gfx::Rect& dirty_rect, const SkBitmap& bitmap);
void StartPainting();
void StopPainting();
bool IsPainting() const;
void SetFrameRate(int frame_rate);
int GetFrameRate() const;
void Invalidate();
// Callback triggered on permission response.
void OnEnterFullscreenModeForTab(content::WebContents* source,
const GURL& origin,
@@ -151,17 +184,14 @@ class WebContents : public mate::TrackableObject<WebContents>,
v8::Local<v8::Value> GetOwnerBrowserWindow();
// Properties.
int32_t ID() const;
v8::Local<v8::Value> Session(v8::Isolate* isolate);
content::WebContents* HostWebContents();
v8::Local<v8::Value> DevToolsWebContents(v8::Isolate* isolate);
v8::Local<v8::Value> Debugger(v8::Isolate* isolate);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
protected:
explicit WebContents(content::WebContents* web_contents);
WebContents(v8::Isolate* isolate, content::WebContents* web_contents);
WebContents(v8::Isolate* isolate, const mate::Dictionary& options);
~WebContents();
@@ -181,6 +211,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
const gfx::Rect& pos) override;
void CloseContents(content::WebContents* source) override;
void ActivateContents(content::WebContents* contents) override;
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
bool IsPopupOrPanel(const content::WebContents* source) const override;
void HandleKeyboardEvent(
content::WebContents* source,
@@ -210,6 +241,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
content::WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) override;
std::unique_ptr<content::BluetoothChooser> RunBluetoothChooser(
content::RenderFrameHost* frame,
const content::BluetoothChooser::EventHandler& handler) override;
// content::WebContentsObserver:
void BeforeUnloadFired(const base::TimeTicks& proceed_time) override;
@@ -224,11 +258,6 @@ class WebContents : public mate::TrackableObject<WebContents>,
int error_code,
const base::string16& error_description,
bool was_ignored_by_handler) override;
void DidFailProvisionalLoad(content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
const base::string16& error_description,
bool was_ignored_by_handler) override;
void DidStartLoading() override;
void DidStopLoading() override;
void DidGetResourceResponseStart(
@@ -236,9 +265,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
void DidGetRedirectForResourceRequest(
content::RenderFrameHost* render_frame_host,
const content::ResourceRedirectDetails& details) override;
void DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) override;
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override;
bool OnMessageReceived(const IPC::Message& message) override;
void WebContentsDestroyed() override;
void NavigationEntryCommitted(
@@ -261,12 +289,6 @@ class WebContents : public mate::TrackableObject<WebContents>,
void DevToolsClosed() override;
private:
enum Type {
BROWSER_WINDOW, // Used by BrowserWindow.
WEB_VIEW, // Used by <webview>.
REMOTE, // Thin wrap around an existing WebContents.
};
AtomBrowserContext* GetBrowserContext() const;
uint32_t GetNextRequestId() {
@@ -289,7 +311,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
v8::Global<v8::Value> devtools_web_contents_;
v8::Global<v8::Value> debugger_;
scoped_ptr<WebViewGuestDelegate> guest_delegate_;
std::unique_ptr<WebViewGuestDelegate> guest_delegate_;
// The host webcontents that may contain this webcontents.
WebContents* embedder_;
@@ -303,6 +325,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
// Whether background throttling is disabled.
bool background_throttling_;
// Whether to enable devtools.
bool enable_devtools_;
DISALLOW_COPY_AND_ASSIGN(WebContents);
};

View File

@@ -0,0 +1,30 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_web_contents.h"
#import <Cocoa/Cocoa.h>
namespace atom {
namespace api {
bool WebContents::IsFocused() const {
auto view = web_contents()->GetRenderWidgetHostView();
if (!view) return false;
if (GetType() != BACKGROUND_PAGE) {
auto window = [web_contents()->GetNativeView() window];
// On Mac the render widget host view does not lose focus when the window
// loses focus so check if the top level window is the key window.
if (window && ![window isKeyWindow])
return false;
}
return view->HasFocus();
}
} // namespace api
} // namespace atom

View File

@@ -36,8 +36,10 @@ namespace atom {
namespace api {
WebRequest::WebRequest(AtomBrowserContext* browser_context)
WebRequest::WebRequest(v8::Isolate* isolate,
AtomBrowserContext* browser_context)
: browser_context_(browser_context) {
Init(isolate);
}
WebRequest::~WebRequest() {
@@ -81,13 +83,14 @@ void WebRequest::SetListener(Method method, Event type, mate::Arguments* args) {
mate::Handle<WebRequest> WebRequest::Create(
v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new WebRequest(browser_context));
return mate::CreateHandle(isolate, new WebRequest(isolate, browser_context));
}
// static
void WebRequest::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "WebRequest"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("onBeforeRequest",
&WebRequest::SetResponseListener<
AtomNetworkDelegate::kOnBeforeRequest>)

View File

@@ -21,13 +21,12 @@ class WebRequest : public mate::TrackableObject<WebRequest> {
static mate::Handle<WebRequest> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit WebRequest(AtomBrowserContext* browser_context);
~WebRequest();
WebRequest(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~WebRequest() override;
// C++ can not distinguish overloaded member function.
template<AtomNetworkDelegate::SimpleEvent type>

View File

@@ -2,9 +2,9 @@
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/web_view_manager.h"
#include "atom/common/native_mate_converters/content_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "content/public/browser/browser_context.h"
@@ -12,40 +12,14 @@
using atom::WebContentsPreferences;
namespace mate {
template<>
struct Converter<content::WebContents*> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
content::WebContents** out) {
atom::api::WebContents* contents;
if (!Converter<atom::api::WebContents*>::FromV8(isolate, val, &contents))
return false;
*out = contents->web_contents();
return true;
}
};
} // namespace mate
namespace {
atom::WebViewManager* GetWebViewManager(content::WebContents* web_contents) {
auto context = web_contents->GetBrowserContext();
if (context) {
auto manager = context->GetGuestManager();
return static_cast<atom::WebViewManager*>(manager);
} else {
return nullptr;
}
}
void AddGuest(int guest_instance_id,
int element_instance_id,
content::WebContents* embedder,
content::WebContents* guest_web_contents,
const base::DictionaryValue& options) {
auto manager = GetWebViewManager(embedder);
auto manager = atom::WebViewManager::GetWebViewManager(embedder);
if (manager)
manager->AddGuest(guest_instance_id, element_instance_id, embedder,
guest_web_contents);
@@ -54,7 +28,7 @@ void AddGuest(int guest_instance_id,
}
void RemoveGuest(content::WebContents* embedder, int guest_instance_id) {
auto manager = GetWebViewManager(embedder);
auto manager = atom::WebViewManager::GetWebViewManager(embedder);
if (manager)
manager->RemoveGuest(guest_instance_id);
}

View File

@@ -14,18 +14,24 @@
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/node_includes.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/common/content_switches.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "ui/gfx/geometry/rect.h"
#if defined(OS_WIN)
#if defined(TOOLKIT_VIEWS)
#include "atom/browser/native_window_views.h"
#endif
#if defined(OS_WIN)
#include "atom/browser/ui/win/taskbar_host.h"
#endif
#include "atom/common/node_includes.h"
#if defined(OS_WIN)
namespace mate {
@@ -52,66 +58,6 @@ namespace api {
namespace {
// This function is implemented in JavaScript
using DeprecatedOptionsCheckCallback =
base::Callback<std::string(v8::Local<v8::Value>)>;
DeprecatedOptionsCheckCallback g_deprecated_options_check;
void OnCapturePageDone(
v8::Isolate* isolate,
const base::Callback<void(const gfx::Image&)>& callback,
const SkBitmap& bitmap) {
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
callback.Run(gfx::Image::CreateFrom1xBitmap(bitmap));
}
// Converts min-width to minWidth, returns false if no conversion is needed.
bool TranslateOldKey(const std::string& key, std::string* new_key) {
if (key.find('-') == std::string::npos)
return false;
new_key->reserve(key.size());
bool next_upper_case = false;
for (char c : key) {
if (c == '-') {
next_upper_case = true;
} else if (next_upper_case) {
new_key->push_back(base::ToUpperASCII(c));
next_upper_case = false;
} else {
new_key->push_back(c);
}
}
return true;
}
// Converts min-width to minWidth recursively in the dictionary.
void TranslateOldOptions(v8::Isolate* isolate, v8::Local<v8::Object> options) {
auto context = isolate->GetCurrentContext();
auto maybe_keys = options->GetOwnPropertyNames(context);
if (maybe_keys.IsEmpty())
return;
std::vector<std::string> keys;
if (!mate::ConvertFromV8(isolate, maybe_keys.ToLocalChecked(), &keys))
return;
mate::Dictionary dict(isolate, options);
for (const auto& key : keys) {
v8::Local<v8::Value> value;
if (!dict.Get(key, &value)) // Shouldn't happen, but guard it anyway.
continue;
// Go recursively.
v8::Local<v8::Object> sub_options;
if (mate::ConvertFromV8(isolate, value, &sub_options))
TranslateOldOptions(isolate, sub_options);
// Translate key.
std::string new_key;
if (TranslateOldKey(key, &new_key)) {
dict.Set(new_key, value);
dict.Delete(key);
}
}
}
// Converts binary data to Buffer.
v8::Local<v8::Value> ToBuffer(v8::Isolate* isolate, void* val, int size) {
auto buffer = node::Buffer::Copy(isolate, static_cast<char*>(val), size);
@@ -124,43 +70,58 @@ v8::Local<v8::Value> ToBuffer(v8::Isolate* isolate, void* val, int size) {
} // namespace
Window::Window(v8::Isolate* isolate, const mate::Dictionary& options) {
// Be compatible with old style field names like min-width.
TranslateOldOptions(isolate, options.GetHandle());
Window::Window(v8::Isolate* isolate, v8::Local<v8::Object> wrapper,
const mate::Dictionary& options) {
// Use options.webPreferences to create WebContents.
mate::Dictionary web_preferences = mate::Dictionary::CreateEmpty(isolate);
options.Get(options::kWebPreferences, &web_preferences);
// Be compatible with old options which are now in web_preferences.
v8::Local<v8::Value> value;
if (options.Get(options::kNodeIntegration, &value))
web_preferences.Set(options::kNodeIntegration, value);
if (options.Get(options::kPreloadScript, &value))
web_preferences.Set(options::kPreloadScript, value);
if (options.Get(options::kZoomFactor, &value))
web_preferences.Set(options::kZoomFactor, value);
// Copy the backgroundColor to webContents.
v8::Local<v8::Value> value;
if (options.Get(options::kBackgroundColor, &value))
web_preferences.Set(options::kBackgroundColor, value);
v8::Local<v8::Value> transparent;
if (options.Get("transparent", &transparent))
web_preferences.Set("transparent", transparent);
// Creates the WebContents used by BrowserWindow.
auto web_contents = WebContents::Create(isolate, web_preferences);
web_contents_.Reset(isolate, web_contents.ToV8());
api_web_contents_ = web_contents.get();
// Keep a copy of the options for later use.
mate::Dictionary(isolate, web_contents->GetWrapper(isolate)).Set(
mate::Dictionary(isolate, web_contents->GetWrapper()).Set(
"browserWindowOptions", options);
// The parent window.
mate::Handle<Window> parent;
if (options.Get("parent", &parent))
parent_window_.Reset(isolate, parent.ToV8());
// Creates BrowserWindow.
window_.reset(NativeWindow::Create(web_contents->managed_web_contents(),
options));
window_.reset(NativeWindow::Create(
web_contents->managed_web_contents(),
options,
parent.IsEmpty() ? nullptr : parent->window_.get()));
web_contents->SetOwnerWindow(window_.get());
#if defined(TOOLKIT_VIEWS)
// Sets the window icon.
mate::Handle<NativeImage> icon;
if (options.Get(options::kIcon, &icon))
SetIcon(icon);
#endif
window_->InitFromOptions(options);
window_->AddObserver(this);
InitWith(isolate, wrapper);
AttachAsUserData(window_.get());
// We can only append this window to parent window's child windows after this
// window's JS wrapper gets initialized.
if (!parent.IsEmpty())
parent->child_windows_.Set(isolate, ID(), wrapper);
}
Window::~Window() {
@@ -176,6 +137,17 @@ void Window::WillCloseWindow(bool* prevent_default) {
*prevent_default = Emit("close");
}
void Window::WillDestroyNativeObject() {
// Close all child windows before closing current window.
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
for (v8::Local<v8::Value> value : child_windows_.Values(isolate())) {
mate::Handle<Window> child;
if (mate::ConvertFromV8(isolate(), value, &child))
child->window_->CloseImmediately();
}
}
void Window::OnWindowClosed() {
api_web_contents_->DestroyWebContents();
@@ -188,6 +160,8 @@ void Window::OnWindowClosed() {
Emit("closed");
RemoveFromParentChildWindows();
// Destroy the native class when window is closed.
base::MessageLoop::current()->PostTask(FROM_HERE, GetDestroyClosure());
}
@@ -208,6 +182,10 @@ void Window::OnWindowHide() {
Emit("hide");
}
void Window::OnReadyToShow() {
Emit("ready-to-show");
}
void Window::OnWindowMaximize() {
Emit("maximize");
}
@@ -252,6 +230,10 @@ void Window::OnWindowScrollTouchEnd() {
Emit("scroll-touch-end");
}
void Window::OnWindowScrollTouchEdge() {
Emit("scroll-touch-edge");
}
void Window::OnWindowSwipe(const std::string& direction) {
Emit("swipe", direction);
}
@@ -287,10 +269,9 @@ void Window::OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) {
#endif
// static
mate::Wrappable* Window::New(v8::Isolate* isolate, mate::Arguments* args) {
mate::WrappableBase* Window::New(mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate, "Cannot create BrowserWindow before app is ready")));
args->ThrowError("Cannot create BrowserWindow before app is ready");
return nullptr;
}
@@ -301,17 +282,10 @@ mate::Wrappable* Window::New(v8::Isolate* isolate, mate::Arguments* args) {
mate::Dictionary options;
if (!(args->Length() == 1 && args->GetNext(&options))) {
options = mate::Dictionary::CreateEmpty(isolate);
options = mate::Dictionary::CreateEmpty(args->isolate());
}
std::string deprecation_message = g_deprecated_options_check.Run(
options.GetHandle());
if (deprecation_message.length() > 0) {
args->ThrowError(deprecation_message);
return nullptr;
}
return new Window(isolate, options);
return new Window(args->isolate(), args->GetThis(), options);
}
void Window::Close() {
@@ -335,6 +309,10 @@ void Window::Show() {
}
void Window::ShowInactive() {
// This method doesn't make sense for modal window..
if (IsModal())
return;
window_->ShowInactive();
}
@@ -346,6 +324,10 @@ bool Window::IsVisible() {
return window_->IsVisible();
}
bool Window::IsEnabled() {
return window_->IsEnabled();
}
void Window::Maximize() {
window_->Maximize();
}
@@ -388,6 +370,16 @@ gfx::Rect Window::GetBounds() {
return window_->GetBounds();
}
void Window::SetContentBounds(const gfx::Rect& bounds, mate::Arguments* args) {
bool animate = false;
args->GetNext(&animate);
window_->SetContentBounds(bounds, animate);
}
gfx::Rect Window::GetContentBounds() {
return window_->GetContentBounds();
}
void Window::SetSize(int width, int height, mate::Arguments* args) {
bool animate = false;
args->GetNext(&animate);
@@ -440,8 +432,10 @@ std::vector<int> Window::GetMaximumSize() {
return result;
}
void Window::SetSheetOffset(double offset) {
window_->SetSheetOffset(offset);
void Window::SetSheetOffset(double offsetY, mate::Arguments* args) {
double offsetX = 0.0;
args->GetNext(&offsetX);
window_->SetSheetOffset(offsetX, offsetY);
}
void Window::SetResizable(bool resizable) {
@@ -586,23 +580,32 @@ void Window::SetIgnoreMouseEvents(bool ignore) {
return window_->SetIgnoreMouseEvents(ignore);
}
void Window::CapturePage(mate::Arguments* args) {
gfx::Rect rect;
base::Callback<void(const gfx::Image&)> callback;
if (!(args->Length() == 1 && args->GetNext(&callback)) &&
!(args->Length() == 2 && args->GetNext(&rect)
&& args->GetNext(&callback))) {
args->ThrowError();
return;
}
window_->CapturePage(
rect, base::Bind(&OnCapturePageDone, args->isolate(), callback));
void Window::SetContentProtection(bool enable) {
return window_->SetContentProtection(enable);
}
void Window::SetProgressBar(double progress) {
window_->SetProgressBar(progress);
void Window::SetFocusable(bool focusable) {
return window_->SetFocusable(focusable);
}
void Window::SetProgressBar(double progress, mate::Arguments* args) {
mate::Dictionary options;
std::string mode;
NativeWindow::ProgressState state = NativeWindow::PROGRESS_NORMAL;
args->GetNext(&options) && options.Get("mode", &mode);
if (mode == "error") {
state = NativeWindow::PROGRESS_ERROR;
} else if (mode == "paused") {
state = NativeWindow::PROGRESS_PAUSED;
} else if (mode == "indeterminate") {
state = NativeWindow::PROGRESS_INDETERMINATE;
} else if (mode == "none") {
state = NativeWindow::PROGRESS_NONE;
}
window_->SetProgressBar(progress, state);
}
void Window::SetOverlayIcon(const gfx::Image& overlay,
@@ -619,7 +622,7 @@ bool Window::SetThumbarButtons(mate::Arguments* args) {
}
auto window = static_cast<NativeWindowViews*>(window_.get());
return window->taskbar_host().SetThumbarButtons(
window->GetAcceleratedWidget(), buttons);
window_->GetAcceleratedWidget(), buttons);
#else
return false;
#endif
@@ -678,11 +681,30 @@ bool Window::IsWindowMessageHooked(UINT message) {
void Window::UnhookAllWindowMessages() {
messages_callback_map_.clear();
}
bool Window::SetThumbnailClip(const gfx::Rect& region) {
auto window = static_cast<NativeWindowViews*>(window_.get());
return window->taskbar_host().SetThumbnailClip(
window_->GetAcceleratedWidget(), region);
}
bool Window::SetThumbnailToolTip(const std::string& tooltip) {
auto window = static_cast<NativeWindowViews*>(window_.get());
return window->taskbar_host().SetThumbnailToolTip(
window_->GetAcceleratedWidget(), tooltip);
}
#endif
#if defined(OS_MACOSX)
void Window::ShowDefinitionForSelection() {
window_->ShowDefinitionForSelection();
#if defined(TOOLKIT_VIEWS)
void Window::SetIcon(mate::Handle<NativeImage> icon) {
#if defined(OS_WIN)
static_cast<NativeWindowViews*>(window_.get())->SetIcon(
icon->GetHICON(GetSystemMetrics(SM_CXSMICON)),
icon->GetHICON(GetSystemMetrics(SM_CXICON)));
#elif defined(USE_X11)
static_cast<NativeWindowViews*>(window_.get())->SetIcon(
icon->image().AsImageSkia());
#endif
}
#endif
@@ -692,6 +714,42 @@ void Window::SetAspectRatio(double aspect_ratio, mate::Arguments* args) {
window_->SetAspectRatio(aspect_ratio, extra_size);
}
void Window::SetParentWindow(v8::Local<v8::Value> value,
mate::Arguments* args) {
if (IsModal()) {
args->ThrowError("Can not be called for modal window");
return;
}
mate::Handle<Window> parent;
if (value->IsNull()) {
RemoveFromParentChildWindows();
parent_window_.Reset();
window_->SetParentWindow(nullptr);
} else if (mate::ConvertFromV8(isolate(), value, &parent)) {
parent_window_.Reset(isolate(), value);
window_->SetParentWindow(parent->window_.get());
parent->child_windows_.Set(isolate(), ID(), GetWrapper());
} else {
args->ThrowError("Must pass BrowserWindow instance or null");
}
}
v8::Local<v8::Value> Window::GetParentWindow() const {
if (parent_window_.IsEmpty())
return v8::Null(isolate());
else
return v8::Local<v8::Value>::New(isolate(), parent_window_);
}
std::vector<v8::Local<v8::Object>> Window::GetChildWindows() const {
return child_windows_.Values(isolate());
}
bool Window::IsModal() const {
return window_->is_modal();
}
v8::Local<v8::Value> Window::GetNativeWindowHandle() {
gfx::AcceleratedWidget handle = window_->GetAcceleratedWidget();
return ToBuffer(
@@ -717,10 +775,22 @@ v8::Local<v8::Value> Window::WebContents(v8::Isolate* isolate) {
return v8::Local<v8::Value>::New(isolate, web_contents_);
}
void Window::RemoveFromParentChildWindows() {
if (parent_window_.IsEmpty())
return;
mate::Handle<Window> parent;
if (!mate::ConvertFromV8(isolate(), GetParentWindow(), &parent))
return;
parent->child_windows_.Remove(ID());
}
// static
void Window::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype) {
mate::ObjectTemplateBuilder(isolate, prototype)
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "BrowserWindow"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("close", &Window::Close)
.SetMethod("focus", &Window::Focus)
@@ -730,6 +800,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("showInactive", &Window::ShowInactive)
.SetMethod("hide", &Window::Hide)
.SetMethod("isVisible", &Window::IsVisible)
.SetMethod("isEnabled", &Window::IsEnabled)
.SetMethod("maximize", &Window::Maximize)
.SetMethod("unmaximize", &Window::Unmaximize)
.SetMethod("isMaximized", &Window::IsMaximized)
@@ -739,11 +810,19 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setFullScreen", &Window::SetFullScreen)
.SetMethod("isFullScreen", &Window::IsFullscreen)
.SetMethod("setAspectRatio", &Window::SetAspectRatio)
#if !defined(OS_WIN)
.SetMethod("setParentWindow", &Window::SetParentWindow)
#endif
.SetMethod("getParentWindow", &Window::GetParentWindow)
.SetMethod("getChildWindows", &Window::GetChildWindows)
.SetMethod("isModal", &Window::IsModal)
.SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
.SetMethod("getBounds", &Window::GetBounds)
.SetMethod("setBounds", &Window::SetBounds)
.SetMethod("getSize", &Window::GetSize)
.SetMethod("setSize", &Window::SetSize)
.SetMethod("getContentBounds", &Window::GetContentBounds)
.SetMethod("setContentBounds", &Window::SetContentBounds)
.SetMethod("getContentSize", &Window::GetContentSize)
.SetMethod("setContentSize", &Window::SetContentSize)
.SetMethod("setMinimumSize", &Window::SetMinimumSize)
@@ -782,10 +861,11 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setDocumentEdited", &Window::SetDocumentEdited)
.SetMethod("isDocumentEdited", &Window::IsDocumentEdited)
.SetMethod("setIgnoreMouseEvents", &Window::SetIgnoreMouseEvents)
.SetMethod("setContentProtection", &Window::SetContentProtection)
.SetMethod("setFocusable", &Window::SetFocusable)
.SetMethod("focusOnWebView", &Window::FocusOnWebView)
.SetMethod("blurWebView", &Window::BlurWebView)
.SetMethod("isWebViewFocused", &Window::IsWebViewFocused)
.SetMethod("capturePage", &Window::CapturePage)
.SetMethod("setProgressBar", &Window::SetProgressBar)
.SetMethod("setOverlayIcon", &Window::SetOverlayIcon)
.SetMethod("setThumbarButtons", &Window::SetThumbarButtons)
@@ -803,10 +883,11 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isWindowMessageHooked", &Window::IsWindowMessageHooked)
.SetMethod("unhookWindowMessage", &Window::UnhookWindowMessage)
.SetMethod("unhookAllWindowMessages", &Window::UnhookAllWindowMessages)
.SetMethod("setThumbnailClip", &Window::SetThumbnailClip)
.SetMethod("setThumbnailToolTip", &Window::SetThumbnailToolTip)
#endif
#if defined(OS_MACOSX)
.SetMethod("showDefinitionForSelection",
&Window::ShowDefinitionForSelection)
#if defined(TOOLKIT_VIEWS)
.SetMethod("setIcon", &Window::SetIcon)
#endif
.SetProperty("id", &Window::ID)
.SetProperty("webContents", &Window::WebContents);
@@ -817,15 +898,11 @@ v8::Local<v8::Value> Window::From(v8::Isolate* isolate,
NativeWindow* native_window) {
auto existing = TrackableObject::FromWrappedClass(isolate, native_window);
if (existing)
return existing->GetWrapper(isolate);
return existing->GetWrapper();
else
return v8::Null(isolate);
}
void SetDeprecatedOptionsCheck(const DeprecatedOptionsCheckCallback& callback) {
g_deprecated_options_check = callback;
}
} // namespace api
} // namespace atom
@@ -838,9 +915,10 @@ using atom::api::Window;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
v8::Isolate* isolate = context->GetIsolate();
v8::Local<v8::Function> constructor = mate::CreateConstructor<Window>(
isolate, "BrowserWindow", base::Bind(&Window::New));
mate::Dictionary browser_window(isolate, constructor);
Window::SetConstructor(isolate, base::Bind(&Window::New));
mate::Dictionary browser_window(
isolate, Window::GetConstructor(isolate)->GetFunction());
browser_window.SetMethod("fromId",
&mate::TrackableObject<Window>::FromWeakMapID);
browser_window.SetMethod("getAllWindows",
@@ -848,8 +926,6 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
mate::Dictionary dict(isolate, exports);
dict.Set("BrowserWindow", browser_window);
dict.SetMethod("_setDeprecatedOptionsCheck",
&atom::api::SetDeprecatedOptionsCheck);
}
} // namespace

View File

@@ -6,15 +6,17 @@
#define ATOM_BROWSER_API_ATOM_API_WINDOW_H_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/memory/scoped_ptr.h"
#include "ui/gfx/image/image.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/native_window.h"
#include "atom/browser/native_window_observer.h"
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/key_weak_map.h"
#include "native_mate/handle.h"
#include "ui/gfx/image/image.h"
class GURL;
@@ -38,10 +40,10 @@ class WebContents;
class Window : public mate::TrackableObject<Window>,
public NativeWindowObserver {
public:
static mate::Wrappable* New(v8::Isolate* isolate, mate::Arguments* args);
static mate::WrappableBase* New(mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::ObjectTemplate> prototype);
v8::Local<v8::FunctionTemplate> prototype);
// Returns the BrowserWindow object from |native_window|.
static v8::Local<v8::Value> From(v8::Isolate* isolate,
@@ -50,16 +52,19 @@ class Window : public mate::TrackableObject<Window>,
NativeWindow* window() const { return window_.get(); }
protected:
Window(v8::Isolate* isolate, const mate::Dictionary& options);
virtual ~Window();
Window(v8::Isolate* isolate, v8::Local<v8::Object> wrapper,
const mate::Dictionary& options);
~Window() override;
// NativeWindowObserver:
void WillCloseWindow(bool* prevent_default) override;
void WillDestroyNativeObject() override;
void OnWindowClosed() override;
void OnWindowBlur() override;
void OnWindowFocus() override;
void OnWindowShow() override;
void OnWindowHide() override;
void OnReadyToShow() override;
void OnWindowMaximize() override;
void OnWindowUnmaximize() override;
void OnWindowMinimize() override;
@@ -69,6 +74,7 @@ class Window : public mate::TrackableObject<Window>,
void OnWindowMoved() override;
void OnWindowScrollTouchBegin() override;
void OnWindowScrollTouchEnd() override;
void OnWindowScrollTouchEdge() override;
void OnWindowSwipe(const std::string& direction) override;
void OnWindowEnterFullScreen() override;
void OnWindowLeaveFullScreen() override;
@@ -92,6 +98,7 @@ class Window : public mate::TrackableObject<Window>,
void ShowInactive();
void Hide();
bool IsVisible();
bool IsEnabled();
void Maximize();
void Unmaximize();
bool IsMaximized();
@@ -106,11 +113,13 @@ class Window : public mate::TrackableObject<Window>,
std::vector<int> GetSize();
void SetContentSize(int width, int height, mate::Arguments* args);
std::vector<int> GetContentSize();
void SetContentBounds(const gfx::Rect& bounds, mate::Arguments* args);
gfx::Rect GetContentBounds();
void SetMinimumSize(int width, int height);
std::vector<int> GetMinimumSize();
void SetMaximumSize(int width, int height);
std::vector<int> GetMaximumSize();
void SetSheetOffset(double offset);
void SetSheetOffset(double offsetY, mate::Arguments* args);
void SetResizable(bool resizable);
bool IsResizable();
void SetMovable(bool movable);
@@ -145,8 +154,9 @@ class Window : public mate::TrackableObject<Window>,
void SetDocumentEdited(bool edited);
bool IsDocumentEdited();
void SetIgnoreMouseEvents(bool ignore);
void CapturePage(mate::Arguments* args);
void SetProgressBar(double progress);
void SetContentProtection(bool enable);
void SetFocusable(bool focusable);
void SetProgressBar(double progress, mate::Arguments* args);
void SetOverlayIcon(const gfx::Image& overlay,
const std::string& description);
bool SetThumbarButtons(mate::Arguments* args);
@@ -156,6 +166,10 @@ class Window : public mate::TrackableObject<Window>,
void SetMenuBarVisibility(bool visible);
bool IsMenuBarVisible();
void SetAspectRatio(double aspect_ratio, mate::Arguments* args);
void SetParentWindow(v8::Local<v8::Value> value, mate::Arguments* args);
v8::Local<v8::Value> GetParentWindow() const;
std::vector<v8::Local<v8::Object>> GetChildWindows() const;
bool IsModal() const;
v8::Local<v8::Value> GetNativeWindowHandle();
#if defined(OS_WIN)
@@ -166,10 +180,12 @@ class Window : public mate::TrackableObject<Window>,
bool IsWindowMessageHooked(UINT message);
void UnhookWindowMessage(UINT message);
void UnhookAllWindowMessages();
bool SetThumbnailClip(const gfx::Rect& region);
bool SetThumbnailToolTip(const std::string& tooltip);
#endif
#if defined(OS_MACOSX)
void ShowDefinitionForSelection();
#if defined(TOOLKIT_VIEWS)
void SetIcon(mate::Handle<NativeImage> icon);
#endif
void SetVisibleOnAllWorkspaces(bool visible);
@@ -178,6 +194,9 @@ class Window : public mate::TrackableObject<Window>,
int32_t ID() const;
v8::Local<v8::Value> WebContents(v8::Isolate* isolate);
// Remove this window from parent window's |child_windows_|.
void RemoveFromParentChildWindows();
#if defined(OS_WIN)
typedef std::map<UINT, MessageCallback> MessageCallbackMap;
MessageCallbackMap messages_callback_map_;
@@ -185,10 +204,12 @@ class Window : public mate::TrackableObject<Window>,
v8::Global<v8::Value> web_contents_;
v8::Global<v8::Value> menu_;
v8::Global<v8::Value> parent_window_;
KeyWeakMap<int> child_windows_;
api::WebContents* api_web_contents_;
scoped_ptr<NativeWindow> window_;
std::unique_ptr<NativeWindow> window_;
DISALLOW_COPY_AND_ASSIGN(Window);
};

View File

@@ -11,31 +11,15 @@
namespace mate {
namespace {
v8::Persistent<v8::ObjectTemplate> template_;
} // namespace
Event::Event()
: sender_(NULL),
message_(NULL) {
Event::Event(v8::Isolate* isolate)
: sender_(nullptr),
message_(nullptr) {
Init(isolate);
}
Event::~Event() {
}
ObjectTemplateBuilder Event::GetObjectTemplateBuilder(v8::Isolate* isolate) {
if (template_.IsEmpty())
template_.Reset(isolate, ObjectTemplateBuilder(isolate)
.SetMethod("preventDefault", &Event::PreventDefault)
.SetMethod("sendReply", &Event::SendReply)
.Build());
return ObjectTemplateBuilder(
isolate, v8::Local<v8::ObjectTemplate>::New(isolate, template_));
}
void Event::SetSenderAndMessage(content::WebContents* sender,
IPC::Message* message) {
DCHECK(!sender_);
@@ -47,26 +31,38 @@ void Event::SetSenderAndMessage(content::WebContents* sender,
}
void Event::WebContentsDestroyed() {
sender_ = NULL;
message_ = NULL;
sender_ = nullptr;
message_ = nullptr;
}
void Event::PreventDefault(v8::Isolate* isolate) {
GetWrapper(isolate)->Set(StringToV8(isolate, "defaultPrevented"),
GetWrapper()->Set(StringToV8(isolate, "defaultPrevented"),
v8::True(isolate));
}
bool Event::SendReply(const base::string16& json) {
if (message_ == NULL || sender_ == NULL)
if (message_ == nullptr || sender_ == nullptr)
return false;
AtomViewHostMsg_Message_Sync::WriteReplyParams(message_, json);
return sender_->Send(message_);
bool success = sender_->Send(message_);
message_ = nullptr;
sender_ = nullptr;
return success;
}
// static
Handle<Event> Event::Create(v8::Isolate* isolate) {
return CreateHandle(isolate, new Event);
return mate::CreateHandle(isolate, new Event(isolate));
}
// static
void Event::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Event"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("preventDefault", &Event::PreventDefault)
.SetMethod("sendReply", &Event::SendReply);
}
} // namespace mate

View File

@@ -6,8 +6,8 @@
#define ATOM_BROWSER_API_EVENT_H_
#include "content/public/browser/web_contents_observer.h"
#include "native_mate/wrappable.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable.h"
namespace IPC {
class Message;
@@ -15,11 +15,14 @@ class Message;
namespace mate {
class Event : public Wrappable,
class Event : public Wrappable<Event>,
public content::WebContentsObserver {
public:
static Handle<Event> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Pass the sender and message to be replied.
void SetSenderAndMessage(content::WebContents* sender, IPC::Message* message);
@@ -30,11 +33,8 @@ class Event : public Wrappable,
bool SendReply(const base::string16& json);
protected:
Event();
virtual ~Event();
// Wrappable implementations:
ObjectTemplateBuilder GetObjectTemplateBuilder(v8::Isolate* isolate) override;
explicit Event(v8::Isolate* isolate);
~Event() override;
// content::WebContentsObserver implementations:
void WebContentsDestroyed() override;

View File

@@ -8,6 +8,9 @@
#include "native_mate/arguments.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "ui/events/event_constants.h"
#include "atom/common/node_includes.h"
namespace mate {
@@ -34,11 +37,13 @@ v8::Local<v8::Object> CreateEventObject(v8::Isolate* isolate) {
} // namespace
EventEmitter::EventEmitter() {
}
namespace internal {
v8::Local<v8::Object> EventEmitter::CreateJSEvent(
v8::Isolate* isolate, content::WebContents* sender, IPC::Message* message) {
v8::Local<v8::Object> CreateJSEvent(
v8::Isolate* isolate,
v8::Local<v8::Object> object,
content::WebContents* sender,
IPC::Message* message) {
v8::Local<v8::Object> event;
bool use_native_event = sender && message;
@@ -49,16 +54,29 @@ v8::Local<v8::Object> EventEmitter::CreateJSEvent(
} else {
event = CreateEventObject(isolate);
}
mate::Dictionary(isolate, event).Set("sender", GetWrapper(isolate));
mate::Dictionary(isolate, event).Set("sender", object);
return event;
}
v8::Local<v8::Object> EventEmitter::CreateCustomEvent(
v8::Isolate* isolate, v8::Local<v8::Object> custom_event) {
v8::Local<v8::Object> CreateCustomEvent(
v8::Isolate* isolate,
v8::Local<v8::Object> object,
v8::Local<v8::Object> custom_event) {
v8::Local<v8::Object> event = CreateEventObject(isolate);
(void)event->SetPrototype(custom_event->CreationContext(), custom_event);
mate::Dictionary(isolate, event).Set("sender", GetWrapper(isolate));
mate::Dictionary(isolate, event).Set("sender", object);
return event;
}
v8::Local<v8::Object> CreateEventFromFlags(v8::Isolate* isolate, int flags) {
mate::Dictionary obj = mate::Dictionary::CreateEmpty(isolate);
obj.Set("shiftKey", static_cast<bool>(flags & ui::EF_SHIFT_DOWN));
obj.Set("ctrlKey", static_cast<bool>(flags & ui::EF_CONTROL_DOWN));
obj.Set("altKey", static_cast<bool>(flags & ui::EF_ALT_DOWN));
obj.Set("metaKey", static_cast<bool>(flags & ui::EF_COMMAND_DOWN));
return obj.GetHandle();
}
} // namespace internal
} // namespace mate

View File

@@ -20,17 +20,49 @@ class Message;
namespace mate {
namespace internal {
v8::Local<v8::Object> CreateJSEvent(v8::Isolate* isolate,
v8::Local<v8::Object> object,
content::WebContents* sender,
IPC::Message* message);
v8::Local<v8::Object> CreateCustomEvent(
v8::Isolate* isolate,
v8::Local<v8::Object> object,
v8::Local<v8::Object> event);
v8::Local<v8::Object> CreateEventFromFlags(v8::Isolate* isolate, int flags);
} // namespace internal
// Provide helperers to emit event in JavaScript.
class EventEmitter : public Wrappable {
template<typename T>
class EventEmitter : public Wrappable<T> {
public:
typedef std::vector<v8::Local<v8::Value>> ValueArray;
// Make the convinient methods visible:
// https://isocpp.org/wiki/faq/templates#nondependent-name-lookup-members
v8::Local<v8::Object> GetWrapper() { return Wrappable<T>::GetWrapper(); }
v8::Isolate* isolate() const { return Wrappable<T>::isolate(); }
// this.emit(name, event, args...);
template<typename... Args>
bool EmitCustomEvent(const base::StringPiece& name,
v8::Local<v8::Object> event,
const Args&... args) {
return EmitWithEvent(name, CreateCustomEvent(isolate(), event), args...);
return EmitWithEvent(
name,
internal::CreateCustomEvent(isolate(), GetWrapper(), event), args...);
}
// this.emit(name, new Event(flags), args...);
template<typename... Args>
bool EmitWithFlags(const base::StringPiece& name,
int flags,
const Args&... args) {
return EmitCustomEvent(
name,
internal::CreateEventFromFlags(isolate(), flags), args...);
}
// this.emit(name, new Event(), args...);
@@ -47,12 +79,13 @@ class EventEmitter : public Wrappable {
const Args&... args) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Object> event = CreateJSEvent(isolate(), sender, message);
v8::Local<v8::Object> event = internal::CreateJSEvent(
isolate(), GetWrapper(), sender, message);
return EmitWithEvent(name, event, args...);
}
protected:
EventEmitter();
EventEmitter() {}
private:
// this.emit(name, event, args...);
@@ -62,17 +95,11 @@ class EventEmitter : public Wrappable {
const Args&... args) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitEvent(isolate(), GetWrapper(isolate()), name, event, args...);
EmitEvent(isolate(), GetWrapper(), name, event, args...);
return event->Get(
StringToV8(isolate(), "defaultPrevented"))->BooleanValue();
}
v8::Local<v8::Object> CreateJSEvent(v8::Isolate* isolate,
content::WebContents* sender,
IPC::Message* message);
v8::Local<v8::Object> CreateCustomEvent(
v8::Isolate* isolate, v8::Local<v8::Object> event);
DISALLOW_COPY_AND_ASSIGN(EventEmitter);
};

View File

@@ -4,9 +4,13 @@
#include "atom/browser/api/frame_subscriber.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/bind.h"
#include "atom/common/node_includes.h"
#include "content/public/browser/render_widget_host.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "atom/common/node_includes.h"
namespace atom {
@@ -14,12 +18,17 @@ namespace api {
FrameSubscriber::FrameSubscriber(v8::Isolate* isolate,
content::RenderWidgetHostView* view,
const FrameCaptureCallback& callback)
: isolate_(isolate), view_(view), callback_(callback), weak_factory_(this) {
const FrameCaptureCallback& callback,
bool only_dirty)
: isolate_(isolate),
view_(view),
callback_(callback),
only_dirty_(only_dirty),
weak_factory_(this) {
}
bool FrameSubscriber::ShouldCaptureFrame(
const gfx::Rect& damage_rect,
const gfx::Rect& dirty_rect,
base::TimeTicks present_time,
scoped_refptr<media::VideoFrame>* storage,
DeliverFrameCallback* callback) {
@@ -27,21 +36,39 @@ bool FrameSubscriber::ShouldCaptureFrame(
if (!view_ || !host)
return false;
const auto size = view_->GetVisibleViewportSize();
if (dirty_rect.IsEmpty())
return false;
gfx::Rect rect = gfx::Rect(view_->GetVisibleViewportSize());
if (only_dirty_)
rect = dirty_rect;
gfx::Size view_size = rect.size();
gfx::Size bitmap_size = view_size;
const gfx::NativeView native_view = view_->GetNativeView();
const float scale =
display::Screen::GetScreen()->GetDisplayNearestWindow(native_view)
.device_scale_factor();
if (scale > 1.0f)
bitmap_size = gfx::ScaleToCeiledSize(view_size, scale);
rect = gfx::Rect(rect.origin(), bitmap_size);
host->CopyFromBackingStore(
gfx::Rect(size),
size,
rect,
rect.size(),
base::Bind(&FrameSubscriber::OnFrameDelivered,
weak_factory_.GetWeakPtr(), callback_),
weak_factory_.GetWeakPtr(), callback_, rect),
kBGRA_8888_SkColorType);
return false;
}
void FrameSubscriber::OnFrameDelivered(const FrameCaptureCallback& callback,
const SkBitmap& bitmap, content::ReadbackResponse response) {
if (bitmap.computeSize64() == 0)
const gfx::Rect& damage_rect,
const SkBitmap& bitmap,
content::ReadbackResponse response) {
if (response != content::ReadbackResponse::READBACK_SUCCESS)
return;
v8::Locker locker(isolate_);
@@ -57,7 +84,10 @@ void FrameSubscriber::OnFrameDelivered(const FrameCaptureCallback& callback,
reinterpret_cast<uint8_t*>(node::Buffer::Data(buffer.ToLocalChecked())),
rgb_arr_size);
callback_.Run(buffer.ToLocalChecked());
v8::Local<v8::Value> damage =
mate::Converter<gfx::Rect>::ToV8(isolate_, damage_rect);
callback_.Run(buffer.ToLocalChecked(), damage);
}
} // namespace api

View File

@@ -7,9 +7,9 @@
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/readback_types.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/render_widget_host_view_frame_subscriber.h"
#include "content/public/browser/readback_types.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/geometry/size.h"
#include "v8/include/v8.h"
@@ -20,11 +20,13 @@ namespace api {
class FrameSubscriber : public content::RenderWidgetHostViewFrameSubscriber {
public:
using FrameCaptureCallback = base::Callback<void(v8::Local<v8::Value>)>;
using FrameCaptureCallback =
base::Callback<void(v8::Local<v8::Value>, v8::Local<v8::Value>)>;
FrameSubscriber(v8::Isolate* isolate,
content::RenderWidgetHostView* view,
const FrameCaptureCallback& callback);
const FrameCaptureCallback& callback,
bool only_dirty);
bool ShouldCaptureFrame(const gfx::Rect& damage_rect,
base::TimeTicks present_time,
@@ -33,11 +35,14 @@ class FrameSubscriber : public content::RenderWidgetHostViewFrameSubscriber {
private:
void OnFrameDelivered(const FrameCaptureCallback& callback,
const SkBitmap& bitmap, content::ReadbackResponse response);
const gfx::Rect& damage_rect,
const SkBitmap& bitmap,
content::ReadbackResponse response);
v8::Isolate* isolate_;
content::RenderWidgetHostView* view_;
FrameCaptureCallback callback_;
bool only_dirty_;
base::WeakPtrFactory<FrameSubscriber> weak_factory_;

View File

@@ -73,11 +73,6 @@ void SavePageHandler::Destroy(content::DownloadItem* item) {
delete this;
}
// static
bool SavePageHandler::IsSavePageTypes(const std::string& type) {
return type == "multipart/related" || type == "text/html";
}
} // namespace api
} // namespace atom

View File

@@ -37,8 +37,6 @@ class SavePageHandler : public content::DownloadManager::Observer,
bool Handle(const base::FilePath& full_path,
const content::SavePageType& save_type);
static bool IsSavePageTypes(const std::string& type);
private:
void Destroy(content::DownloadItem* item);

View File

@@ -29,7 +29,7 @@ class IDUserData : public base::SupportsUserData::Data {
} // namespace
TrackableObjectBase::TrackableObjectBase()
: weak_map_id_(0), wrapped_(nullptr), weak_factory_(this) {
: weak_map_id_(0), weak_factory_(this) {
cleanup_ = RegisterDestructionCallback(GetDestroyClosure());
}
@@ -37,15 +37,6 @@ TrackableObjectBase::~TrackableObjectBase() {
cleanup_.Run();
}
void TrackableObjectBase::AfterInit(v8::Isolate* isolate) {
if (wrapped_)
AttachAsUserData(wrapped_);
}
void TrackableObjectBase::MarkDestroyed() {
GetWrapper(isolate())->SetAlignedPointerInInternalField(0, nullptr);
}
base::Closure TrackableObjectBase::GetDestroyClosure() {
return base::Bind(&TrackableObjectBase::Destroy, weak_factory_.GetWeakPtr());
}
@@ -55,14 +46,7 @@ void TrackableObjectBase::Destroy() {
}
void TrackableObjectBase::AttachAsUserData(base::SupportsUserData* wrapped) {
if (weak_map_id_ != 0) {
wrapped->SetUserData(kTrackedObjectKey, new IDUserData(weak_map_id_));
wrapped_ = nullptr;
} else {
// If the TrackableObjectBase is not ready yet then delay SetUserData until
// AfterInit is called.
wrapped_ = wrapped;
}
wrapped->SetUserData(kTrackedObjectKey, new IDUserData(weak_map_id_));
}
// static

View File

@@ -8,9 +8,8 @@
#include <vector>
#include "atom/browser/api/event_emitter.h"
#include "atom/common/id_weak_map.h"
#include "atom/common/key_weak_map.h"
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "native_mate/object_template_builder.h"
@@ -21,7 +20,7 @@ class SupportsUserData;
namespace mate {
// Users should use TrackableObject instead.
class TrackableObjectBase : public mate::EventEmitter {
class TrackableObjectBase {
public:
TrackableObjectBase();
@@ -32,13 +31,7 @@ class TrackableObjectBase : public mate::EventEmitter {
void AttachAsUserData(base::SupportsUserData* wrapped);
protected:
~TrackableObjectBase() override;
// mate::Wrappable:
void AfterInit(v8::Isolate* isolate) override;
// Mark the JS object as destroyed.
void MarkDestroyed();
virtual ~TrackableObjectBase();
// Returns a closure that can destroy the native class.
base::Closure GetDestroyClosure();
@@ -51,7 +44,6 @@ class TrackableObjectBase : public mate::EventEmitter {
static base::Closure RegisterDestructionCallback(const base::Closure& c);
int32_t weak_map_id_;
base::SupportsUserData* wrapped_;
private:
void Destroy();
@@ -65,8 +57,14 @@ class TrackableObjectBase : public mate::EventEmitter {
// All instances of TrackableObject will be kept in a weak map and can be got
// from its ID.
template<typename T>
class TrackableObject : public TrackableObjectBase {
class TrackableObject : public TrackableObjectBase,
public mate::EventEmitter<T> {
public:
// Mark the JS object as destroyed.
void MarkDestroyed() {
Wrappable<T>::GetWrapper()->SetAlignedPointerInInternalField(0, nullptr);
}
// Finds out the TrackableObject from its ID in weak map.
static T* FromWeakMapID(v8::Isolate* isolate, int32_t id) {
if (!weak_map_)
@@ -106,50 +104,32 @@ class TrackableObject : public TrackableObjectBase {
protected:
TrackableObject() {}
~TrackableObject() override {
RemoveFromWeakMap();
}
void AfterInit(v8::Isolate* isolate) override {
void InitWith(v8::Isolate* isolate, v8::Local<v8::Object> wrapper) override {
WrappableBase::InitWith(isolate, wrapper);
if (!weak_map_) {
weak_map_.reset(new atom::IDWeakMap);
RegisterDestructionCallback(
base::Bind(&TrackableObject<T>::ReleaseAllWeakReferences));
weak_map_ = new atom::KeyWeakMap<int32_t>;
}
weak_map_id_ = weak_map_->Add(isolate, GetWrapper(isolate));
TrackableObjectBase::AfterInit(isolate);
weak_map_id_ = ++next_id_;
weak_map_->Set(isolate, weak_map_id_, wrapper);
}
private:
// mate::Wrappable:
mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override {
if (template_.IsEmpty()) {
auto templ = v8::ObjectTemplate::New(isolate);
T::BuildPrototype(isolate, templ);
template_.Reset(isolate, templ);
}
return ObjectTemplateBuilder(
isolate, v8::Local<v8::ObjectTemplate>::New(isolate, template_));
}
// Releases all weak references in weak map, called when app is terminating.
static void ReleaseAllWeakReferences() {
weak_map_.reset();
}
static v8::Persistent<v8::ObjectTemplate> template_;
static scoped_ptr<atom::IDWeakMap> weak_map_;
static int32_t next_id_;
static atom::KeyWeakMap<int32_t>* weak_map_; // leaked on purpose
DISALLOW_COPY_AND_ASSIGN(TrackableObject);
};
template<typename T>
v8::Persistent<v8::ObjectTemplate> TrackableObject<T>::template_;
int32_t TrackableObject<T>::next_id_ = 0;
template<typename T>
scoped_ptr<atom::IDWeakMap> TrackableObject<T>::weak_map_;
atom::KeyWeakMap<int32_t>* TrackableObject<T>::weak_map_ = nullptr;
} // namespace mate

View File

@@ -4,23 +4,67 @@
#include "atom/browser/atom_access_token_store.h"
#include <string>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/common/google_api_key.h"
#include "base/environment.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/geolocation_provider.h"
using content::BrowserThread;
namespace atom {
namespace {
// Notice that we just combined the api key with the url together here, because
// if we use the standard {url: key} format Chromium would override our key with
// the predefined one in common.gypi of libchromiumcontent, which is empty.
const char* kGeolocationProviderURL =
"https://www.googleapis.com/geolocation/v1/geolocate?key="
GOOGLEAPIS_API_KEY;
// Loads access tokens and other necessary data on the UI thread, and
// calls back to the originator on the originating thread.
class TokenLoadingJob : public base::RefCountedThreadSafe<TokenLoadingJob> {
public:
explicit TokenLoadingJob(
const content::AccessTokenStore::LoadAccessTokensCallback& callback)
: callback_(callback), request_context_getter_(nullptr) {}
void Run() {
BrowserThread::PostTaskAndReply(
BrowserThread::UI,
FROM_HERE,
base::Bind(&TokenLoadingJob::PerformWorkOnUIThread, this),
base::Bind(&TokenLoadingJob::RespondOnOriginatingThread, this));
}
private:
friend class base::RefCountedThreadSafe<TokenLoadingJob>;
~TokenLoadingJob() {}
void PerformWorkOnUIThread() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
auto browser_context = AtomBrowserContext::From("", false);
request_context_getter_ = browser_context->GetRequestContext();
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (!env->GetVar("GOOGLE_API_KEY", &api_key_))
api_key_ = GOOGLEAPIS_API_KEY;
}
void RespondOnOriginatingThread() {
// Equivalent to access_token_map[kGeolocationProviderURL].
// Somehow base::string16 is causing compilation errors when used in a pair
// of std::map on Linux, this can work around it.
content::AccessTokenStore::AccessTokenMap access_token_map;
std::pair<GURL, base::string16> token_pair;
token_pair.first = GURL(GOOGLEAPIS_ENDPOINT + api_key_);
access_token_map.insert(token_pair);
callback_.Run(access_token_map, request_context_getter_);
}
content::AccessTokenStore::LoadAccessTokensCallback callback_;
net::URLRequestContextGetter* request_context_getter_;
std::string api_key_;
};
} // namespace
@@ -32,18 +76,9 @@ AtomAccessTokenStore::~AtomAccessTokenStore() {
}
void AtomAccessTokenStore::LoadAccessTokens(
const LoadAccessTokensCallbackType& callback) {
AccessTokenSet access_token_set;
// Equivelent to access_token_set[kGeolocationProviderURL].
// Somehow base::string16 is causing compilation errors when used in a pair
// of std::map on Linux, this can work around it.
std::pair<GURL, base::string16> token_pair;
token_pair.first = GURL(kGeolocationProviderURL);
access_token_set.insert(token_pair);
auto browser_context = AtomBrowserMainParts::Get()->browser_context();
callback.Run(access_token_set, browser_context->url_request_context_getter());
const LoadAccessTokensCallback& callback) {
scoped_refptr<TokenLoadingJob> job(new TokenLoadingJob(callback));
job->Run();
}
void AtomAccessTokenStore::SaveAccessToken(const GURL& server_url,

View File

@@ -9,16 +9,14 @@
namespace atom {
class AtomBrowserContext;
class AtomAccessTokenStore : public content::AccessTokenStore {
public:
AtomAccessTokenStore();
virtual ~AtomAccessTokenStore();
~AtomAccessTokenStore();
// content::AccessTokenStore:
void LoadAccessTokens(
const LoadAccessTokensCallbackType& callback) override;
const LoadAccessTokensCallback& callback) override;
void SaveAccessToken(const GURL& server_url,
const base::string16& access_token) override;

View File

@@ -0,0 +1,133 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_blob_reader.h"
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "storage/browser/blob/blob_data_handle.h"
#include "storage/browser/blob/blob_reader.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "storage/browser/fileapi/file_system_context.h"
#include "atom/common/node_includes.h"
using content::BrowserThread;
namespace atom {
namespace {
void RunCallbackInUI(
const AtomBlobReader::CompletionCallback& callback,
char* blob_data,
int size) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (blob_data) {
v8::Local<v8::Value> buffer = node::Buffer::New(isolate,
blob_data, static_cast<size_t>(size)).ToLocalChecked();
callback.Run(buffer);
} else {
callback.Run(v8::Null(isolate));
}
}
} // namespace
AtomBlobReader::AtomBlobReader(
content::ChromeBlobStorageContext* blob_context,
storage::FileSystemContext* file_system_context)
: blob_context_(blob_context),
file_system_context_(file_system_context) {
}
AtomBlobReader::~AtomBlobReader() {
}
void AtomBlobReader::StartReading(
const std::string& uuid,
const AtomBlobReader::CompletionCallback& completion_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
auto blob_data_handle =
blob_context_->context()->GetBlobDataFromUUID(uuid);
auto callback = base::Bind(&RunCallbackInUI,
completion_callback);
if (!blob_data_handle) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(callback, nullptr, 0));
return;
}
auto blob_reader = blob_data_handle->CreateReader(
file_system_context_.get(),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE).get());
BlobReadHelper* blob_read_helper =
new BlobReadHelper(std::move(blob_reader), callback);
blob_read_helper->Read();
}
AtomBlobReader::BlobReadHelper::BlobReadHelper(
std::unique_ptr<storage::BlobReader> blob_reader,
const BlobReadHelper::CompletionCallback& callback)
: blob_reader_(std::move(blob_reader)),
completion_callback_(callback) {
}
AtomBlobReader::BlobReadHelper::~BlobReadHelper() {
}
void AtomBlobReader::BlobReadHelper::Read() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
storage::BlobReader::Status size_status = blob_reader_->CalculateSize(
base::Bind(&AtomBlobReader::BlobReadHelper::DidCalculateSize,
base::Unretained(this)));
if (size_status != storage::BlobReader::Status::IO_PENDING)
DidCalculateSize(net::OK);
}
void AtomBlobReader::BlobReadHelper::DidCalculateSize(int result) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (result != net::OK) {
DidReadBlobData(nullptr, 0);
return;
}
uint64_t total_size = blob_reader_->total_size();
int bytes_read = 0;
scoped_refptr<net::IOBuffer> blob_data =
new net::IOBuffer(static_cast<size_t>(total_size));
auto callback = base::Bind(&AtomBlobReader::BlobReadHelper::DidReadBlobData,
base::Unretained(this),
base::RetainedRef(blob_data));
storage::BlobReader::Status read_status = blob_reader_->Read(
blob_data.get(),
total_size,
&bytes_read,
callback);
if (read_status != storage::BlobReader::Status::IO_PENDING)
callback.Run(bytes_read);
}
void AtomBlobReader::BlobReadHelper::DidReadBlobData(
const scoped_refptr<net::IOBuffer>& blob_data,
int size) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
char* data = new char[size];
memcpy(data, blob_data->data(), size);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(completion_callback_, data, size));
delete this;
}
} // namespace atom

View File

@@ -0,0 +1,80 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_BLOB_READER_H_
#define ATOM_BROWSER_ATOM_BLOB_READER_H_
#include <string>
#include "base/callback.h"
namespace content {
class ChromeBlobStorageContext;
}
namespace net {
class IOBuffer;
}
namespace storage {
class BlobDataHandle;
class BlobReader;
class FileSystemContext;
}
namespace v8 {
template <class T>
class Local;
class Value;
}
namespace atom {
// A class to keep track of the blob context. All methods,
// except Ctor are expected to be called on IO thread.
class AtomBlobReader {
public:
using CompletionCallback = base::Callback<void(v8::Local<v8::Value>)>;
AtomBlobReader(content::ChromeBlobStorageContext* blob_context,
storage::FileSystemContext* file_system_context);
~AtomBlobReader();
void StartReading(
const std::string& uuid,
const AtomBlobReader::CompletionCallback& callback);
private:
// A self-destroyed helper class to read the blob data.
// Must be accessed on IO thread.
class BlobReadHelper {
public:
using CompletionCallback = base::Callback<void(char*, int)>;
BlobReadHelper(std::unique_ptr<storage::BlobReader> blob_reader,
const BlobReadHelper::CompletionCallback& callback);
~BlobReadHelper();
void Read();
private:
void DidCalculateSize(int result);
void DidReadBlobData(const scoped_refptr<net::IOBuffer>& blob_data,
int bytes_read);
std::unique_ptr<storage::BlobReader> blob_reader_;
BlobReadHelper::CompletionCallback completion_callback_;
DISALLOW_COPY_AND_ASSIGN(BlobReadHelper);
};
scoped_refptr<content::ChromeBlobStorageContext> blob_context_;
scoped_refptr<storage::FileSystemContext> file_system_context_;
DISALLOW_COPY_AND_ASSIGN(AtomBlobReader);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_BLOB_READER_H_

View File

@@ -9,6 +9,7 @@
#endif
#include "atom/browser/api/atom_api_app.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/atom_access_token_store.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
@@ -23,14 +24,15 @@
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "chrome/browser/printing/printing_message_filter.h"
#include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
#include "chrome/browser/renderer_host/pepper/widevine_cdm_message_filter.h"
#include "chrome/browser/speech/tts_message_filter.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/geolocation_delegate.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
@@ -49,11 +51,25 @@ namespace {
// Next navigation should not restart renderer process.
bool g_suppress_renderer_process_restart = false;
// Custom schemes to be registered to standard.
std::string g_custom_schemes = "";
// Custom schemes to be registered to handle service worker.
std::string g_custom_service_worker_schemes = "";
// A provider of Geolocation services to override AccessTokenStore.
class AtomGeolocationDelegate : public content::GeolocationDelegate {
public:
AtomGeolocationDelegate() = default;
content::AccessTokenStore* CreateAccessTokenStore() final {
return new AtomAccessTokenStore();
}
private:
DISALLOW_COPY_AND_ASSIGN(AtomGeolocationDelegate);
};
void Noop(scoped_refptr<content::SiteInstance>) {
}
} // namespace
// static
@@ -61,11 +77,6 @@ void AtomBrowserClient::SuppressRendererProcessRestartForOnce() {
g_suppress_renderer_process_restart = true;
}
void AtomBrowserClient::SetCustomSchemes(
const std::vector<std::string>& schemes) {
g_custom_schemes = base::JoinString(schemes, ",");
}
void AtomBrowserClient::SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
g_custom_service_worker_schemes = base::JoinString(schemes, ",");
@@ -77,6 +88,17 @@ AtomBrowserClient::AtomBrowserClient() : delegate_(nullptr) {
AtomBrowserClient::~AtomBrowserClient() {
}
content::WebContents* AtomBrowserClient::GetWebContentsFromProcessID(
int process_id) {
// If the process is a pending process, we should use the old one.
if (ContainsKey(pending_processes_, process_id))
process_id = pending_processes_[process_id];
// Certain render process will be created with no associated render view,
// for example: ServiceWorker.
return WebContentsPreferences::GetWebContentsFromProcessID(process_id);
}
void AtomBrowserClient::RenderProcessWillLaunch(
content::RenderProcessHost* host) {
int process_id = host->GetID();
@@ -91,8 +113,9 @@ content::SpeechRecognitionManagerDelegate*
return new AtomSpeechRecognitionManagerDelegate;
}
content::AccessTokenStore* AtomBrowserClient::CreateAccessTokenStore() {
return new AtomAccessTokenStore;
content::GeolocationDelegate*
AtomBrowserClient::CreateGeolocationDelegate() {
return new AtomGeolocationDelegate();
}
void AtomBrowserClient::OverrideWebkitPrefs(
@@ -136,7 +159,16 @@ void AtomBrowserClient::OverrideSiteInstanceForNavigation(
if (url.SchemeIs(url::kJavaScriptScheme))
return;
*new_instance = content::SiteInstance::CreateForURL(browser_context, url);
scoped_refptr<content::SiteInstance> site_instance =
content::SiteInstance::CreateForURL(browser_context, url);
*new_instance = site_instance.get();
// Make sure the |site_instance| is not freed when this function returns.
// FIXME(zcbenz): We should adjust OverrideSiteInstanceForNavigation's
// interface to solve this.
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::Bind(&Noop, base::RetainedRef(site_instance)));
// Remember the original renderer process of the pending renderer process.
auto current_process = current_instance->GetProcess();
@@ -153,10 +185,13 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
if (process_type != "renderer")
return;
// The registered standard schemes.
if (!g_custom_schemes.empty())
command_line->AppendSwitchASCII(switches::kRegisterStandardSchemes,
g_custom_schemes);
// Copy following switches to child process.
static const char* const kCommonSwitchNames[] = {
switches::kStandardSchemes,
};
command_line->CopySwitchesFrom(
*base::CommandLine::ForCurrentProcess(),
kCommonSwitchNames, arraysize(kCommonSwitchNames));
// The registered service worker schemes.
if (!g_custom_service_worker_schemes.empty())
@@ -172,14 +207,7 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
}
#endif
// If the process is a pending process, we should use the old one.
if (ContainsKey(pending_processes_, process_id))
process_id = pending_processes_[process_id];
// Certain render process will be created with no associated render view,
// for example: ServiceWorker.
content::WebContents* web_contents =
WebContentsPreferences::GetWebContentsFromProcessID(process_id);
content::WebContents* web_contents = GetWebContentsFromProcessID(process_id);
if (!web_contents)
return;
@@ -190,7 +218,7 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
void AtomBrowserClient::DidCreatePpapiPlugin(
content::BrowserPpapiHost* host) {
host->GetPpapiHost()->AddHostFactoryFilter(
make_scoped_ptr(new chrome::ChromeBrowserPepperHostFactory(host)));
base::WrapUnique(new chrome::ChromeBrowserPepperHostFactory(host)));
}
content::QuotaPermissionContext*
@@ -220,7 +248,7 @@ void AtomBrowserClient::AllowCertificateError(
void AtomBrowserClient::SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
scoped_ptr<content::ClientCertificateDelegate> delegate) {
std::unique_ptr<content::ClientCertificateDelegate> delegate) {
if (!cert_request_info->client_certs.empty() && delegate_) {
delegate_->SelectClientCertificate(
web_contents, cert_request_info, std::move(delegate));
@@ -267,6 +295,15 @@ bool AtomBrowserClient::CanCreateWindow(
return false;
}
void AtomBrowserClient::GetAdditionalAllowedSchemesForFileSystem(
std::vector<std::string>* additional_schemes) {
auto schemes_list = api::GetStandardSchemes();
if (!schemes_list.empty())
additional_schemes->insert(additional_schemes->end(),
schemes_list.begin(),
schemes_list.end());
}
brightray::BrowserMainParts* AtomBrowserClient::OverrideCreateBrowserMainParts(
const content::MainFunctionParams&) {
v8::V8::Initialize(); // Init V8 before creating main parts.
@@ -275,20 +312,21 @@ brightray::BrowserMainParts* AtomBrowserClient::OverrideCreateBrowserMainParts(
void AtomBrowserClient::WebNotificationAllowed(
int render_process_id,
const base::Callback<void(bool)>& callback) {
const base::Callback<void(bool, bool)>& callback) {
content::WebContents* web_contents =
WebContentsPreferences::GetWebContentsFromProcessID(render_process_id);
if (!web_contents) {
callback.Run(false);
callback.Run(false, false);
return;
}
auto permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper) {
callback.Run(false);
callback.Run(false, false);
return;
}
permission_helper->RequestWebNotificationPermission(callback);
permission_helper->RequestWebNotificationPermission(
base::Bind(callback, web_contents->IsAudioMuted()));
}
void AtomBrowserClient::RenderProcessHostDestroyed(

View File

@@ -34,10 +34,12 @@ class AtomBrowserClient : public brightray::BrowserClient,
using Delegate = content::ContentBrowserClient;
void set_delegate(Delegate* delegate) { delegate_ = delegate; }
// Returns the WebContents for pending render processes.
content::WebContents* GetWebContentsFromProcessID(int process_id);
// Don't force renderer process to restart for once.
static void SuppressRendererProcessRestartForOnce();
// Custom schemes to be registered to standard.
static void SetCustomSchemes(const std::vector<std::string>& schemes);
// Custom schemes to be registered to handle service worker.
static void SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes);
@@ -47,7 +49,7 @@ class AtomBrowserClient : public brightray::BrowserClient,
void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
content::SpeechRecognitionManagerDelegate*
CreateSpeechRecognitionManagerDelegate() override;
content::AccessTokenStore* CreateAccessTokenStore() override;
content::GeolocationDelegate* CreateGeolocationDelegate() override;
void OverrideWebkitPrefs(content::RenderViewHost* render_view_host,
content::WebPreferences* prefs) override;
std::string GetApplicationLocale() override;
@@ -74,7 +76,7 @@ class AtomBrowserClient : public brightray::BrowserClient,
void SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
scoped_ptr<content::ClientCertificateDelegate> delegate) override;
std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
void ResourceDispatcherHostCreated() override;
bool CanCreateWindow(const GURL& opener_url,
const GURL& opener_top_level_frame_url,
@@ -92,13 +94,15 @@ class AtomBrowserClient : public brightray::BrowserClient,
int opener_render_view_id,
int opener_render_frame_id,
bool* no_javascript_access) override;
void GetAdditionalAllowedSchemesForFileSystem(
std::vector<std::string>* schemes) override;
// brightray::BrowserClient:
brightray::BrowserMainParts* OverrideCreateBrowserMainParts(
const content::MainFunctionParams&) override;
void WebNotificationAllowed(
int render_process_id,
const base::Callback<void(bool)>& callback) override;
const base::Callback<void(bool, bool)>& callback) override;
// content::RenderProcessHostObserver:
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
@@ -107,7 +111,7 @@ class AtomBrowserClient : public brightray::BrowserClient,
// pending_render_process => current_render_process.
std::map<int, int> pending_processes_;
scoped_ptr<AtomResourceDispatcherHostDelegate>
std::unique_ptr<AtomResourceDispatcherHostDelegate>
resource_dispatcher_host_delegate_;
Delegate* delegate_;

View File

@@ -4,38 +4,43 @@
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/atom_blob_reader.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_download_manager_delegate.h"
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/browser.h"
#include "atom/browser/net/asar/asar_protocol_handler.h"
#include "atom/browser/net/atom_cert_verifier.h"
#include "atom/browser/net/atom_network_delegate.h"
#include "atom/browser/net/atom_ssl_config_service.h"
#include "atom/browser/net/atom_url_request_job_factory.h"
#include "atom/browser/net/asar/asar_protocol_handler.h"
#include "atom/browser/net/http_protocol_handler.h"
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/web_view_manager.h"
#include "atom/common/atom_version.h"
#include "atom/common/chrome_version.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/memory/ptr_util.h"
#include "base/path_service.h"
#include "base/prefs/pref_registry_simple.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/worker_pool.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/url_constants.h"
#include "content/public/common/user_agent.h"
#include "net/ftp/ftp_network_layer.h"
#include "net/url_request/data_protocol_handler.h"
#include "net/url_request/ftp_protocol_handler.h"
#include "net/url_request/url_request_intercepting_job_factory.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_intercepting_job_factory.h"
#include "url/url_constants.h"
using content::BrowserThread;
@@ -46,7 +51,7 @@ namespace {
class NoCacheBackend : public net::HttpCache::BackendFactory {
int CreateBackend(net::NetLog* net_log,
scoped_ptr<disk_cache::Backend>* backend,
std::unique_ptr<disk_cache::Backend>* backend,
const net::CompletionCallback& callback) override {
return net::ERR_FAILED;
}
@@ -62,23 +67,12 @@ std::string RemoveWhitespace(const std::string& str) {
} // namespace
AtomBrowserContext::AtomBrowserContext(const std::string& partition,
bool in_memory)
AtomBrowserContext::AtomBrowserContext(
const std::string& partition, bool in_memory,
const base::DictionaryValue& options)
: brightray::BrowserContext(partition, in_memory),
cert_verifier_(new AtomCertVerifier),
job_factory_(new AtomURLRequestJobFactory),
network_delegate_(new AtomNetworkDelegate),
allow_ntlm_everywhere_(false) {
}
AtomBrowserContext::~AtomBrowserContext() {
}
net::NetworkDelegate* AtomBrowserContext::CreateNetworkDelegate() {
return network_delegate_;
}
std::string AtomBrowserContext::GetUserAgent() {
network_delegate_(new AtomNetworkDelegate) {
// Construct user agent string.
Browser* browser = Browser::Get();
std::string name = RemoveWhitespace(browser->GetName());
std::string user_agent;
@@ -92,64 +86,77 @@ std::string AtomBrowserContext::GetUserAgent() {
browser->GetVersion().c_str(),
CHROME_VERSION_STRING);
}
return content::BuildUserAgentFromProduct(user_agent);
user_agent_ = content::BuildUserAgentFromProduct(user_agent);
// Read options.
use_cache_ = true;
options.GetBoolean("cache", &use_cache_);
// Initialize Pref Registry in brightray.
InitPrefs();
}
scoped_ptr<net::URLRequestJobFactory>
AtomBrowserContext::~AtomBrowserContext() {
}
void AtomBrowserContext::SetUserAgent(const std::string& user_agent) {
user_agent_ = user_agent;
}
net::NetworkDelegate* AtomBrowserContext::CreateNetworkDelegate() {
return network_delegate_;
}
std::string AtomBrowserContext::GetUserAgent() {
return user_agent_;
}
std::unique_ptr<net::URLRequestJobFactory>
AtomBrowserContext::CreateURLRequestJobFactory(
content::ProtocolHandlerMap* handlers,
content::URLRequestInterceptorScopedVector* interceptors) {
scoped_ptr<AtomURLRequestJobFactory> job_factory(job_factory_);
content::ProtocolHandlerMap* protocol_handlers) {
std::unique_ptr<AtomURLRequestJobFactory> job_factory(
new AtomURLRequestJobFactory);
for (auto& it : *handlers) {
for (auto& it : *protocol_handlers) {
job_factory->SetProtocolHandler(it.first,
make_scoped_ptr(it.second.release()));
base::WrapUnique(it.second.release()));
}
handlers->clear();
protocol_handlers->clear();
job_factory->SetProtocolHandler(
url::kDataScheme, make_scoped_ptr(new net::DataProtocolHandler));
url::kDataScheme, base::WrapUnique(new net::DataProtocolHandler));
job_factory->SetProtocolHandler(
url::kFileScheme, make_scoped_ptr(new asar::AsarProtocolHandler(
url::kFileScheme, base::WrapUnique(new asar::AsarProtocolHandler(
BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior(
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN))));
job_factory->SetProtocolHandler(
url::kHttpScheme,
make_scoped_ptr(new HttpProtocolHandler(url::kHttpScheme)));
base::WrapUnique(new HttpProtocolHandler(url::kHttpScheme)));
job_factory->SetProtocolHandler(
url::kHttpsScheme,
make_scoped_ptr(new HttpProtocolHandler(url::kHttpsScheme)));
base::WrapUnique(new HttpProtocolHandler(url::kHttpsScheme)));
job_factory->SetProtocolHandler(
url::kWsScheme,
make_scoped_ptr(new HttpProtocolHandler(url::kWsScheme)));
base::WrapUnique(new HttpProtocolHandler(url::kWsScheme)));
job_factory->SetProtocolHandler(
url::kWssScheme,
make_scoped_ptr(new HttpProtocolHandler(url::kWssScheme)));
base::WrapUnique(new HttpProtocolHandler(url::kWssScheme)));
auto host_resolver =
url_request_context_getter()->GetURLRequestContext()->host_resolver();
job_factory->SetProtocolHandler(
url::kFtpScheme,
make_scoped_ptr(new net::FtpProtocolHandler(
base::WrapUnique(new net::FtpProtocolHandler(
new net::FtpNetworkLayer(host_resolver))));
// Set up interceptors in the reverse order.
scoped_ptr<net::URLRequestJobFactory> top_job_factory =
std::move(job_factory);
content::URLRequestInterceptorScopedVector::reverse_iterator it;
for (it = interceptors->rbegin(); it != interceptors->rend(); ++it)
top_job_factory.reset(new net::URLRequestInterceptingJobFactory(
std::move(top_job_factory), make_scoped_ptr(*it)));
interceptors->weak_clear();
return top_job_factory;
return std::move(job_factory);
}
net::HttpCache::BackendFactory*
AtomBrowserContext::CreateHttpCacheBackendFactory(
const base::FilePath& base_path) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kDisableHttpCache))
if (!use_cache_ || command_line->HasSwitch(switches::kDisableHttpCache))
return new NoCacheBackend;
else
return brightray::BrowserContext::CreateHttpCacheBackendFactory(base_path);
@@ -177,14 +184,22 @@ content::PermissionManager* AtomBrowserContext::GetPermissionManager() {
return permission_manager_.get();
}
scoped_ptr<net::CertVerifier> AtomBrowserContext::CreateCertVerifier() {
return make_scoped_ptr(cert_verifier_);
std::unique_ptr<net::CertVerifier> AtomBrowserContext::CreateCertVerifier() {
return base::WrapUnique(new AtomCertVerifier);
}
net::SSLConfigService* AtomBrowserContext::CreateSSLConfigService() {
return new AtomSSLConfigService;
}
std::vector<std::string> AtomBrowserContext::GetCookieableSchemes() {
auto default_schemes = brightray::BrowserContext::GetCookieableSchemes();
const auto& standard_schemes = atom::api::GetStandardSchemes();
default_schemes.insert(default_schemes.end(),
standard_schemes.begin(), standard_schemes.end());
return default_schemes;
}
void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
pref_registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
base::FilePath());
@@ -195,24 +210,28 @@ void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
pref_registry->RegisterDictionaryPref(prefs::kDevToolsFileSystemPaths);
}
bool AtomBrowserContext::AllowNTLMCredentialsForDomain(const GURL& origin) {
if (allow_ntlm_everywhere_)
return true;
return Delegate::AllowNTLMCredentialsForDomain(origin);
AtomBlobReader* AtomBrowserContext::GetBlobReader() {
if (!blob_reader_.get()) {
content::ChromeBlobStorageContext* blob_context =
content::ChromeBlobStorageContext::GetFor(this);
storage::FileSystemContext* file_system_context =
content::BrowserContext::GetStoragePartition(
this, nullptr)->GetFileSystemContext();
blob_reader_.reset(new AtomBlobReader(blob_context,
file_system_context));
}
return blob_reader_.get();
}
void AtomBrowserContext::AllowNTLMCredentialsForAllDomains(bool should_allow) {
allow_ntlm_everywhere_ = should_allow;
// static
scoped_refptr<AtomBrowserContext> AtomBrowserContext::From(
const std::string& partition, bool in_memory,
const base::DictionaryValue& options) {
auto browser_context = brightray::BrowserContext::Get(partition, in_memory);
if (browser_context)
return static_cast<AtomBrowserContext*>(browser_context.get());
return new AtomBrowserContext(partition, in_memory, options);
}
} // namespace atom
namespace brightray {
// static
scoped_refptr<BrowserContext> BrowserContext::Create(
const std::string& partition, bool in_memory) {
return make_scoped_refptr(new atom::AtomBrowserContext(partition, in_memory));
}
} // namespace brightray

View File

@@ -6,34 +6,39 @@
#define ATOM_BROWSER_ATOM_BROWSER_CONTEXT_H_
#include <string>
#include <vector>
#include "brightray/browser/browser_context.h"
namespace atom {
class AtomBlobReader;
class AtomDownloadManagerDelegate;
class AtomCertVerifier;
class AtomNetworkDelegate;
class AtomPermissionManager;
class AtomURLRequestJobFactory;
class WebViewManager;
class AtomBrowserContext : public brightray::BrowserContext {
public:
AtomBrowserContext(const std::string& partition, bool in_memory);
~AtomBrowserContext() override;
// Get or create the BrowserContext according to its |partition| and
// |in_memory|. The |options| will be passed to constructor when there is no
// existing BrowserContext.
static scoped_refptr<AtomBrowserContext> From(
const std::string& partition, bool in_memory,
const base::DictionaryValue& options = base::DictionaryValue());
void SetUserAgent(const std::string& user_agent);
// brightray::URLRequestContextGetter::Delegate:
net::NetworkDelegate* CreateNetworkDelegate() override;
std::string GetUserAgent() override;
scoped_ptr<net::URLRequestJobFactory> CreateURLRequestJobFactory(
content::ProtocolHandlerMap* handlers,
content::URLRequestInterceptorScopedVector* interceptors) override;
std::unique_ptr<net::URLRequestJobFactory> CreateURLRequestJobFactory(
content::ProtocolHandlerMap* protocol_handlers) override;
net::HttpCache::BackendFactory* CreateHttpCacheBackendFactory(
const base::FilePath& base_path) override;
scoped_ptr<net::CertVerifier> CreateCertVerifier() override;
std::unique_ptr<net::CertVerifier> CreateCertVerifier() override;
net::SSLConfigService* CreateSSLConfigService() override;
bool AllowNTLMCredentialsForDomain(const GURL& auth_origin) override;
std::vector<std::string> GetCookieableSchemes() override;
// content::BrowserContext:
content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
@@ -43,26 +48,25 @@ class AtomBrowserContext : public brightray::BrowserContext {
// brightray::BrowserContext:
void RegisterPrefs(PrefRegistrySimple* pref_registry) override;
void AllowNTLMCredentialsForAllDomains(bool should_allow);
AtomCertVerifier* cert_verifier() const { return cert_verifier_; }
AtomURLRequestJobFactory* job_factory() const { return job_factory_; }
AtomBlobReader* GetBlobReader();
AtomNetworkDelegate* network_delegate() const { return network_delegate_; }
protected:
AtomBrowserContext(const std::string& partition, bool in_memory,
const base::DictionaryValue& options);
~AtomBrowserContext() override;
private:
scoped_ptr<AtomDownloadManagerDelegate> download_manager_delegate_;
scoped_ptr<WebViewManager> guest_manager_;
scoped_ptr<AtomPermissionManager> permission_manager_;
std::unique_ptr<AtomDownloadManagerDelegate> download_manager_delegate_;
std::unique_ptr<WebViewManager> guest_manager_;
std::unique_ptr<AtomPermissionManager> permission_manager_;
std::unique_ptr<AtomBlobReader> blob_reader_;
std::string user_agent_;
bool use_cache_;
// Managed by brightray::BrowserContext.
AtomCertVerifier* cert_verifier_;
AtomURLRequestJobFactory* job_factory_;
AtomNetworkDelegate* network_delegate_;
bool allow_ntlm_everywhere_;
DISALLOW_COPY_AND_ASSIGN(AtomBrowserContext);
};

View File

@@ -15,8 +15,9 @@
#include "atom/common/node_bindings.h"
#include "atom/common/node_includes.h"
#include "base/command_line.h"
#include "base/thread_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/browser_process.h"
#include "content/public/browser/child_process_security_policy.h"
#include "v8/include/v8-debug.h"
#if defined(USE_X11)
@@ -32,7 +33,7 @@ void Erase(T* container, typename T::iterator iter) {
}
// static
AtomBrowserMainParts* AtomBrowserMainParts::self_ = NULL;
AtomBrowserMainParts* AtomBrowserMainParts::self_ = nullptr;
AtomBrowserMainParts::AtomBrowserMainParts()
: fake_browser_process_(new BrowserProcess),
@@ -43,6 +44,9 @@ AtomBrowserMainParts::AtomBrowserMainParts()
gc_timer_(true, true) {
DCHECK(!self_) << "Cannot have two AtomBrowserMainParts";
self_ = this;
// Register extension scheme as web safe scheme.
content::ChildProcessSecurityPolicy::GetInstance()->
RegisterWebSafeScheme("chrome-extension");
}
AtomBrowserMainParts::~AtomBrowserMainParts() {
@@ -113,7 +117,7 @@ void AtomBrowserMainParts::PostEarlyInitialization() {
if (node_debugger_->IsRunning())
env->AssignToContext(v8::Debug::GetDebugContext());
// Add atom-shell extended APIs.
// Add Electron extended APIs.
atom_bindings_->BindTo(js_env_->isolate(), env->process_object());
// Load everything.
@@ -124,6 +128,8 @@ void AtomBrowserMainParts::PostEarlyInitialization() {
}
void AtomBrowserMainParts::PreMainMessageLoopRun() {
js_env_->OnMessageLoopCreated();
// Run user's main script before most things get initialized, so we can have
// a chance to setup everything.
node_bindings_->PrepareMessageLoop();
@@ -148,9 +154,10 @@ void AtomBrowserMainParts::PreMainMessageLoopRun() {
#endif
#if !defined(OS_MACOSX)
// The corresponding call in OS X is in AtomApplicationDelegate.
// The corresponding call in macOS is in AtomApplicationDelegate.
Browser::Get()->WillFinishLaunching();
Browser::Get()->DidFinishLaunching();
std::unique_ptr<base::DictionaryValue> empty_info(new base::DictionaryValue);
Browser::Get()->DidFinishLaunching(*empty_info);
#endif
}
@@ -169,6 +176,8 @@ void AtomBrowserMainParts::PostMainMessageLoopStart() {
void AtomBrowserMainParts::PostMainMessageLoopRun() {
brightray::BrowserMainParts::PostMainMessageLoopRun();
js_env_->OnMessageLoopDestroying();
#if defined(OS_MACOSX)
FreeAppDelegate();
#endif

View File

@@ -68,7 +68,7 @@ class AtomBrowserMainParts : public brightray::BrowserMainParts {
#endif
// A fake BrowserProcess object that used to feed the source code from chrome.
scoped_ptr<BrowserProcess> fake_browser_process_;
std::unique_ptr<BrowserProcess> fake_browser_process_;
// The gin::PerIsolateData requires a task runner to create, so we feed it
// with a task runner that will post all work to main loop.
@@ -77,11 +77,11 @@ class AtomBrowserMainParts : public brightray::BrowserMainParts {
// Pointer to exit code.
int* exit_code_;
scoped_ptr<Browser> browser_;
scoped_ptr<JavascriptEnvironment> js_env_;
scoped_ptr<NodeBindings> node_bindings_;
scoped_ptr<AtomBindings> atom_bindings_;
scoped_ptr<NodeDebugger> node_debugger_;
std::unique_ptr<Browser> browser_;
std::unique_ptr<JavascriptEnvironment> js_env_;
std::unique_ptr<NodeBindings> node_bindings_;
std::unique_ptr<AtomBindings> atom_bindings_;
std::unique_ptr<NodeDebugger> node_debugger_;
base::Timer gc_timer_;

View File

@@ -18,7 +18,7 @@ void AtomBrowserMainParts::PreMainMessageLoopStart() {
// Set our own application delegate.
AtomApplicationDelegate* delegate = [[AtomApplicationDelegate alloc] init];
[NSApp setDelegate:(id<NSFileManagerDelegate>)delegate];
[NSApp setDelegate:delegate];
brightray::BrowserMainParts::PreMainMessageLoopStart();

View File

@@ -43,7 +43,7 @@ void GracefulShutdownHandler(int signal) {
struct sigaction action;
memset(&action, 0, sizeof(action));
action.sa_handler = SIG_DFL;
RAW_CHECK(sigaction(signal, &action, NULL) == 0);
RAW_CHECK(sigaction(signal, &action, nullptr) == 0);
RAW_CHECK(g_pipe_pid == getpid());
RAW_CHECK(g_shutdown_pipe_write_fd != -1);
@@ -171,7 +171,7 @@ void AtomBrowserMainParts::HandleSIGCHLD() {
struct sigaction action;
memset(&action, 0, sizeof(action));
action.sa_handler = SIGCHLDHandler;
CHECK_EQ(sigaction(SIGCHLD, &action, NULL), 0);
CHECK_EQ(sigaction(SIGCHLD, &action, nullptr), 0);
}
void AtomBrowserMainParts::HandleShutdownSignals() {
@@ -211,15 +211,15 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
struct sigaction action;
memset(&action, 0, sizeof(action));
action.sa_handler = SIGTERMHandler;
CHECK_EQ(sigaction(SIGTERM, &action, NULL), 0);
CHECK_EQ(sigaction(SIGTERM, &action, nullptr), 0);
// Also handle SIGINT - when the user terminates the browser via Ctrl+C. If
// the browser process is being debugged, GDB will catch the SIGINT first.
action.sa_handler = SIGINTHandler;
CHECK_EQ(sigaction(SIGINT, &action, NULL), 0);
CHECK_EQ(sigaction(SIGINT, &action, nullptr), 0);
// And SIGHUP, for when the terminal disappears. On shutdown, many Linux
// distros send SIGHUP, SIGTERM, and then SIGKILL.
action.sa_handler = SIGHUPHandler;
CHECK_EQ(sigaction(SIGHUP, &action, NULL), 0);
CHECK_EQ(sigaction(SIGHUP, &action, nullptr), 0);
}
} // namespace atom

View File

@@ -12,8 +12,8 @@
#include "atom/browser/ui/file_dialog.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/prefs/pref_service.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
@@ -35,6 +35,17 @@ AtomDownloadManagerDelegate::~AtomDownloadManagerDelegate() {
}
}
void AtomDownloadManagerDelegate::GetItemSavePath(content::DownloadItem* item,
base::FilePath* path) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download = api::DownloadItem::FromWrappedClass(isolate,
item);
if (download)
*path = download->GetSavePath();
}
void AtomDownloadManagerDelegate::CreateDownloadPath(
const GURL& url,
const std::string& content_disposition,
@@ -49,7 +60,7 @@ void AtomDownloadManagerDelegate::CreateDownloadPath(
std::string(),
suggested_filename,
mime_type,
std::string());
"download");
if (!base::PathExists(default_download_path))
base::CreateDirectory(default_download_path);
@@ -70,18 +81,32 @@ void AtomDownloadManagerDelegate::OnDownloadPathGenerated(
return;
NativeWindow* window = nullptr;
auto relay = NativeWindowRelay::FromWebContents(item->GetWebContents());
content::WebContents* web_contents = item->GetWebContents();
auto relay = web_contents ? NativeWindowRelay::FromWebContents(web_contents)
: nullptr;
if (relay)
window = relay->window.get();
base::FilePath path;
if (file_dialog::ShowSaveDialog(window, item->GetURL().spec(), default_path,
file_dialog::Filters(), &path)) {
GetItemSavePath(item, &path);
// Show save dialog if save path was not set already on item
if (path.empty() && file_dialog::ShowSaveDialog(window, item->GetURL().spec(),
"", default_path,
file_dialog::Filters(),
&path)) {
// Remember the last selected download directory.
AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(
download_manager_->GetBrowserContext());
browser_context->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
path.DirName());
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download_item = api::DownloadItem::FromWrappedClass(
isolate, item);
if (download_item)
download_item->SetSavePath(path);
}
// Running the DownloadTargetCallback with an empty FilePath signals that the
@@ -111,22 +136,14 @@ bool AtomDownloadManagerDelegate::DetermineDownloadTarget(
}
// Try to get the save path from JS wrapper.
{
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download_item = api::DownloadItem::FromWrappedClass(
isolate, download);
if (download_item) {
base::FilePath save_path = download_item->GetSavePath();
if (!save_path.empty()) {
callback.Run(save_path,
content::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
save_path);
return true;
}
}
base::FilePath save_path;
GetItemSavePath(download, &save_path);
if (!save_path.empty()) {
callback.Run(save_path,
content::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
save_path);
return true;
}
AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(

View File

@@ -46,6 +46,9 @@ class AtomDownloadManagerDelegate : public content::DownloadManagerDelegate {
void GetNextId(const content::DownloadIdCallback& callback) override;
private:
// Get the save path set on the associated api::DownloadItem object
void GetItemSavePath(content::DownloadItem* item, base::FilePath* path);
content::DownloadManager* download_manager_;
base::WeakPtrFactory<AtomDownloadManagerDelegate> weak_ptr_factory_;

View File

@@ -13,7 +13,6 @@ namespace atom {
void AtomJavaScriptDialogManager::RunJavaScriptDialog(
content::WebContents* web_contents,
const GURL& origin_url,
const std::string& accept_lang,
content::JavaScriptMessageType javascript_message_type,
const base::string16& message_text,
const base::string16& default_prompt_text,
@@ -24,12 +23,10 @@ void AtomJavaScriptDialogManager::RunJavaScriptDialog(
void AtomJavaScriptDialogManager::RunBeforeUnloadDialog(
content::WebContents* web_contents,
const base::string16& message_text,
bool is_reload,
const DialogClosedCallback& callback) {
bool prevent_reload = message_text.empty() ||
message_text == base::ASCIIToUTF16("false");
callback.Run(!prevent_reload, message_text);
// FIXME(zcbenz): the |message_text| is removed, figure out what should we do.
callback.Run(false, base::ASCIIToUTF16("This should not be displayed"));
}
} // namespace atom

View File

@@ -17,7 +17,6 @@ class AtomJavaScriptDialogManager : public content::JavaScriptDialogManager {
void RunJavaScriptDialog(
content::WebContents* web_contents,
const GURL& origin_url,
const std::string& accept_lang,
content::JavaScriptMessageType javascript_message_type,
const base::string16& message_text,
const base::string16& default_prompt_text,
@@ -25,7 +24,6 @@ class AtomJavaScriptDialogManager : public content::JavaScriptDialogManager {
bool* did_suppress_message) override;
void RunBeforeUnloadDialog(
content::WebContents* web_contents,
const base::string16& message_text,
bool is_reload,
const DialogClosedCallback& callback) override;
void CancelActiveAndPendingDialogs(

View File

@@ -40,7 +40,7 @@ void AtomPermissionManager::SetPermissionRequestHandler(
if (handler.is_null() && !pending_requests_.empty()) {
for (const auto& request : pending_requests_) {
if (!WebContentsDestroyed(request.second.render_process_id))
request.second.callback.Run(content::PERMISSION_STATUS_DENIED);
request.second.callback.Run(blink::mojom::PermissionStatus::DENIED);
}
pending_requests_.clear();
}
@@ -51,7 +51,6 @@ int AtomPermissionManager::RequestPermission(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const ResponseCallback& response_callback) {
int process_id = render_frame_host->GetProcess()->GetID();
@@ -74,7 +73,7 @@ int AtomPermissionManager::RequestPermission(
return request_id_;
}
response_callback.Run(content::PERMISSION_STATUS_GRANTED);
response_callback.Run(blink::mojom::PermissionStatus::GRANTED);
return kNoPendingOperation;
}
@@ -82,17 +81,16 @@ int AtomPermissionManager::RequestPermissions(
const std::vector<content::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(
const std::vector<content::PermissionStatus>&)>& callback) {
const std::vector<blink::mojom::PermissionStatus>&)>& callback) {
// FIXME(zcbenz): Just ignore multiple permissions request for now.
std::vector<content::PermissionStatus> permissionStatuses;
std::vector<blink::mojom::PermissionStatus> permissionStatuses;
for (auto permission : permissions) {
if (permission == content::PermissionType::MIDI_SYSEX) {
content::ChildProcessSecurityPolicy::GetInstance()->
GrantSendMidiSysExMessage(render_frame_host->GetProcess()->GetID());
}
permissionStatuses.push_back(content::PERMISSION_STATUS_GRANTED);
permissionStatuses.push_back(blink::mojom::PermissionStatus::GRANTED);
}
callback.Run(permissionStatuses);
return kNoPendingOperation;
@@ -102,7 +100,7 @@ void AtomPermissionManager::OnPermissionResponse(
int request_id,
const GURL& origin,
const ResponseCallback& callback,
content::PermissionStatus status) {
blink::mojom::PermissionStatus status) {
auto request = pending_requests_.find(request_id);
if (request != pending_requests_.end()) {
if (!WebContentsDestroyed(request->second.render_process_id))
@@ -115,7 +113,7 @@ void AtomPermissionManager::CancelPermissionRequest(int request_id) {
auto request = pending_requests_.find(request_id);
if (request != pending_requests_.end()) {
if (!WebContentsDestroyed(request->second.render_process_id))
request->second.callback.Run(content::PERMISSION_STATUS_DENIED);
request->second.callback.Run(blink::mojom::PermissionStatus::DENIED);
pending_requests_.erase(request);
}
}
@@ -126,11 +124,11 @@ void AtomPermissionManager::ResetPermission(
const GURL& embedding_origin) {
}
content::PermissionStatus AtomPermissionManager::GetPermissionStatus(
blink::mojom::PermissionStatus AtomPermissionManager::GetPermissionStatus(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
return content::PERMISSION_STATUS_GRANTED;
return blink::mojom::PermissionStatus::GRANTED;
}
void AtomPermissionManager::RegisterPermissionUsage(

View File

@@ -23,7 +23,7 @@ class AtomPermissionManager : public content::PermissionManager {
~AtomPermissionManager() override;
using ResponseCallback =
base::Callback<void(content::PermissionStatus)>;
base::Callback<void(blink::mojom::PermissionStatus)>;
using RequestHandler =
base::Callback<void(content::WebContents*,
content::PermissionType,
@@ -37,28 +37,26 @@ class AtomPermissionManager : public content::PermissionManager {
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const ResponseCallback& callback) override;
int RequestPermissions(
const std::vector<content::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(
const std::vector<content::PermissionStatus>&)>& callback) override;
const std::vector<blink::mojom::PermissionStatus>&)>& callback) override;
protected:
void OnPermissionResponse(int request_id,
const GURL& url,
const ResponseCallback& callback,
content::PermissionStatus status);
blink::mojom::PermissionStatus status);
// content::PermissionManager:
void CancelPermissionRequest(int request_id) override;
void ResetPermission(content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
content::PermissionStatus GetPermissionStatus(
blink::mojom::PermissionStatus GetPermissionStatus(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
@@ -69,7 +67,8 @@ class AtomPermissionManager : public content::PermissionManager {
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin,
const base::Callback<void(content::PermissionStatus)>& callback) override;
const base::Callback<void(blink::mojom::PermissionStatus)>& callback)
override;
void UnsubscribePermissionStatusChange(int subscription_id) override;
private:

View File

@@ -7,10 +7,20 @@
#include "atom/browser/login_handler.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/common/platform_util.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/escape.h"
#include "net/ssl/client_cert_store.h"
#include "url/gurl.h"
#if defined(USE_NSS_CERTS)
#include "net/ssl/client_cert_store_nss.h"
#elif defined(OS_WIN)
#include "net/ssl/client_cert_store_win.h"
#elif defined(OS_MACOSX)
#include "net/ssl/client_cert_store_mac.h"
#endif
using content::BrowserThread;
namespace atom {
@@ -20,7 +30,13 @@ namespace {
void OnOpenExternal(const GURL& escaped_url,
bool allowed) {
if (allowed)
platform_util::OpenExternal(escaped_url, true);
platform_util::OpenExternal(
#if defined(OS_WIN)
base::UTF8ToUTF16(escaped_url.spec()),
#else
escaped_url,
#endif
true);
}
void HandleExternalProtocolInUI(
@@ -31,10 +47,13 @@ void HandleExternalProtocolInUI(
if (!web_contents)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
auto callback = base::Bind(&OnOpenExternal, escaped_url);
auto permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
auto callback = base::Bind(&OnOpenExternal, escaped_url);
permission_helper->RequestOpenExternalPermission(callback, has_user_gesture);
}
@@ -49,7 +68,8 @@ bool AtomResourceDispatcherHostDelegate::HandleExternalProtocol(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
bool is_main_frame,
ui::PageTransition transition,
bool has_user_gesture) {
bool has_user_gesture,
content::ResourceContext* resource_context) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(&HandleExternalProtocolInUI,
url,
@@ -65,4 +85,19 @@ AtomResourceDispatcherHostDelegate::CreateLoginDelegate(
return new LoginHandler(auth_info, request);
}
std::unique_ptr<net::ClientCertStore>
AtomResourceDispatcherHostDelegate::CreateClientCertStore(
content::ResourceContext* resource_context) {
#if defined(USE_NSS_CERTS)
return std::unique_ptr<net::ClientCertStore>(new net::ClientCertStoreNSS(
net::ClientCertStoreNSS::PasswordDelegateFactory()));
#elif defined(OS_WIN)
return std::unique_ptr<net::ClientCertStore>(new net::ClientCertStoreWin());
#elif defined(OS_MACOSX)
return std::unique_ptr<net::ClientCertStore>(new net::ClientCertStoreMac());
#elif defined(USE_OPENSSL)
return std::unique_ptr<net::ClientCertStore>();
#endif
}
} // namespace atom

View File

@@ -21,10 +21,13 @@ class AtomResourceDispatcherHostDelegate
const content::ResourceRequestInfo::WebContentsGetter&,
bool is_main_frame,
ui::PageTransition transition,
bool has_user_gesture) override;
bool has_user_gesture,
content::ResourceContext* resource_context) override;
content::ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
net::AuthChallengeInfo* auth_info,
net::URLRequest* request) override;
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
content::ResourceContext* resource_context) override;
};
} // namespace atom

View File

@@ -91,8 +91,14 @@ void AtomSecurityStateModelClient::GetVisibleSecurityState(
state->connection_status = ssl.connection_status;
state->security_bits = ssl.security_bits;
state->sct_verify_statuses.clear();
for (const auto& sct : ssl.signed_certificate_timestamp_ids)
state->sct_verify_statuses.push_back(sct.status);
state->sct_verify_statuses.insert(state->sct_verify_statuses.end(),
ssl.num_unknown_scts,
net::ct::SCT_STATUS_LOG_UNKNOWN);
state->sct_verify_statuses.insert(state->sct_verify_statuses.end(),
ssl.num_invalid_scts,
net::ct::SCT_STATUS_INVALID);
state->sct_verify_statuses.insert(state->sct_verify_statuses.end(),
ssl.num_valid_scts, net::ct::SCT_STATUS_OK);
state->displayed_mixed_content =
(ssl.content_status & content::SSLStatus::DISPLAYED_INSECURE_CONTENT)
? true

View File

@@ -32,7 +32,7 @@ class AtomSecurityStateModelClient
friend class content::WebContentsUserData<AtomSecurityStateModelClient>;
content::WebContents* web_contents_;
scoped_ptr<security_state::SecurityStateModel> security_state_model_;
std::unique_ptr<security_state::SecurityStateModel> security_state_model_;
DISALLOW_COPY_AND_ASSIGN(AtomSecurityStateModelClient);
};

View File

@@ -50,11 +50,6 @@ void AtomSpeechRecognitionManagerDelegate::OnAudioLevelsChange(
int session_id, float volume, float noise_volume) {
}
void AtomSpeechRecognitionManagerDelegate::GetDiagnosticInformation(
bool* can_report_metrics, std::string* hardware_info) {
*can_report_metrics = false;
}
void AtomSpeechRecognitionManagerDelegate::CheckRecognitionIsAllowed(
int session_id,
base::Callback<void(bool ask_user, bool is_allowed)> callback) {

View File

@@ -36,8 +36,6 @@ class AtomSpeechRecognitionManagerDelegate
float noise_volume) override;
// content::SpeechRecognitionManagerDelegate:
void GetDiagnosticInformation(bool* can_report_metrics,
std::string* hardware_info) override;
void CheckRecognitionIsAllowed(
int session_id,
base::Callback<void(bool ask_user, bool is_allowed)> callback) override;

View File

@@ -17,7 +17,12 @@ void AutoUpdater::SetDelegate(Delegate* delegate) {
}
#if !defined(OS_MACOSX) || defined(MAS_BUILD)
void AutoUpdater::SetFeedURL(const std::string& url) {
std::string AutoUpdater::GetFeedURL() {
return "";
}
void AutoUpdater::SetFeedURL(const std::string& url,
const HeaderMap& requestHeaders) {
}
void AutoUpdater::CheckForUpdates() {

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_AUTO_UPDATER_H_
#define ATOM_BROWSER_AUTO_UPDATER_H_
#include <map>
#include <string>
#include "base/macros.h"
@@ -42,11 +43,15 @@ class Delegate {
class AutoUpdater {
public:
typedef std::map<std::string, std::string> HeaderMap;
// Gets/Sets the delegate.
static Delegate* GetDelegate();
static void SetDelegate(Delegate* delegate);
static void SetFeedURL(const std::string& url);
static std::string GetFeedURL();
static void SetFeedURL(const std::string& url,
const HeaderMap& requestHeaders);
static void CheckForUpdates();
static void QuitAndInstall();

Some files were not shown because too many files have changed in this diff Show More