Compare commits

..

3126 Commits

Author SHA1 Message Date
Kevin Sawicki
4c00176599 Bump v1.7.3 2017-06-08 10:43:50 -07:00
Kevin Sawicki
f3e4acf6f9 Merge pull request #9703 from electron/patch-cookies-docs
Fix typings for cookies.get
2017-06-08 10:43:41 -07:00
Zeke Sikelianos
6360576d9e link to cookie structure 2017-06-08 10:09:40 -07:00
Kevin Sawicki
c61397a802 Merge pull request #9704 from electron/upgrade-libcc-gpu-fix
Upgrade to electron/libchromiumcontent@3d692b2280
2017-06-08 09:39:42 -07:00
Kevin Sawicki
d9c4ba3db2 Upgrade to electron/libchromiumcontent@3d692b2280 2017-06-08 07:25:13 -07:00
Kevin Sawicki
785f131a98 Merge pull request #9694 from yuit/FixLinkToThaiDoc
📝 Fix link to Thai documentation
2017-06-08 06:56:34 -07:00
Samuel Attard
dd394b0d5c Fix typings for cookies.get 2017-06-08 23:03:57 +10:00
Yui
88791a7cb1 📝 [ci skip] Fix link to Thai documentation 2017-06-07 09:38:57 -07:00
Zeke Sikelianos
0732329a38 Merge pull request #9599 from electron/fix-type-defs
Fix type definitions for getCPUUsage / getIOCounters
2017-06-07 09:21:46 -07:00
Kevin Sawicki
7a3a092c72 Merge pull request #9687 from electron/fix-custom-window-button-view
Simplify customButtonsOnHover implementation
2017-06-06 18:54:04 -07:00
Birunthan Mohanathas
391c07b80a Simplify custom window button positioning 2017-06-07 03:33:33 +03:00
Kevin Sawicki
915f6a6f54 Merge pull request #9178 from electron/visibilitystate
Let Chromium manage `document.visibilityState` and `document.hidden`
2017-06-06 17:32:49 -07:00
Kevin Sawicki
dc5221d551 Guard against null window like before 2017-06-06 17:02:23 -07:00
Kevin Sawicki
c60a9d242e Disable minimize spec on Linux CI 2017-06-06 16:58:28 -07:00
Kevin Sawicki
a53e98c0f3 Add visibilitystate test for showInactive 2017-06-06 16:45:46 -07:00
Kevin Sawicki
52137485f2 Add separate specs for hide/show/minimize visibilitychange events 2017-06-06 16:22:07 -07:00
Kevin Sawicki
28cd973805 Mention document.hidden in spec description 2017-06-06 15:20:08 -07:00
Birunthan Mohanathas
f60315141b Remove unnecessary if check 2017-06-07 01:19:53 +03:00
Kevin Sawicki
d2d28c42f1 Remove unused constant 2017-06-06 15:19:29 -07:00
Birunthan Mohanathas
3106478510 Rename SemaphoreView to CustomWindowButtonView 2017-06-07 01:18:22 +03:00
Birunthan Mohanathas
7d2226e05e Let Chromium manage document.visibilityState and document.hidden
Chromium already includes the necessary plumbing to manage the
visibility properties and `visibilitychange` event so this gets rid of
most of our custom logic for `BrowserWindow` and `BrowserView`.

Note that `webview` remains unchanged and is still affected by the issues
listed below.

User facing changes:

- The `document` visibility properties and `visibilitychange` event are
  now also updated/fired in response to occlusion changes on macOS. In
  other words, `document.visibilityState` will now be `hidden` on macOS
  if the window is occluded by another window.

- Previously, `visibilitychange` was also fired by *both* Electron and
  Chromium in some cases (e.g. when hiding the window). Now it is only
  fired by Chromium so you no longer get duplicate events.

- The visiblity state of `BrowserWindow`s created with `{ show: false }`
  is now initially `visible` until the window is shown and hidden.

- The visibility state of `BrowserWindow`s with `backgroundThrottling`
  disabled is now permanently `visible`.

This should also fix #6860 (but not for `webview`).
2017-06-06 15:16:01 -07:00
Kevin Sawicki
d40a7569cc Merge pull request #9686 from awaigand/patch-2
📝 Fixed typo
2017-06-06 14:33:26 -07:00
Andreas Waigand
f608c2b2d9 📝 Fixed typo
[ci skip]
2017-06-06 23:30:45 +02:00
Kevin Sawicki
21439a138b Merge pull request #9682 from electron/release-detection
Rebuild native modules when configuration starts with R
2017-06-06 13:37:48 -07:00
Kevin Sawicki
5fa9cd646f Rebuild test modules when configuration starts with R 2017-06-06 08:41:40 -07:00
Kevin Sawicki
53b6ee0e3f Merge pull request #9468 from tonyganch/9296-history-state
Remove page url check during `history.pushState`
2017-06-05 14:47:49 -07:00
Kevin Sawicki
af1d0c45ca Load URL after registering listener 2017-06-05 14:47:11 -07:00
Kevin Sawicki
777b5b17de Move pushState spec chromium-spec with other history specs 2017-06-05 14:45:45 -07:00
Kevin Sawicki
dfa4af2210 Merge pull request #8958 from mst128256/8730
Area near the top border in frameless window is clickable
2017-06-05 14:30:41 -07:00
Kevin Sawicki
4989b21dbc Autorelease semaphore view 2017-06-05 14:28:58 -07:00
Kevin Sawicki
1adc94b650 Mention customButtonsOnHover is for frameless windows 2017-06-05 14:18:08 -07:00
Kevin Sawicki
d5dc849c7a Doc customButtonsOnHover in frameless window guide 2017-06-05 14:16:44 -07:00
Kevin Sawicki
41d582f689 Add back hidden-inset as a deprecated option 2017-06-05 14:16:23 -07:00
Kevin Sawicki
594302fcff Update docs to use hiddenInset 2017-06-05 14:07:57 -07:00
Kevin Sawicki
3a2abde804 Add TODO for hidden-inset deprecation 2017-06-05 13:58:50 -07:00
Kevin Sawicki
9537303e9a Remove unused customWindowButtons switch 2017-06-05 13:57:25 -07:00
Kevin Sawicki
de0daa2481 Autorelease tracking area 2017-06-05 13:48:30 -07:00
Kevin Sawicki
7d10bf229d Switch to titleBarStyle for custom window buttons on hover 2017-06-05 13:30:32 -07:00
Kevin Sawicki
566e04f1c0 🎨 2017-06-05 13:13:16 -07:00
Kevin Sawicki
410e5bce60 Document customWindowButtons option 2017-06-05 13:04:17 -07:00
Kevin Sawicki
37ba1b0a6b Declare mouse inside variable in interface 2017-06-05 12:55:39 -07:00
Kevin Sawicki
1493d6763c Make custom window buttons an option 2017-06-05 12:50:18 -07:00
Kevin Sawicki
2880cfdc9c 🎨 Minor formatting tweaks 2017-06-05 11:08:05 -07:00
mst128256
96251e55de Removed commented code 2017-06-05 10:41:52 -07:00
mst128256
9b4664daa5 Area near the top border in frameless window is clickable 2017-06-05 10:41:52 -07:00
Kevin Sawicki
9a362eed53 Merge pull request #9572 from shubham2892/api-height-menubar-macos
API height menubar macos
2017-06-05 10:35:16 -07:00
Kevin Sawicki
653ef6f839 🎨 2017-06-05 10:33:46 -07:00
Kevin Sawicki
352a9268ad Merge pull request #9674 from electron/revert_8724
Revert "Merge pull request #8724 from electron/defer_load_url"
2017-06-05 10:21:18 -07:00
Kevin Sawicki
f5989dc12f Merge pull request #9615 from rajatsingla28/web
Docs: Add requirement for `webContents.sendInputEvent()` to work.
2017-06-05 10:03:48 -07:00
Kevin Sawicki
afa2dd5ce5 Minor updates to focus note 2017-06-05 10:03:25 -07:00
Kevin Sawicki
7f974c9990 Merge pull request #9667 from solinium/master
change 'request' version
2017-06-05 10:00:08 -07:00
Kevin Sawicki
5bf2d23700 Merge pull request #9657 from electron/menu-docs-patch
Typescript menu popup fix
2017-06-05 08:55:57 -07:00
Kevin Sawicki
fb47dc9e48 🎨 2017-06-05 08:55:42 -07:00
deepak1556
50ac7b2edd Revert "Merge pull request #8724 from electron/defer_load_url"
Possible cause for #9121

This reverts commit 886b47e713, reversing
changes made to 479af3c9e2.
2017-06-05 19:04:21 +05:30
Alexander Gujral
43ff2e8ec1 change request version
https://nodesecurity.io/advisories/request_remote-memory-exposure
security vulnerability for earlier versions
2017-06-04 13:49:59 -04:00
Rajat
2df7680d24 Docs: Add requirement for webContents.sendInputEvent() to work. 2017-06-03 23:47:15 +05:30
Shubham
e9aa9eaf5e :art:code structure fix 2017-06-03 10:56:37 -04:00
Samuel Attard
af09d85125 Update menu.md 2017-06-03 14:50:10 +10:00
Zeke Sikelianos
dfab1043d9 Merge pull request #9640 from electron/bump-ts
bump ts linter with fixes for numeric keys
2017-05-31 15:16:56 -07:00
Kevin Sawicki
6a9de535c7 Merge pull request #9636 from electron/typescript-fixes
Add return type to systemPreferences.isAeroGlassEnabled()
2017-05-31 13:22:30 -07:00
Zeke Sikelianos
175f3e41f1 bump ts linter with fixes for numeric keys 2017-05-31 12:44:26 -07:00
Zeke Sikelianos
c6c3aa0b97 add typescript to the linting mix 2017-05-31 12:42:15 -07:00
Kevin Sawicki
b964c304de Add return type to systemPreferences.isAeroGlassEnabled() 2017-05-31 10:34:14 -07:00
Kevin Sawicki
02972fac86 Merge pull request #9634 from electron/assert-fail
Use assert.fail for unexpected values
2017-05-31 09:52:22 -07:00
Kevin Sawicki
2508159a25 Use assert.fail for unexpected values 2017-05-31 08:39:49 -07:00
Kevin Sawicki
9250b559f9 Merge pull request #9623 from miniak/gpu-info
Add app.getGPUFeatureStatus
2017-05-31 08:11:50 -07:00
Kevin Sawicki
55fcb286a5 Run getGPUFeatureStatus spec on all platforms 2017-05-31 08:10:55 -07:00
Kevin Sawicki
dfac5e5dd1 Merge pull request #9630 from electron/cifratila/bump-node-version
Bump Node.JS version in .node-version
2017-05-31 08:10:05 -07:00
Kevin Sawicki
e5675c83b3 Merge pull request #9627 from electron/remove-empty-grit-file
Remove unused generated_resources.h file
2017-05-31 08:09:50 -07:00
Cheng Zhao
e82af41591 Merge pull request #9269 from electron/main-notifications
Notifications from the main process
2017-05-31 17:21:05 +09:00
Catalin Fratila
0330a30fdb Bump Node.JS version in .node-version 2017-05-31 10:06:38 +02:00
Cheng Zhao
9d4588a5d0 Remove test code 2017-05-31 16:39:53 +09:00
Cheng Zhao
5fa2831756 Coding style fixes 2017-05-31 16:17:29 +09:00
Kevin Sawicki
0b2ef6e9bd Remove unused generated_resources.h file 2017-05-30 16:08:21 -07:00
Shubham
6537238c0d 🎨 code structure fix 2017-05-30 17:40:06 -04:00
Shubham
62d9bf9bae 🎨 code comments and test for getMenuBarHeight function 2017-05-30 17:26:02 -04:00
Kevin Sawicki
bf2fca3dd1 Use base::DictionaryValue converter 2017-05-30 13:00:55 -07:00
Kevin Sawicki
4a5831a733 Add initial getGPUFeatureStatus spec 2017-05-30 13:00:00 -07:00
Milan Burda
0ecfb4e2f8 Add app.getGPUFeatureStatus 2017-05-30 20:35:14 +02:00
Kevin Sawicki
717a1a666c Merge pull request #9589 from electron/rebuild-before-specs
Rebuild native modules before specs run
2017-05-30 09:50:15 -07:00
Kevin Sawicki
e83d66294e Remove unused function 2017-05-30 09:17:05 -07:00
Kevin Sawicki
5cf4995f2e DRY up logic to check if native modules should be loaded 2017-05-30 09:15:38 -07:00
Kevin Sawicki
90964290a6 Add separate run script just to rebuild test modules 2017-05-30 09:13:51 -07:00
Kevin Sawicki
24f0813ef1 Add missing update_node_modules import 2017-05-30 09:13:51 -07:00
Kevin Sawicki
18a80c0ed7 Add missing safe_mkdir import 2017-05-30 09:13:51 -07:00
Kevin Sawicki
dd0601e674 Rebuild native modules used in specs on each CI run 2017-05-30 09:13:51 -07:00
Kevin Sawicki
0d4a397656 Only rebuild test modules on non-Windows or release builds 2017-05-30 09:13:51 -07:00
Kevin Sawicki
9971f0d54c Add option to rebuild test modules before running 2017-05-30 09:13:51 -07:00
Kevin Sawicki
54f4644660 Rebuild modules after installing 2017-05-30 09:13:51 -07:00
Kevin Sawicki
29f776c57d Allow headers directory to be specified on cli 2017-05-30 09:13:51 -07:00
Kevin Sawicki
22bc1b004e Move npm helpers to lib/util 2017-05-30 09:13:51 -07:00
Kevin Sawicki
7e867f478e Don't build helpers or rebuild modules during bootstrap 2017-05-30 09:13:51 -07:00
Kevin Sawicki
f67968d244 Parse args in test.py 2017-05-30 09:13:51 -07:00
Kevin Sawicki
6b787ae4e0 Merge pull request #9591 from electron/remove-runas
Remove runas dependency from root package.json
2017-05-30 09:13:23 -07:00
Kevin Sawicki
b307b6e602 Remove runas and code no longer using it 2017-05-30 08:49:54 -07:00
Samuel Attard
227a2bd5dc Fix reference typed reply placeholder 2017-05-30 20:29:27 +10:00
Samuel Attard
3938373ecb Fix linting errors and add isSupported 2017-05-30 20:27:24 +10:00
Samuel Attard
686b1388b1 Fix linting issues 2017-05-30 19:12:36 +10:00
Samuel Attard
5048425e6e Update implementation as per feedback 2017-05-30 19:06:51 +10:00
Rajat
a1da54047a Docs : Add requirement for 'webContents.sendInputEvent()` to work. 2017-05-29 20:19:28 +05:30
Rajat
973945a8e3 Docs: Add BrowserWindow needs to be focused for webContents.sendInputEvent() to work. 2017-05-29 20:10:32 +05:30
Samuel Attard
6cdfb43e4e Emit a close event 2017-05-29 21:33:43 +10:00
Samuel Attard
9aa6b83f86 Fix compilation and click events on macOS 2017-05-29 21:22:44 +10:00
Samuel Attard
c741b584a1 Remove OS specific implementations 2017-05-29 21:18:18 +10:00
Samuel Attard
058bdfbced Use NotificationPresenter - macOS 2017-05-29 20:02:33 +10:00
Cheng Zhao
7d994f2a9e Merge pull request #9535 from brenca/datalist-element
Add datalist element support
2017-05-29 16:01:40 +09:00
Zeke Sikelianos
116403ed03 remove electron prefix 2017-05-26 15:57:39 -07:00
Charlie Hess
49f76b8bc3 Add Electron prefixes. 2017-05-26 15:56:54 -07:00
Charlie Hess
b88327e025 Type definitions for getCPUUsage / getIOCounters 2017-05-26 15:56:54 -07:00
Kevin Sawicki
eb81eeacce Merge pull request #9602 from electron/missing-return-types
Add backticks around return types
2017-05-26 14:28:48 -07:00
Kevin Sawicki
b9a25113a6 Add backticks to Object 2017-05-26 14:04:28 -07:00
Kevin Sawicki
b0d4bf81a0 Add backticks around return types 2017-05-26 13:58:14 -07:00
Kevin Sawicki
44862a131c Bump v1.7.2 2017-05-26 13:33:15 -07:00
Kevin Sawicki
385d6faf1a Remove options to appease typescript definitions 2017-05-26 13:33:09 -07:00
Kevin Sawicki
dcb22d34b5 Mark deviceName as optional 2017-05-26 13:33:03 -07:00
Kevin Sawicki
8ae36c250c Merge pull request #9568 from electron/webview-native-window-open
Support nativeWindowOpen from <webview> tags
2017-05-26 11:11:32 -07:00
Kevin Sawicki
edd840fcc0 Only assert GPU process on macOS 2017-05-26 10:10:56 -07:00
Kevin Sawicki
9f49b71b89 Add cross-origin frame webview spec 2017-05-26 10:10:36 -07:00
Kevin Sawicki
36989e19f8 Add spec for cross-origin blockage 2017-05-26 10:10:36 -07:00
Kevin Sawicki
e735aa7dee web-preferences -> webPreferences 2017-05-26 10:10:36 -07:00
Kevin Sawicki
f5cf6d4ddd Add spec for native window.open from iframe 2017-05-26 10:10:36 -07:00
Kevin Sawicki
8f22e6a265 Add webview example to nativeWindowOpen docs 2017-05-26 10:10:36 -07:00
Kevin Sawicki
0dff863e30 Add comment about CreateNewGuestWindow origins 2017-05-26 10:10:36 -07:00
Kevin Sawicki
9ac2cf0d44 Add comment about disablePopups setting 2017-05-26 10:10:36 -07:00
Kevin Sawicki
6c520a5f40 Fix typo in option name 2017-05-26 10:10:36 -07:00
Kevin Sawicki
dbd240a7cb Return null from native window.open when allowpopups is unset 2017-05-26 10:10:36 -07:00
Kevin Sawicki
a0571e3c72 Add failing spec for native window.open returning null without allowpopups 2017-05-26 10:10:36 -07:00
Kevin Sawicki
4e9efebf47 🎨 2017-05-26 10:10:36 -07:00
Kevin Sawicki
ef01c16c6a Add tests for more nativeWindowOpen events 2017-05-26 10:10:36 -07:00
Kevin Sawicki
9f06b6dc21 Set allowpopups attribute in nativeWindow open specs 2017-05-26 10:10:36 -07:00
Kevin Sawicki
a32b7e5cdb Co-locate nativeWindowOpen specs 2017-05-26 10:10:36 -07:00
Kevin Sawicki
47759a01de Only forward events when nativeWindowOpen is set 2017-05-26 10:10:36 -07:00
Kevin Sawicki
a2a7a1d8c7 Add new-window <webview> spec with nativeWindowOpen 2017-05-26 10:10:36 -07:00
Kevin Sawicki
da2b29796f Add same domain webview nativeWindowOpen spec 2017-05-26 10:10:36 -07:00
Kevin Sawicki
7baf472c0f Implement BrowserPluginGuestDelegate::CreateNewGuestWindow for nativeWindowOpen 2017-05-26 10:10:36 -07:00
Kevin Sawicki
a16cd0bd03 Add failing <webview> with nativeWindowOpen spec 2017-05-26 10:10:36 -07:00
Kevin Sawicki
aceea50f41 Merge pull request #9597 from electron/revert-9358
Revert #9358
2017-05-26 10:09:37 -07:00
Kevin Sawicki
c43c3b3d80 Revert "protocol: use streaming interface between fetcher and requestjob"
This reverts commit 71b5d946e0.
2017-05-26 09:47:22 -07:00
Kevin Sawicki
d53de947b6 Merge pull request #9596 from electron/beta-release-by-default
Create prereleases by default
2017-05-26 09:47:11 -07:00
Kevin Sawicki
9137a2279a Merge pull request #9486 from electron/child-observer
Adding CPU & Memory metrics for App
2017-05-26 09:28:22 -07:00
Kevin Sawicki
14c43f654f 🎨 2017-05-26 09:25:35 -07:00
Kevin Sawicki
8b14df143a Don't assert GPU process on Linux 2017-05-26 09:14:17 -07:00
Kevin Sawicki
2b2b431486 Create prereleases by default 2017-05-26 09:10:26 -07:00
Kevin Sawicki
1e4dd9b163 Store process type as int 2017-05-26 08:53:26 -07:00
Kevin Sawicki
cabcd0ef8f Fix typos in ProcessMetric doc 2017-05-26 08:36:51 -07:00
Kevin Sawicki
7794cabd13 🎨 2017-05-26 08:35:43 -07:00
Kevin Sawicki
d6e626c7e3 Remove crashed render processes from metrics 2017-05-26 08:32:08 -07:00
Kevin Sawicki
b5879b7399 🎨 Minor formatting/doc changes 2017-05-26 07:51:17 -07:00
Birunthan Mohanathas
5e149c827e Merge pull request #9592 from electron/upgrade-libcc-wheel
Upgrade to libchromiumcontent@94c5817
2017-05-26 07:10:23 +03:00
Birunthan Mohanathas
ea11f8bf7d Upgrade to libchromiumcontent@94c5817
This pulls in electron/libchromiumcontent#306.
2017-05-26 06:57:09 +03:00
Heilig Benedek
192cd7787b move popup related code to nativewindow 2017-05-26 03:39:36 +02:00
Kevin Sawicki
8a3b2997c3 Merge pull request #9570 from electron/re-enable-crash-reporter-specs
Re enable crash reporter specs on Linux CI
2017-05-25 17:05:30 -07:00
Kevin Sawicki
d202c35be9 Enable crash reporter specs on Linux CI 2017-05-25 16:58:37 -07:00
Kevin Sawicki
5adc8299d6 Merge pull request #9590 from electron/add-pre-cibuild
Enable LIMIT_OUTPUT_IGNORE_SEGFAULTS on Linux CI
2017-05-25 16:57:24 -07:00
Kevin Sawicki
9b7dde99d8 Enable LIMIT_OUTPUT_IGNORE_SEGFAULTS on Linux CI 2017-05-25 16:50:17 -07:00
Kevin Sawicki
fea165bef8 Merge pull request #9582 from EnterTheNameHere/patch-1
Update webview-tag.md
2017-05-25 08:52:33 -07:00
Kevin Sawicki
5ce5964260 Merge pull request #9579 from electron/link-with-cups-on-mac
Add -lcups to link settings on mac
2017-05-25 08:51:13 -07:00
Jan Němeček
1b96f66541 Update webview-tag.md
Spelling correction.
2017-05-25 13:32:20 +02:00
Hari Krishna Reddy Juturu
c4e5ba6015 Fixing indentations 2017-05-24 21:15:34 -07:00
Hari Krishna Reddy Juturu
e5a9ef296d Using process handle from RenderProcessHost 2017-05-24 21:07:35 -07:00
Hari Juturu
de5eaf9336 Remove .only 2017-05-24 21:07:35 -07:00
Hari Juturu
5e04fab2ba Adding deprecations 2017-05-24 21:07:35 -07:00
Hari Juturu
d73004f1df revert mistaken added brightray 2017-05-24 21:07:35 -07:00
Hari Juturu
939747945e Adding CPU & Memory metrics for App 2017-05-24 21:07:35 -07:00
Kevin Sawicki
0d2aa5c027 Merge pull request #9580 from rajatsingla28/staging
Docs: Remove optional parameter for removeAllListeners.
2017-05-24 16:31:06 -07:00
Rajat
ec6eb74ccc Docs: Remove optional parameter for removeAllListeners.
Fixes #9277
2017-05-25 00:36:14 +05:30
Kevin Sawicki
4d1eb1e4a7 Add -lcups on mac 2017-05-24 09:43:37 -07:00
Cheng Zhao
1257dee0b5 Merge pull request #9547 from electron/jessie-sysroot
Build with Debian Jessie sysroot image
2017-05-24 16:25:39 +09:00
Shubham
793d5fd191 🎨 Fix documentation 2017-05-23 23:27:55 -04:00
Shubham
ec0e33e258 Add mac_os tag to documentation 2017-05-23 22:39:54 -04:00
Shubham
b2f1cdfbae Add API to get top bar height on macOS 2017-05-23 22:24:56 -04:00
Tony Ganch
3a9b035d36 Remove page url check in history.pushState
Current implementation of NavigationController does not allow using
`history.pushState()` if page url is not changed.
It worked by mistake in versions < 1.3.6 and got visible after fix 180a77e6.
2017-05-23 22:42:33 +02:00
Tony Ganch
6d64336978 Add test for #9468 2017-05-23 22:42:32 +02:00
Kevin Sawicki
2ed1c122ca Merge pull request #9557 from electron/upgrade-libcc
Upgrade to electron/libchromiumcontent@93c2e1877e
2017-05-23 08:58:46 -07:00
Kevin Sawicki
35299a82fa Upgrade to electron/libchromiumcontent@93c2e1877e 2017-05-23 07:54:21 -07:00
gellert
039908a244 various fixes for macos 2017-05-23 11:41:59 +02:00
Cheng Zhao
a6854c89b7 Link with correct targets in toolchain.gypi 2017-05-23 16:30:07 +09:00
Cheng Zhao
9f3fe5804f Revert "Don't run tests on Janky CI"
This reverts commit b5b2df8e6c.
2017-05-23 16:17:09 +09:00
Cheng Zhao
ff08c36478 Only build against Jessie for arm64 arch 2017-05-23 16:10:54 +09:00
Kevin Sawicki
021b5a9ae0 Merge pull request #9507 from rreimann/pdf-plugins-preference
Suppress dispatching to PDF viewer if plugins are disabled
2017-05-22 14:34:35 -07:00
Kevin Sawicki
647e88da5a Delete mock.pdf after download completes 2017-05-22 14:24:28 -07:00
rreimann
25015c4c63 Fix naming and formatting 2017-05-22 14:14:59 -07:00
rreimann
791486433d Extract common code into IsPreferenceEnabled method 2017-05-22 14:14:59 -07:00
rreimann
65da983ccb Move preferences check to OnPdfResourceIntercepted 2017-05-22 14:14:59 -07:00
rreimann
13665090d5 Add new test and enable plugins for existing tests 2017-05-22 14:14:59 -07:00
rreimann
7982754958 Fix linting violations 2017-05-22 14:14:59 -07:00
rreimann
1b75e45a62 Suppress pdf plugin dispatch if plugins are disabled 2017-05-22 14:14:59 -07:00
Kevin Sawicki
337f61af98 Merge pull request #9243 from seanchas116/custom-clipboard-data
Support writing custom formats into clipboard
2017-05-22 14:01:05 -07:00
Kevin Sawicki
ad9496144f Remove buffers setting in write spec 2017-05-22 13:55:35 -07:00
Kevin Sawicki
6b7ec621e3 Throw error when non-Buffer specified instead of crashing 2017-05-22 13:53:58 -07:00
Kevin Sawicki
5adf9c47fc Remove buffers option since only a single is supported 2017-05-22 13:49:26 -07:00
Ryohei Ikegami
8f35afd941 Include map 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
a26e360e82 Remove console.log 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
fd313ad578 Tweak doc text 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
f2471cb1b7 Rename buffer -> buffers 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
6ec344a499 Add experimental 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
44840ab6cc Add docs 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
03fdc7aa28 Add buffer support in clipboard.write() 2017-05-22 13:43:21 -07:00
Ryohei Ikegami
66cc07d8e9 Add clipboard.writeBuffer 2017-05-22 13:43:21 -07:00
Kevin Sawicki
6bcf3597c2 Merge pull request #9554 from javan/patch-2
Update BrowserView docs. Fixes #9553
2017-05-22 10:43:15 -07:00
Javan Makhmali
b07a6af713 Update BrowserView docs. Fixes #9553 2017-05-22 13:41:01 -04:00
Kevin Sawicki
8b22108b5a Merge pull request #9551 from electron/upgrade-libcc
Upgrade libcc
2017-05-22 09:59:04 -07:00
Kevin Sawicki
285c0b1757 Upgrade libcc to electron/libchromiumcontent@a3cff0522 2017-05-22 09:27:58 -07:00
Kevin Sawicki
77ec648740 Obtain SHA-1 of libcc commit from submodule 2017-05-22 09:27:32 -07:00
Samuel Attard
193c561815 Remove sample notification code 2017-05-23 02:19:03 +10:00
Samuel Attard
d1fc832ca0 Update for the brightray move 2017-05-23 02:18:34 +10:00
Samuel Attard
f5de57dbdb Mark notification API as experimental 2017-05-23 02:05:13 +10:00
Samuel Attard
8815da314f Add Notification API docs 2017-05-23 02:05:13 +10:00
Samuel Attard
e7569ed499 Remove shell link validation, users should do this themselves 2017-05-23 02:05:13 +10:00
Samuel Attard
da31615de5 Basic linux impl 2017-05-23 02:05:13 +10:00
Samuel Attard
c6196810a6 Code cleanup 2017-05-23 02:05:13 +10:00
Samuel Attard
03688b9415 Get image notifications working on Win7 + Win10 2017-05-23 02:05:13 +10:00
Samuel Attard
6bbc4c3113 Support Windows 7 notifications from brightray 2017-05-23 02:05:13 +10:00
Samuel Attard
a4bd26fab0 Fix string16 init on macOS 2017-05-23 02:05:13 +10:00
Samuel Attard
7c38633d1e Initial semi-working windows implementation 2017-05-23 02:05:13 +10:00
Samuel Attard
5dd4d6a961 macOS implementation of notifications in the main process 2017-05-23 02:05:13 +10:00
Kevin Sawicki
433a827cc3 Upgrade libcc to electron/libchromiumcontent@a3cff0522 2017-05-22 09:04:23 -07:00
Kevin Sawicki
37ed44cf1c Merge pull request #9544 from kyokutyo/fix-typo-in-japanese-docs
Fix typo in Japanese docs
2017-05-22 08:56:29 -07:00
Kevin Sawicki
559d13091e Merge pull request #9540 from RevoluPowered/patch-1
Fixed tutorial debugger launching electron incorrectly
2017-05-22 08:55:58 -07:00
Birunthan Mohanathas
cd2e6f497f Fix missing return value type for systemPreferences.getUserDefault 2017-05-22 17:19:03 +03:00
Birunthan Mohanathas
a8e4a0e765 Add BrowserView to docs index 2017-05-22 17:12:17 +03:00
Cheng Zhao
b5b2df8e6c Don't run tests on Janky CI 2017-05-22 19:17:59 +09:00
Cheng Zhao
57551cfad9 Fix missing dep of libdatrie1 2017-05-22 19:06:46 +09:00
Cheng Zhao
27c5d98c49 Fix missing deps when building for ia32 and arm 2017-05-22 17:45:24 +09:00
Cheng Zhao
5baffd49e7 Fix pylint warnings 2017-05-22 17:19:34 +09:00
Cheng Zhao
28f11516fe Build with jessie sysroot image 2017-05-22 16:53:45 +09:00
Cheng Zhao
94be438ab9 Download debian jessie sysroot images 2017-05-22 16:31:54 +09:00
kyokutyo
9cbc5a1cdd Fix typo in Japanese docs 2017-05-22 14:31:26 +09:00
Heilig Benedek
df911593d8 Fix menubar animations being incorrect in RTL layout 2017-05-21 22:36:10 +02:00
Heilig Benedek
d5c038a7fb ci build fix 2017-05-21 20:57:19 +02:00
Heilig Benedek
218e28b136 minor fixes and enable datalist elements in OSR 2017-05-21 19:55:19 +02:00
Gordon MacPherson
9b4fef3c38 Fixed vscode debugging code
Fixes app.getPath("userData") pointing to the wrong folder. (electron in %appdata%)

The old debugger essentially runs:
.\node_modules\.bin\electron main.js

Which makes userData incorrect and various other things wrong related to app launch.

The new version correctly executes:
.\node_modules\.bin\electron .

Which means when you call app.getPath("userData") it will return the correct folder name, and not 'electron', which is what my app was doing even though the folder was named properly.
2017-05-20 14:56:26 +01:00
Heilig Benedek
a95d6b997b add ability to open popup on second click 2017-05-20 04:21:11 +02:00
Heilig Benedek
4949531f57 🎨 lint fix 2017-05-19 21:52:18 +02:00
Heilig Benedek
f360104bee add datalist element view 2017-05-19 21:36:37 +02:00
Kevin Sawicki
8404bdd568 Merge pull request #9397 from electron/enable-webview
Allow enabling <webview> tag with node integration disabled
2017-05-19 10:58:10 -07:00
Kevin Sawicki
6a3f2e90db Tweak webviewTag option description 2017-05-19 10:22:28 -07:00
Kevin Sawicki
74b7afbec7 Merge origin/master into enable-webview 2017-05-19 10:17:34 -07:00
Kevin Sawicki
dcde0a00fb Merge pull request #9527 from electron/brightray-cleanup
Brightray cleanup after import
2017-05-19 09:07:35 -07:00
Kevin Sawicki
09a3e26716 Add full prefix to main_delegate.h include 2017-05-19 08:46:15 -07:00
Kevin Sawicki
7e185ef1a3 Remove extra newlines 2017-05-19 08:46:15 -07:00
Kevin Sawicki
7aacf786d6 Remove unneeded brightray folder from include dirs 2017-05-19 08:46:15 -07:00
Kevin Sawicki
43f7520d4f Add missing brightray prefix 2017-05-19 08:46:15 -07:00
Kevin Sawicki
e19eef025d Remove lint from inspectable_web_contents_view_views.h/cc 2017-05-19 08:46:15 -07:00
Kevin Sawicki
4625159310 Add memory include for std::unique_ptr 2017-05-19 08:46:15 -07:00
Kevin Sawicki
278a283801 🎨 Group includes 2017-05-19 08:46:15 -07:00
Kevin Sawicki
d7321ed980 Add brightray prefix to include paths from within brightray 2017-05-19 08:46:15 -07:00
Kevin Sawicki
c4608c0f37 Fix build/include_alpha linter violations in brightray 2017-05-19 08:46:15 -07:00
Kevin Sawicki
b6992436a0 Remove exclusion of runtime/references rule 2017-05-19 08:46:15 -07:00
Kevin Sawicki
f193b2b2a6 Fix build/include_what_you_use linter violations in brightray 2017-05-19 08:46:15 -07:00
Kevin Sawicki
cfb5b6ac89 Fix build/header_guard linter violations in brightray 2017-05-19 08:46:15 -07:00
Kevin Sawicki
bb4a61c7ff Remove unused includes 2017-05-19 08:46:15 -07:00
Kevin Sawicki
6e3a0b50cc Remove 10.8 foundation_util workaround 2017-05-19 08:46:15 -07:00
Kevin Sawicki
c6190dc094 Remove unused BRYApplication class 2017-05-19 08:46:15 -07:00
Kevin Sawicki
ca274f7be0 Use kIgnoreCertificateErrors from content_switches.h 2017-05-19 08:46:15 -07:00
Kevin Sawicki
db6d75ca90 Merge pull request #9518 from TingPing/tingping/gio-trash
Support `gio` as trash implementation
2017-05-19 08:44:56 -07:00
Cheng Zhao
f793db2b2a Merge pull request #9519 from electron/better-patch
Use v8::ArrayBuffer::Allocator inside Node
2017-05-19 17:49:02 +09:00
Kevin Sawicki
e0b9395a13 Merge pull request #8596 from renaesop/master
Print enhancement
2017-05-18 11:42:02 -07:00
Kevin Sawicki
73b49f0dfe Fix JSON issue in example block 2017-05-18 11:28:10 -07:00
Kevin Sawicki
97160ffa63 Make isDefault a bool 2017-05-18 10:51:44 -07:00
Kevin Sawicki
a8d25d6855 Add printer info structure file 2017-05-18 10:50:08 -07:00
Kevin Sawicki
d5e66f7cd9 Add parameter name 2017-05-18 10:40:03 -07:00
Kevin Sawicki
aa29bf8019 🎨 2017-05-18 10:26:22 -07:00
Kevin Sawicki
e0b39247a9 Tweak print docs 2017-05-18 10:17:08 -07:00
Kevin Sawicki
92f14f8d52 printerList() -> getPrinters() 2017-05-18 10:14:55 -07:00
Kevin Sawicki
84a9b6a42d Merge remote-tracking branch 'origin/master' into renaesop_master 2017-05-18 10:08:40 -07:00
Kevin Sawicki
f556d1924d Merge pull request #9358 from electron/fetch_job_uaf_patch
protocol: use streaming interface between fetcher and requestjob
2017-05-18 09:58:05 -07:00
Cheng Zhao
f4420b449f Use v8::ArrayBuffer::Allocator inside Node 2017-05-18 16:26:46 +09:00
TingPing
98186c4143 Support gio as trash implementation
Ideally this will become the default as `gvfs-trash` is deprecated and nothing more than a wrapper to `gio`
but at least allow easily opting into the modern method.
2017-05-17 23:46:29 -04:00
Kevin Sawicki
9ce3a8c3a7 Merge pull request #9516 from electron/flaky-pid-test
Assert OS pid after load finishes
2017-05-17 17:11:03 -07:00
Kevin Sawicki
65ab71c894 Assert pid after load finishes 2017-05-17 17:10:41 -07:00
Kevin Sawicki
251a61a151 Merge pull request #9513 from electron/download-url
atom-shell -> electron in node_release_urlbase
2017-05-17 16:58:11 -07:00
Kevin Sawicki
e75c0e47c2 atom-shell -> electron in node_release_urlbase 2017-05-17 14:58:09 -07:00
Kevin Sawicki
a285a3e64b Default webviewTag to false 2017-05-17 14:01:45 -07:00
Kevin Sawicki
1a210ed114 Remote stray © 2017-05-17 14:00:40 -07:00
Kevin Sawicki
6fccb75dfb Mention preloadURL is in webPreferences 2017-05-17 13:59:48 -07:00
Kevin Sawicki
27a4522d65 Add will-attach-webview advice to security.md 2017-05-17 13:56:19 -07:00
Kevin Sawicki
fd782706b2 Add explicit spec for removing preload from webview 2017-05-17 13:47:00 -07:00
Kevin Sawicki
9e88d337ec Inherit webviewTag setting from parent window 2017-05-17 13:37:23 -07:00
Kevin Sawicki
e817dbf50a Add failing spec for webviewTag inheritance 2017-05-17 13:27:28 -07:00
Kevin Sawicki
bde13353fb Rename option to webviewTag and default to nodeIntegration value 2017-05-17 13:12:23 -07:00
Kevin Sawicki
837ea884de Merge remote-tracking branch 'origin/master' into enable-webview 2017-05-17 12:45:29 -07:00
Kevin Sawicki
5a88f76762 Merge pull request #9508 from electron/upgrade-libcc
Upgrade libchromiumcontent
2017-05-17 10:51:41 -07:00
Kevin Sawicki
3f4abc6323 Upgrade to electron/libchromiumcontent@ecc5298428 2017-05-17 08:53:29 -07:00
Cheng Zhao
9bed0ffdbf Merge pull request #9440 from brenca/osr-fixes
Additional small OSR fixes
2017-05-17 17:14:27 +09:00
Cheng Zhao
6826595e9e Merge pull request #9389 from electron/fix-remote-exception-sandbox
Keep track of remote object reference count.
2017-05-17 16:20:26 +09:00
Kevin Sawicki
d66b32b959 Merge pull request #9473 from electron/dash-dash-inspect
Support --inspect option to debug main process
2017-05-16 15:38:08 -07:00
Kevin Sawicki
d34be4c0a6 Upgrade node for protocol from libcc 2017-05-16 15:13:53 -07:00
Kevin Sawicki
d8aca08da7 Set _debugWaitConnect on --inspect-brk 2017-05-16 14:50:49 -07:00
Kevin Sawicki
c419ebdd6d Remove unused test server 2017-05-16 14:44:28 -07:00
Kevin Sawicki
3f87880990 Bump node for inspector Windows fixes 2017-05-16 14:44:28 -07:00
Kevin Sawicki
5337b4ad94 Only define ICU constants in release builds 2017-05-16 14:44:28 -07:00
Kevin Sawicki
b549b20d2c Convert arg string to utf8 on Windows 2017-05-16 14:44:28 -07:00
Kevin Sawicki
e3160126d6 Update debug CLI flags 2017-05-16 14:44:28 -07:00
Kevin Sawicki
03c2d6f435 Make chrome instructions a list item 2017-05-16 14:44:28 -07:00
Kevin Sawicki
690b2e91c4 Update docs for new --inspect support 2017-05-16 14:44:28 -07:00
Kevin Sawicki
a33643c518 Start node inspector agent when --inspect is present 2017-05-16 14:44:28 -07:00
Kevin Sawicki
7469d09dae Build v8 inspector through ndoe 2017-05-16 14:44:28 -07:00
Kevin Sawicki
98cce37e3d Upgrade node enable inspector target 2017-05-16 14:44:28 -07:00
Kevin Sawicki
693f6a24fc Bump v1.7.1 2017-05-16 12:42:37 -07:00
Kevin Sawicki
1df72e42a5 Merge pull request #9404 from tom-james-watson/master
Clarify dialog blocking functionality
2017-05-16 12:39:23 -07:00
Kevin Sawicki
e2ad948300 Merge pull request #9491 from iamkun/bugfix/fix_link_url
Fix broken link in documentation translations 😀
2017-05-16 10:13:51 -07:00
Kevin Sawicki
7a091e629b Merge pull request #9489 from paulinaika/id-translation
Id translation
2017-05-16 10:13:29 -07:00
Thiago de Arruda
5654ff0d43 Add test for #9387 2017-05-16 09:07:41 -03:00
Thiago de Arruda
6b5bd3b6ce Fix how rpc-server releases references after page reload
In addition to listening for "render-view-deleted", listen for
"ELECTRON_BROWSER_CONTEXT_RELEASE" synchronous message, which is sent by the
remote module when the page is about to be navigated.

This is required to allow child windows running in the same renderer to
correctly manage remote object references, since `render-view-deleted` is only
called when the renderer exits.

Close #9387
2017-05-16 09:05:52 -03:00
iamkun
b4dcb6512a Update README.md 2017-05-16 16:00:45 +08:00
paulinaika
b20085fa7a 📝 fix typo docs-translations/id/tutorial/using-widevine-cdm-plugin.md and docs/tutorial/using-widevine-cdm-plugin.md from previous commit [ci skip] 2017-05-16 16:49:56 +10:00
paulinaika
8a2f24c95f 📝 translate to Indonesian using-widevine-cdm-plugin.md and windows-store-guide.md [ci skip] 2017-05-16 16:28:37 +10:00
Kevin Sawicki
22099747af Merge pull request #9483 from electron/os-process-id-tweaks
Minor updates to webContents.getOSProcessId()
2017-05-15 14:00:59 -07:00
Kevin Sawicki
4f99cb19bd 🔥 ; 2017-05-15 13:38:57 -07:00
Kevin Sawicki
0ae5f7e623 Assert PID is 0 with no URL 2017-05-15 13:34:30 -07:00
Kevin Sawicki
350528707b Return base::ProcessId 2017-05-15 13:29:34 -07:00
Kevin Sawicki
d79ac8d9c1 Merge pull request #9222 from alexstrat/add-os-process-id
Add OS pid to web-contents
2017-05-15 13:28:47 -07:00
Kevin Sawicki
35a39944bd Merge pull request #9481 from djpereira/master
Update desktopCapturer documentation
2017-05-15 12:23:29 -07:00
Kevin Sawicki
5b6b1707ad Merge pull request #9476 from electron/disable-crash-specs-on-linux
Disable crashReporter specs on Linux CI
2017-05-15 12:19:00 -07:00
Alexandre Lachèze
9b776369e6 👕 2017-05-15 21:00:13 +02:00
Birunthan Mohanathas
4ad6789e00 Merge pull request #9480 from electron/update-docs-deps
Update electron-typescript-definitions to latest version
2017-05-15 21:57:31 +03:00
Birunthan Mohanathas
b01bc32051 Update electron-typescript-definitions to latest version 2017-05-15 21:45:17 +03:00
Daniel Pereira
f4d3c169b0 :memo:Update documentation desktopCapturer to javascript[ci skip] 2017-05-15 13:45:14 -05:00
Daniel Pereira
37bcc96e95 :memo:Update constraints for audio sharing[ci skip] 2017-05-15 13:42:47 -05:00
Daniel Pereira
e38e294be3 :memo:Update use of deprecated getUserMedia[ci skip] 2017-05-15 13:38:32 -05:00
Kevin Sawicki
c7e6cbcf9f Merge pull request #9435 from electron/disk-cache-size-flag
support --disk-cache-size flag
2017-05-15 11:09:38 -07:00
Birunthan Mohanathas
a1e826e405 Fix copy paste typos in BrowserView docs 2017-05-15 21:09:11 +03:00
Alexandre Lachèze
77bf4c8ebb 📝 document getOSProcessId() 2017-05-15 20:02:20 +02:00
Kevin Sawicki
bcbfd0d5c6 Disable crashReporter specs on Linux CI 2017-05-15 11:01:53 -07:00
Alexandre Lachèze
2f297b1893 Add simple spec for getOSProcessId() 2017-05-15 19:57:19 +02:00
Kevin Sawicki
b4fc50e3b2 Doc --disk-cache-size 2017-05-15 10:38:20 -07:00
Kevin Sawicki
ed076a8693 Remove unneeded HasSwitch check 2017-05-15 10:35:43 -07:00
Dun Liang
5b02974aa8 fix line is > 80 characters long 2017-05-15 10:35:43 -07:00
Dun Liang
9ce08d08de support --disk-cache-size flag #290 2017-05-15 10:35:43 -07:00
Kevin Sawicki
e708a45496 Merge pull request #9436 from electron/debug-crash
Remove support for --debug/--debug-brk
2017-05-15 08:47:52 -07:00
Kevin Sawicki
b09086c1b8 Merge pull request #9470 from electron/MarshallOfSound-patch-1
Fix createFromDataURL return type
2017-05-15 08:47:09 -07:00
Samuel Attard
d84ddd7fe4 Fix createFromDataURL return type
Fixes #9469
2017-05-16 01:24:06 +10:00
Birunthan Mohanathas
a6e11d3b63 Merge pull request #9460 from electron/fix-docs-typescript
Fix docs for TypeScript definitions
2017-05-14 14:17:12 +03:00
Birunthan Mohanathas
0153731888 Make docs for webview.findInPage and webContents.findInPage consistent 2017-05-14 13:43:42 +03:00
Birunthan Mohanathas
5cfa697309 Fix postData type definition in docs 2017-05-14 13:43:38 +03:00
Heilig Benedek
802501fb04 update osr specs 2017-05-13 02:14:30 +02:00
gellert
af2c5d1845 fixes not expected scale factor change 2017-05-13 00:59:25 +02:00
Kevin Sawicki
e49ad155a2 Merge pull request #9450 from akost/patch-1
Fixed capitalization and punctuation in README
2017-05-12 14:16:17 -07:00
Andrei K
70539385d1 Fixed capitalization and punctuation in README
Fixed capitalization and punctuation in /ru-RU/README.md
2017-05-12 14:07:40 -07:00
Kevin Sawicki
22397d2c35 Merge pull request #9448 from xaverh/patch-1
Clang-Format extension for Visual Studio Code
2017-05-12 09:48:14 -07:00
Xaver Hellauer
ded1adf165 Clang-Format extension for Visual Studio Code 2017-05-12 18:40:46 +02:00
Kevin Sawicki
9ab01228e7 Merge pull request #9430 from suryast/translate_indonesian
Translate indonesian
2017-05-12 08:48:51 -07:00
Kevin Sawicki
afe58231ba Merge pull request #9360 from electron/sw_protocol_patch
protocol: provide default response code for custom request jobs
2017-05-11 16:01:14 -07:00
Kevin Sawicki
ef4bf7ed93 Use status code constant 2017-05-11 15:33:56 -07:00
Kevin Sawicki
4fdb884feb Fix windows path in service worker spec 2017-05-11 15:33:56 -07:00
deepak1556
3c88447be6 protocol: provide default response code for custom request jobs 2017-05-11 15:33:56 -07:00
Kevin Sawicki
718cd8d711 Remove unsupported debugger in node processes 2017-05-11 15:02:27 -07:00
Heilig Benedek
9f682ee36b fix osr window initial sizing 2017-05-11 23:48:14 +02:00
Kevin Sawicki
4824c24fbc Remove non-functional node debugger usage 2017-05-11 10:59:51 -07:00
deepak1556
71b5d946e0 protocol: use streaming interface between fetcher and requestjob 2017-05-11 22:52:49 +05:30
Kevin Sawicki
190c9c916e Merge pull request #9331 from 22222/issue2579
Add 'will-prevent-unload' event for #2579.
2017-05-11 09:04:40 -07:00
Kevin Sawicki
4e1943dfe6 Minor updates to example
* const-ing
* mainWindow -> win
* add dialog require
2017-05-11 09:01:51 -07:00
Kevin Sawicki
aea25be150 Merge pull request #9432 from electron/fix-docs-8
Fix return type of makeSingleInstance
2017-05-11 08:43:11 -07:00
Kevin Sawicki
ae71dfe3d1 Merge pull request #9423 from electron/brightray-import
Import brightray source and remove submodule
2017-05-11 08:35:41 -07:00
Samuel Attard
f57c1881da Fix return type of makeSingleInstance 2017-05-11 22:09:37 +10:00
Cheng Zhao
1b1c663b32 Merge pull request #8839 from brenca/offscreen-child-window
Offscreen rendering enhancements
2017-05-11 20:52:47 +09:00
22222
4044548f3e Add 'will-prevent-unload' event. 2017-05-11 06:35:35 -05:00
Heilig Benedek
bf58373a40 fix NativeImage size hint crashing when image is created from path 2017-05-11 11:38:34 +02:00
Cheng Zhao
0c3f80c334 Merge pull request #8963 from seanchas116/native-window-open
Add option to use native window.open() in non-sandboxed webcontents
2017-05-11 16:38:10 +09:00
Zeke Sikelianos
1804b800d7 Merge pull request #9429 from electron/ts-node
Fix TypeScript bugs and make it easier to debug
2017-05-11 00:03:25 -07:00
Surya Setiyaputra
7b63409df5 add Indonesian translation of README.md – more to be translated on a later date 2017-05-11 16:55:51 +10:00
Zeke Sikelianos
3273a1b42e add npm scripts for convenience 2017-05-10 23:22:49 -07:00
Zeke Sikelianos
dcfca610f4 bump electron-typescript-definitions version 2017-05-10 23:22:30 -07:00
Ryohei Ikegami
7ac93045b7 Merge branch 'master' into native-window-open 2017-05-11 13:51:43 +09:00
Kevin Sawicki
6ca7787f13 Merge pull request #9427 from electron/fix-docs-6
Fix webcontents capital
2017-05-10 16:30:04 -07:00
Samuel Attard
b4e356212c Fix webcontents capital 2017-05-11 09:28:24 +10:00
Kevin Sawicki
ad5424f886 Merge pull request #9425 from electron/typescript-duplicates
Minor typescript fixes
2017-05-10 16:25:18 -07:00
Kevin Sawicki
6a63028079 Remove vendor\brightray prefix 2017-05-10 15:56:15 -07:00
Kevin Sawicki
6ace5a8e3e Use correct .target_arch path 2017-05-10 15:55:00 -07:00
Kevin Sawicki
330be2fb16 Remove unused bootstrap method 2017-05-10 15:51:28 -07:00
Kevin Sawicki
f46b383824 Add types 2017-05-10 14:29:57 -07:00
Kevin Sawicki
a44f0620b3 : -> - 2017-05-10 14:27:51 -07:00
Kevin Sawicki
edac443673 Correct property name to pid 2017-05-10 14:26:13 -07:00
Kevin Sawicki
b3eae78b5c Update brightray references in doc translations 2017-05-10 14:12:47 -07:00
Kevin Sawicki
e954c60ab8 Update libcc paths to be in root vendor 2017-05-10 14:11:24 -07:00
Heilig Benedek
a76a4ddff2 🎨 lint fix 2017-05-10 23:04:19 +02:00
Kevin Sawicki
500ffdf700 cpplint brightray/ files 2017-05-10 13:51:57 -07:00
Kevin Sawicki
94eff35286 Update docs for new brightray location 2017-05-10 13:42:21 -07:00
Kevin Sawicki
7ff6036420 Consolidate ignores 2017-05-10 13:28:12 -07:00
Kevin Sawicki
de02485d28 Move brightray tools into mains tools folder 2017-05-10 13:28:04 -07:00
Kevin Sawicki
5ea20b5b54 Wire up build for new brightray location 2017-05-10 13:27:49 -07:00
Kevin Sawicki
4dab62dfcf Move brightray submodules to root vendor 2017-05-10 13:27:22 -07:00
Kevin Sawicki
dde21e7657 Remove unused files 2017-05-10 13:21:02 -07:00
Kevin Sawicki
572244272c Remove brightray submodule 2017-05-10 13:20:47 -07:00
gellert
b1095faa71 minor fix for macos 2017-05-10 22:19:05 +02:00
Heilig Benedek
6f80379b30 use computeSize64 instead of getSize 2017-05-10 22:19:05 +02:00
Heilig Benedek
8d1c17e036 remove GetSizeForNewRenderView 2017-05-10 22:19:05 +02:00
Heilig Benedek
5c690ea46e don't store isolate_ in NativeImage and tune size hints 2017-05-10 22:19:05 +02:00
Heilig Benedek
576b702e8b update native_mate and use the MarkHighMemoryUsage API to speed up garbage collection 2017-05-10 22:19:05 +02:00
Heilig Benedek
92cc6746b1 resolve errors introduced during rebase 2017-05-10 22:19:05 +02:00
gellert
aa89bc0bb8 use outer webcontents for popups 2017-05-10 22:19:05 +02:00
Heilig Benedek
f03dccadb3 use white gutter color and paint damage rects over when paint starts in software osr 2017-05-10 22:19:05 +02:00
Heilig Benedek
3b94d268eb lint fix 📝 2017-05-10 22:19:05 +02:00
Heilig Benedek
c54f7f2a8d use bounds instead of bounds_in_pixel 2017-05-10 22:19:05 +02:00
Heilig Benedek
1fcf6ea73f add size hints to NativeImages to make node GC aware of the high amount of memory used by the instances 2017-05-10 22:19:05 +02:00
Heilig Benedek
89277dda90 fix leaking of NativeImage instances 2017-05-10 22:19:05 +02:00
Heilig Benedek
704fde1939 port CEF pr that speeds up and simplifies GPU rendering 2017-05-10 22:19:05 +02:00
Heilig Benedek
2f32311292 fix black bars around popups and scaled images when using gpu rendering 2017-05-10 22:19:05 +02:00
gellert
155fef99ae adds offscreen renderer ipc message to disable external popups 2017-05-10 22:19:05 +02:00
gellert
6b33564056 adds ipc send to disable external popups on macos 2017-05-10 22:19:05 +02:00
Heilig Benedek
ff053bbe06 call InvalidateBounds when popup updates 2017-05-10 22:19:05 +02:00
gellert
062b1ed43e moves createviewfordwidget method to osrrwhv 2017-05-10 22:19:05 +02:00
Heilig Benedek
bccc25165d fix mouse wheel event sending typo 2017-05-10 22:19:05 +02:00
Heilig Benedek
8f546313b6 add popup window bounds to damage_rect 2017-05-10 22:19:05 +02:00
Heilig Benedek
c9fa71bdb3 lint fix 2017-05-10 22:19:05 +02:00
Heilig Benedek
20d2ab29ab Add support for child and popup windows in OSR 2017-05-10 22:19:05 +02:00
Kevin Sawicki
1453f090dc Initial brightray import 2017-05-10 13:14:10 -07:00
Kevin Sawicki
b6319698f1 Bump v1.7.0 2017-05-10 10:42:05 -07:00
Kevin Sawicki
7d3b58aab1 Merge pull request #9116 from electron/chrome58
Upgrade to Chrome 58
2017-05-10 10:41:12 -07:00
Kevin Sawicki
de38461a3f Update NotifyObserversCertDBChanged call to take no arguments 2017-05-10 10:05:48 -07:00
Kevin Sawicki
fb85b26767 Merge remote-tracking branch 'origin/master' into chrome58 2017-05-10 09:42:19 -07:00
Kevin Sawicki
f0c38b7354 Bump v1.6.9 2017-05-10 08:35:30 -07:00
Surya Setiyaputra
379499e71e create folders for translation work 2017-05-11 00:55:38 +10:00
Kevin Sawicki
65bd0ecaa9 Upgrade to Chrome 58.0.3029.110 2017-05-09 21:14:22 -07:00
Kevin Sawicki
609b56c1ec Merge pull request #295 from electron/chrome-58-0-3029-110
Upgrade to Chrome 58.0.3029.110
2017-05-09 21:10:16 -07:00
Zeke Sikelianos
7145aef02c Merge pull request #9415 from electron/no-more-tslint
let the typescript module do its own linting
2017-05-09 16:52:38 -07:00
Kevin Sawicki
012b719163 Merge pull request #294 from electron/updgrade-to-58-0-3029-96
Upgrade to 58.0.3029.96
2017-05-09 16:07:35 -07:00
Zeke Sikelianos
9b82d1a996 let the typescript module do its own linting 2017-05-09 15:44:25 -07:00
Hari Juturu
277c3155a6 use will-create-webview event 2017-05-09 10:12:44 -07:00
Kevin Sawicki
8c856922f3 Merge pull request #9292 from 22222/issue8911
Fix #8911
2017-05-09 09:06:26 -07:00
Kevin Sawicki
aa212bd955 Merge pull request #9408 from Hum4n01d/patch-1
Fix order of OSs
2017-05-09 08:57:03 -07:00
Cheng Zhao
efe23b7595 Use Node's memory allocator for ArrayBuffer
For Buffers created in Node, they are usually allocated in Node and
freed by Chromium's allocator, which will cause crashes when Node and
Chromium are using different allocators.

This commit makes Chromium use Node' allocator for ArrayBuffers.
2017-05-09 14:12:39 +09:00
renaesop
dfcc882dcc Add a test for webcontents.printerList. 2017-05-09 10:38:03 +08:00
HariJ
a05eb9047e Fixing missed variable name 2017-05-08 18:50:20 -07:00
renaesop
cba5e96496 Merge remote-tracking branch 'ups/master' 2017-05-09 09:44:24 +08:00
Hari Krishna Reddy Juturu
3321f7d39c Changing command line option name 2017-05-08 17:27:31 -07:00
Zeke Sikelianos
08dc66c9aa Merge pull request #9388 from electron/use-tslint-config
use tsconfig file when linting electron.d.ts
2017-05-08 15:42:09 -07:00
Kevin Sawicki
8be4332765 coffee -> js 2017-05-08 14:06:58 -07:00
Kevin Sawicki
3dee76a6c1 🎨 2017-05-08 13:43:13 -07:00
Hum4n01d
a694110d48 Fix order of OSs
It was previously inconsistent
2017-05-08 13:36:28 -07:00
Kevin Sawicki
dd84fd4348 Merge pull request #9400 from brianzelip/patch-1
📝 minor docs copy edit - add two words
2017-05-08 08:57:50 -07:00
Tom Watson
50057163c6 📝 clarify dialog buttons blocking side effect 2017-05-08 11:17:33 +02:00
Brian Zelip
68c19fc509 📝 minor docs copy edit - add two words
[ci skip]
2017-05-07 11:06:46 -04:00
Hari Krishna Reddy Juturu
357caf8991 fixing spec 2017-05-06 22:41:05 -07:00
Hari Krishna Reddy Juturu
939885bc66 Remove .only on spec 2017-05-06 22:14:52 -07:00
Hari Krishna Reddy Juturu
94d054cf11 Add option to override webview security 2017-05-06 22:10:42 -07:00
Hari Krishna Reddy Juturu
b4a8ed01f1 PR 44648: Enabling creation on webview with node-integration disabled and raising events
- Enabling creation on webview with node-integration disabled and raising events

Conflicts:
	lib/browser/guest-view-manager.js
2017-05-06 20:50:01 -07:00
Kevin Sawicki
b712521056 Merge pull request #9381 from electron/cpu-usage-fix
CPU Usage requires process metrics to be preserved
2017-05-05 16:03:26 -07:00
Zeke Sikelianos
f228809317 fix the tslint.json path 2017-05-05 15:00:29 -07:00
Zeke Sikelianos
d4d1409e6f use tsconfig file when linting electron.d.ts 2017-05-05 13:52:14 -07:00
Zeke Sikelianos
0a941fe2f5 Merge pull request #9385 from LestaD/patch-1
Add Russian Telegram community
2017-05-05 10:34:06 -07:00
Sergey Sova
888b2d6bd1 Add Russian Telegram community 2017-05-05 19:34:53 +03:00
Zeke Sikelianos
7d7a2d9319 Merge pull request #7857 from electron/publish-electron.d.ts
Initial scripts to publish electron.d.ts
2017-05-05 08:31:00 -07:00
Zeke Sikelianos
c46b70c68d Merge pull request #9383 from johangp/patch-1
Is Google Chrome an open source browser?
2017-05-05 08:11:48 -07:00
Johan Giraldo
39d7981624 Is Google Chrome an open source browser?
Google Chrome isn't an open source project. Chromium is an open source project, so I think that is more precise say "and is used in Chromium, the open source browser from Google" or something like these.
2017-05-05 13:49:38 +02:00
Hari Krishna Reddy Juturu
d65c4fe912 CPU Usage requires process metrics to be preserved 2017-05-05 02:38:51 -07:00
Kevin Sawicki
6980e92a00 Merge pull request #8998 from electron/felix-notification-docs
Improve notification docs
2017-05-04 15:31:12 -07:00
Kevin Sawicki
70033009eb Merge pull request #9373 from electron/process-metrics
Adding CPU and I/O metrics to process module
2017-05-04 15:30:19 -07:00
Hari Krishna Reddy Juturu
07d8dfaa53 Fixing UT 2017-05-04 14:50:06 -07:00
Hari Krishna Reddy Juturu
6b51c25820 Exposing cpu & io counters function similar to mem methods 2017-05-04 14:48:37 -07:00
Hari Krishna Reddy Juturu
472dad1ffc convert var to const 2017-05-04 14:33:59 -07:00
Hari Krishna Reddy Juturu
982c5064d8 Removing extra bool 2017-05-04 14:33:59 -07:00
Hari Krishna Reddy Juturu
656fb593b4 Fixing lint error 2017-05-04 14:33:59 -07:00
Hari Krishna Reddy Juturu
8bc4d3f8bd GetIOCounters is not implemented on mac 2017-05-04 14:33:59 -07:00
Hari Krishna Reddy Juturu
3c71f542a8 Fixing UT on mac 2017-05-04 14:33:59 -07:00
Hari Krishna Reddy Juturu
8a5aa04756 Adding CPU and I/O metrics to process module 2017-05-04 14:33:59 -07:00
Kevin Sawicki
70e199e255 Merge pull request #9333 from electron/process-memory-info-sandbox
Expose `process.get{System,Process}MemoryInfo` to sandbox
2017-05-04 14:17:44 -07:00
Kevin Sawicki
eebae82bc1 Merge pull request #9315 from electron/segmented-control-mode
Add mode prop to segmented touch bar control
2017-05-04 14:16:28 -07:00
Kevin Sawicki
01b3db3d2f 🎨 2017-05-04 14:15:48 -07:00
Kevin Sawicki
1e4b99bd7f Merge pull request #9338 from mcizol/master
add auto-invite for turkish community(en-readme)
2017-05-04 14:14:22 -07:00
Kevin Sawicki
59511354fd Merge pull request #9214 from electron/app-memoryinfo
API to get memory of all processes of the app
2017-05-04 14:00:30 -07:00
Kevin Sawicki
3b3e7cc14e Assert memory info for all returned processes 2017-05-04 13:43:45 -07:00
Hari Krishna Reddy Juturu
ab1bcefe9e Make pid an integer 2017-05-04 13:37:43 -07:00
Kevin Sawicki
edd28c9a91 Link to MemoryInfo structure 2017-05-04 13:35:12 -07:00
Kevin Sawicki
e206aae9fc 🎨 Use snake case 2017-05-04 13:27:42 -07:00
Kevin Sawicki
76c15a7a3e Merge pull request #9348 from tsekityam/patch-1
Change translation of `license` to `授權條款`
2017-05-04 11:32:12 -07:00
Kevin Sawicki
0343db53ad Merge pull request #9344 from rafbm/patch-1
Use actual Chromium l10n_util list in locales.md
2017-05-04 11:31:31 -07:00
Kevin Sawicki
c59fab0179 Merge pull request #9242 from shiftkey/certificate-addition-windows
certificate trust API for Windows
2017-05-03 16:39:00 -07:00
Kevin Sawicki
110611f242 🎨 2017-05-03 16:22:56 -07:00
Kevin Sawicki
d3bb7b7278 Merge pull request #294 from electron/updgrade-to-58-0-3029-96
Upgrade to 58.0.3029.96
2017-05-03 13:42:33 -07:00
22222
042b511a27 Fix #8911 2017-05-03 12:47:00 -05:00
Kevin Sawicki
e1d564da6e Upgrade to Chrome 58.0.3029.96 2017-05-03 08:49:57 -07:00
Kevin Sawicki
dec7a3c12a Upgrade to 58.0.3029.96 2017-05-03 08:48:58 -07:00
Samuel Attard
718dc732ad Add docs and add isSelected arg 2017-05-03 20:25:50 +10:00
Zeke Sikelianos
7956d63e99 tslint electron.d.ts 2017-05-02 16:31:46 -07:00
Kevin Sawicki
164b97af4c Use nodedir option to specify local headers 2017-05-02 13:47:34 -07:00
Kevin Sawicki
20fa2ce147 Rebuild native modules during bootstrap 2017-05-02 13:24:29 -07:00
Kevin Sawicki
c19c14d0b3 Build spec modules against locally generated node headers tarball 2017-05-02 10:14:49 -07:00
Kevin Sawicki
c6c93211be Merge remote-tracking branch 'origin/master' into chrome58 2017-05-02 09:15:16 -07:00
Kevin Sawicki
96ca623846 Merge pull request #9353 from kainjow/patch-1
Add missing word
2017-05-02 09:08:06 -07:00
Kevin Wojniak
342a8fd577 Add missing word 2017-05-02 09:05:07 -07:00
Kevin Sawicki
93d7973590 Merge pull request #288 from electron/chrome58
Upgrade to Chrome 58
2017-05-02 08:52:42 -07:00
Tse Kit Yam
58c3446e40 Change translation of license to 授權條款
The translation of `license` should not be `憑證`.
`憑證` means certificate but not license in Chinese.

For example, [Symantec](https://www.symantec.com/zh/tw/security_response/glossary/define.jsp?letter=d&word=digital-certificate) translated `digital certificate` as `數位憑證`; [Chrome Support](https://support.google.com/chrome/a/answer/3505249?hl=zh-Hant) used the teams `憑證授權單位` and `SSL 憑證` to describe `CA` and `SSL Certificate`. These are all proving that the word `憑證` is commonly used in the translation of `certificate`, but not `license`

I googled for a while, and found that the team `授權條款` is commonly used to describe `license` in Traditional Chinese. The user of the translation `授權條款` includes governments ([Taiwan Government](https://www.tipo.gov.tw/ct.asp?xItem=365132&ctNode=6885&mp=1), [Hong Kong government](http://www1.itfest.gov.hk/sc/event/supplements/0415_BIP_Asia_Seminar_Series_%28eDM%29.pdf)), communities ([Open Source Hong Kong](https://freehkfonts.opensource.hk/download/) and [OpenFoundry](https://www.openfoundry.org/of/download/openlegal/Analyses_and_applying_policies_of_FOSS_licenses_2parts_2/20131118_d.pdf)), and businesses ([Google](https://www.google.com/intl/zh-TW/chromebook/termsofservice.html)).

So I suggest we should use `授權條款`, which has been widely adopted  as translation of `license`, instead of a wrong translation `憑證`.
2017-05-02 17:59:15 +08:00
Brendan Forster
e5648072dc handle untrusted root as well as self-signed 2017-05-02 11:25:51 +10:00
Zeke Sikelianos
b9e6b188f7 🎨 2017-05-01 16:00:25 -07:00
Zeke Sikelianos
52d6e53001 preserve 46823f9 2017-05-01 15:59:00 -07:00
Zeke "Offline in April" Sikelianos
9fd1e2c8c4 Merge branch 'master' into felix-notification-docs 2017-05-01 15:56:14 -07:00
Kevin Sawicki
a748199833 Bump v1.6.8 2017-05-01 15:09:30 -07:00
Rafael Masson
410078bb54 Use actual Chromium l10n_util list in locales.md
I’m not sure where the locale list from the [original commit](bbaab9b355) came from, but it clearly wasn’t copied from `l10n_util`. It was missing Spanish, Portuguese, Polish, Vietnamese, to name a few…

This commit overwrite the whole list with [`l10n_util` as-is](61cfc2b0a8/ui/base/l10n/l10n_util.cc (L41-L175)).
2017-05-01 17:15:37 -04:00
Kevin Sawicki
98d17d64ef Merge pull request #9322 from electron/debugger-json-crash
Parse debugger protocol messages using v8 JSON parser
2017-05-01 10:44:14 -07:00
Kevin Sawicki
b639dd0c81 Remove unused include/require statement 2017-05-01 10:30:11 -07:00
Kevin Sawicki
f2f6415543 Use v8 to parse message as JSON 2017-05-01 10:30:11 -07:00
Kevin Sawicki
db6097ecec Add failing spec for invalid debugger message 2017-05-01 10:30:11 -07:00
Kevin Sawicki
f84c75aa1a Merge pull request #9301 from electron/post-message-origin-check
Use isSameOrigin helper when checking postMessage targetOrigin
2017-05-01 08:57:56 -07:00
Kevin Sawicki
56a4a69dee Add more non-matching target origins 2017-05-01 08:45:38 -07:00
Kevin Sawicki
efc62629ef Fix typo in fixture comment 2017-05-01 08:45:38 -07:00
Kevin Sawicki
fa4ec11a12 Use isSameOrigin helper when posting message 2017-05-01 08:45:38 -07:00
Kevin Sawicki
3c58d50f87 Add failing spec for targetOrigin handling 2017-05-01 08:45:38 -07:00
Thiago de Arruda
a8640fb8a3 Add test to verify memory is released after sandboxed popup is closed 2017-05-01 11:30:07 -03:00
Mustafa C. Izol
416cfeed40 update turkish community link 2017-05-01 15:44:39 +02:00
Mustafa C. Izol
1a2aaecd4b add auto-invite for turkish community(en-readme) 2017-05-01 15:33:25 +02:00
Thiago de Arruda
bbe21cce67 Expose more atom_bindings.cc functions to sandbox 2017-05-01 09:12:39 -03:00
Cheng Zhao
9e0c308b09 Merge pull request #9113 from electron/window_close_patch
browser: make destruction of webContents async
2017-05-01 17:45:58 +09:00
deepak1556
0476e2fd3d destroy browserView webContents asynchronously 2017-05-01 16:53:55 +09:00
deepak1556
c68f41b8d8 destroy new window webContents asynchronously 2017-05-01 16:53:55 +09:00
deepak1556
5e976be43b remove page-title-updated workaround for #3380 2017-05-01 16:53:55 +09:00
deepak1556
e4524ce42e add spec 2017-05-01 16:53:55 +09:00
deepak1556
9e3b8ade12 invoke WebContentsDestroyed manually when destruction path is async 2017-05-01 16:53:14 +09:00
deepak1556
f974a6bda9 browser: make destruction of webContents async 2017-05-01 16:53:14 +09:00
Cheng Zhao
ca7ca3ba1c Merge pull request #9314 from electron/fix-windowopen-memory-leak
Fix context leak in ObjectLifeMonitor.
2017-05-01 15:49:13 +09:00
Ryohei Ikegami
da97150fc9 Fix JS style in test HTMLs 2017-04-30 19:43:21 +09:00
Ryohei Ikegami
3c5179b717 Merge branch 'native-window-open' of github.com:seanchas116/electron into native-window-open 2017-04-30 19:37:23 +09:00
Ryohei Ikegami
8b6b512485 Pass nativeWindowOpen flag to isolated init.js 2017-04-30 19:35:41 +09:00
Ryohei Ikegami
0034b306f5 Add test for nativeWindowOpen + contextIsolation 2017-04-30 19:33:40 +09:00
Ryohei Ikegami
edeac2f59e Split test HTML file into separate ones 2017-04-30 18:54:08 +09:00
Brendan Forster
541efc3b93 tidy up docs 2017-04-29 19:35:49 +10:00
Brendan Forster
14f29e1319 it's 2017 get with the times 2017-04-29 19:29:07 +10:00
Brendan Forster
1ccc2afb03 underscore case all the things 2017-04-29 19:28:42 +10:00
Thiago de Arruda
19b6ba044b Fix context leak in ObjectLifeMonitor.
The RemoteObjectFreer class is keeping the context alive even when the window is
closed. For electron applications that use sandbox, this will cause a memory
leak every time a new window is created with `window.open`.

Close #9191
2017-04-28 11:21:53 -03:00
Samuel Attard
225ccab3d2 Add mode prop to segmented touch bar control 2017-04-28 14:50:58 +10:00
Hari Krishna Reddy Juturu
07b53c0284 Return mate::Dictionary instead of v8::value 2017-04-27 21:07:35 -07:00
Kevin Sawicki
79b02ca71e Merge pull request #9310 from neilstuartcraig/patch-1
Show how to run the example in touch-bar.md
2017-04-27 14:23:13 -07:00
Kevin Sawicki
c26605c384 Minor edits to example guide 2017-04-27 14:22:56 -07:00
HariJ
88ad28b2a5 Removing describe.only 2017-04-27 14:06:53 -07:00
HariJ
81bd9fa3a2 fixing mac ut failure 2017-04-27 14:06:53 -07:00
Hari Krishna Reddy Juturu
3d12440a4a Fixing mac build 2017-04-27 14:06:53 -07:00
Hari Krishna Reddy Juturu
d77c1319f4 Fixing lint error 2017-04-27 14:06:53 -07:00
Hari Krishna Reddy Juturu
27aad902b8 Adding docs, specs and fixing object returned 2017-04-27 14:06:53 -07:00
Hari Krishna Reddy Juturu
bef7d5a520 API to get memory of all processes of the app 2017-04-27 14:06:53 -07:00
Neil Craig
c0669cb46e Update touch-bar.md
Add a simple example of running the example code as it might not be obvious to people who've not used Electron. Hopefully it makes sense :-)
2017-04-27 20:19:17 +01:00
Cheng Zhao
dd2d0b3f4f Update to Chrome 58.0.3029.81 2017-04-27 18:57:04 +09:00
Cheng Zhao
3601ae3549 Update to Chrome 58.0.3029.81 2017-04-27 17:50:02 +09:00
Cheng Zhao
4c47f2d15e Update to Node v7.9.0 2017-04-27 17:20:01 +09:00
Cheng Zhao
301ed2d66c Fix typo when updating code 2017-04-27 16:34:52 +09:00
Cheng Zhao
cbd3b054cb Fix release build 2017-04-27 16:34:52 +09:00
Cheng Zhao
620a1ca167 Fix unresolved symbol to icu::DateInterval 2017-04-27 16:34:52 +09:00
Cheng Zhao
e6e985c677 Fix linking error with icu symbols 2017-04-27 16:34:52 +09:00
Cheng Zhao
5563cf0dc5 Automatically register secure schemes in renderer
Otherwise the behavior of secure schemes would be different with before.
2017-04-27 16:34:52 +09:00
Cheng Zhao
0fb746b350 Fix crash when using secure schemes 2017-04-27 16:34:52 +09:00
Cheng Zhao
fb42a72ad8 Fix building on Windows 2017-04-27 16:34:52 +09:00
Cheng Zhao
8c5fd76286 Fix symbol conflicts in Xlib.h 2017-04-27 16:34:52 +09:00
Cheng Zhao
b3d60bfb3a Fix building on Linux 2017-04-27 16:34:52 +09:00
Cheng Zhao
97fd383c53 There are a few more new values for ChangeCause 2017-04-27 16:34:52 +09:00
Cheng Zhao
7d9d82b522 Fix lack of some Chromium headers 2017-04-27 16:34:52 +09:00
Cheng Zhao
08069e18db Don't use gzip when uploading crash reports 2017-04-27 16:34:52 +09:00
Cheng Zhao
b2b2d8d9a4 Fix crash on exit 2017-04-27 16:34:52 +09:00
Cheng Zhao
d85b58fdb5 Fix API changes of FrameSubscriber 2017-04-27 16:34:52 +09:00
Cheng Zhao
6da696b6f2 Update printing code 2017-04-27 16:34:52 +09:00
Cheng Zhao
326908cebb Fix change of FileDescriptorWatcher API 2017-04-27 16:34:52 +09:00
Cheng Zhao
9f94a0b246 Update Singleton code 2017-04-27 16:34:52 +09:00
Cheng Zhao
e43b34b8f8 Use blink::SchemeRegistry over WebSecurityPolicy
The latter is removing some APIs we use.
2017-04-27 16:34:52 +09:00
Cheng Zhao
481b04358e Fix blink API changes 2017-04-27 16:34:52 +09:00
Cheng Zhao
8634f37dfc Add gen/third_party/WebKit to include dirs 2017-04-27 16:34:52 +09:00
Cheng Zhao
dd3d791cb9 IsolateHolder API has been changed 2017-04-27 16:34:52 +09:00
Cheng Zhao
5fb87f0c1e ResourceHandler API has been changed 2017-04-27 16:34:52 +09:00
Cheng Zhao
803120dae6 Update libcc to fix missing gen/cc headers 2017-04-27 16:34:52 +09:00
Cheng Zhao
6be10ffef2 Fix more API changes due to name changes 2017-04-27 16:34:52 +09:00
Cheng Zhao
50e3bfa764 Fix API changes of base::Value 2017-04-27 16:34:52 +09:00
Cheng Zhao
9d1b88ed59 Fix API changes in OSR code 2017-04-27 16:34:52 +09:00
Cheng Zhao
fc2d62d5cb Fix API changes of Chrome58 2017-04-27 16:34:52 +09:00
Cheng Zhao
453cb2c0b4 Upgrade to Chrome 58.0.3029.40 2017-04-27 16:34:52 +09:00
Brendan Forster
5534181ebd rework docs 2017-04-27 15:12:30 +10:00
Brendan Forster
a1599cf881 focus on the self-signed certificate flow here 2017-04-27 15:06:23 +10:00
Brendan Forster
5151107c28 tighten up indenting 2017-04-27 15:01:55 +10:00
Brendan Forster
50af70a0e8 Merge branch 'master' into certificate-addition-windows 2017-04-27 14:47:50 +10:00
Brendan Forster
80212c0ab4 actually validate the chain before adding 2017-04-27 14:44:58 +10:00
Ryohei Ikegami
1d73e84a29 Merge branch 'master' into native-window-open 2017-04-27 12:03:55 +09:00
Kevin Sawicki
dafd0b6c3c Merge pull request #9299 from electron/menu-item-doc-typos
Fix typos in MenuItem docs
2017-04-26 13:03:46 -07:00
Kevin Sawicki
f6bbcc6efa Fix typos 2017-04-26 13:03:15 -07:00
Kevin Sawicki
eabe7b9dce Merge pull request #9290 from electron/coerce-history-go-offset-to-number
Coerce window.history.go offset argument to number in renderer process
2017-04-26 13:02:53 -07:00
Kevin Sawicki
95ef422ab4 Coerce offset to number in renderer process 2017-04-26 12:37:16 -07:00
Kevin Sawicki
775753c3d7 Add spec for invalid window.history.go offset 2017-04-26 12:37:16 -07:00
Kevin Sawicki
8460a580b9 Merge pull request #9289 from electron/dont-allow-webpreferences-option-setting
Don't allow webPreferences to be overridden in features string
2017-04-26 12:36:51 -07:00
Kevin Sawicki
507f60e33e Don't allow webPreferences to be overrideden in features string 2017-04-26 10:56:53 -07:00
Kevin Sawicki
7726c7c6c4 Add spec for webPreferences in features string 2017-04-26 10:56:53 -07:00
Kevin Sawicki
0aa53f4af7 Merge pull request #9287 from electron/store-frames-to-guest-as-map
Store frames to guest as Map
2017-04-26 10:47:21 -07:00
Kevin Sawicki
91a1e5cdfe Store frame to guests in map 2017-04-26 10:14:11 -07:00
Kevin Sawicki
9643b2a5c5 Add specs for window.open frameName argument 2017-04-26 10:14:11 -07:00
Kevin Sawicki
b9b3abbeae Merge pull request #9286 from electron/to-string-renderer-errors
Throw string conversion errors in render process
2017-04-26 10:12:21 -07:00
Kevin Sawicki
2c48300daa Fix typos in comment 2017-04-26 09:09:42 -07:00
Kevin Sawicki
246937a372 Convert targetOrigin to string in render process 2017-04-26 09:08:47 -07:00
Kevin Sawicki
3894c1c625 Convert frameName/features to strings in render process 2017-04-26 09:08:47 -07:00
Kevin Sawicki
7e285711ca Add spec for window.open toString errors 2017-04-26 09:08:47 -07:00
Kevin Sawicki
4e7e9d1752 Merge pull request #9278 from electron/dont-override-argument-value
Disable node integration in chrome-devtools URLs
2017-04-26 09:08:24 -07:00
Kevin Sawicki
05b6d91bf4 Disable node integration in chrome-devtools: URLs 2017-04-25 13:36:08 -07:00
Kevin Sawicki
3f88eb2f86 Add spec for chrome-devtools URL with no node integration 2017-04-25 13:36:08 -07:00
Kevin Sawicki
c9ec45d9d8 Merge pull request #9250 from electron/inherit-javascript-option
Inherit javascript preference in opened windows
2017-04-25 13:33:53 -07:00
Kevin Sawicki
87db1b8aa7 Document other inherited web preferences 2017-04-25 12:57:53 -07:00
Kevin Sawicki
3e2a1034af Disable JavaScript on child when disabled on parent 2017-04-25 12:57:53 -07:00
Kevin Sawicki
cee0507090 Add failing spec for inheriting Javascript web preference 2017-04-25 12:57:53 -07:00
Kevin Sawicki
6ec74060b4 Enable setting javascript and contextIsolation via window.open 2017-04-25 12:57:53 -07:00
Kevin Sawicki
00a575c84a Merge pull request #9279 from electron/extract-default-app-script
Extract script tags to renderer.js file in default app
2017-04-25 12:55:58 -07:00
Kevin Sawicki
ca5a8b6166 Extract script tags to renderer.js file 2017-04-25 08:27:57 -07:00
Kevin Sawicki
7881376aff Merge pull request #9254 from electron/endsession-event
End session event on browser window
2017-04-24 12:02:05 -07:00
Hari Krishna Reddy Juturu
8458acff26 Removing #ifdef on endsession api 2017-04-24 11:58:08 -07:00
Hari Krishna Reddy Juturu
8a32826876 Removing #ifdef windows for endsession methods 2017-04-24 11:49:21 -07:00
Kevin Sawicki
b6192da757 Merge pull request #9255 from electron/emit-auto-updater-error
Emit auto updater error directly as Error
2017-04-24 10:26:00 -07:00
Hari Krishna Reddy Juturu
9e70372c1f change endsession event name to session-end 2017-04-24 10:16:11 -07:00
Kevin Sawicki
c2d4c93e12 Don't run error event on Linux 2017-04-24 09:47:30 -07:00
Kevin Sawicki
13e4582697 Emit autoUpdater error directly as Error object 2017-04-24 09:47:30 -07:00
Kevin Sawicki
423dd4d57a Add spec for remote autoUpdater error event 2017-04-24 09:47:30 -07:00
Kevin Sawicki
6c99d83b99 Merge pull request #9253 from electron/log-crashes-during-specs
Log all crashes during spec running
2017-04-24 09:47:05 -07:00
Kevin Sawicki
35a627fd60 Log all crashes during specs 2017-04-24 09:26:24 -07:00
Kevin Sawicki
2e223288d2 Merge pull request #9252 from electron/convert-to-string-in-render-process
Convert alert/confirm arguments to strings in render process
2017-04-24 09:26:00 -07:00
Kevin Sawicki
c90fd4dc88 Convert message/title to strings in render process 2017-04-24 09:15:01 -07:00
Kevin Sawicki
a00d36fb07 Add spec for alert/confirm toString errors 2017-04-24 09:15:01 -07:00
Kevin Sawicki
c146f8a308 Merge pull request #9249 from electron/document-write
Don't use document.write in default app
2017-04-24 09:14:29 -07:00
Kevin Sawicki
5f038cb3cb Don't use document.write in default app 2017-04-24 08:57:10 -07:00
Kevin Sawicki
d3ae1d8d23 Merge pull request #9246 from rreimann/master
Clarify requirements for resumable downloads
2017-04-24 08:50:55 -07:00
Kevin Sawicki
13eeb1d17f Minor wording tweaks 2017-04-24 08:50:40 -07:00
Kevin Sawicki
99985c0ed9 Wrap header names in backticks 2017-04-24 08:49:59 -07:00
Kevin Sawicki
9bb944f632 Merge pull request #9273 from electron/update_notification_docs
Updated documentation on desktop notifications on Windows 7
2017-04-24 08:48:44 -07:00
Kevin Sawicki
a26ae85017 Merge pull request #9262 from ArcticZeroo/patch-1
Fix a typo in faq.md
2017-04-24 08:48:20 -07:00
Ales Pergl
46823f944c Updated documentation on desktop notifications on Windows 7 2017-04-24 09:57:34 +02:00
Brendan Forster
f644ba56a3 clean up the code a bit 2017-04-24 11:49:55 +10:00
Brendan Forster
253a4b0114 Merge remote-tracking branch 'electron/master' into certificate-addition-windows 2017-04-24 11:13:34 +10:00
Brendan Forster
ac3385124a reload the current cert database if the certificate was added 2017-04-24 11:12:26 +10:00
ArcticZeroo
64cc537951 Update faq.md
Fix the most horrible typo of all time
2017-04-22 23:11:04 -04:00
rreimann
7ea6d01a8c Rephrase note for resume method 2017-04-22 18:15:07 +02:00
Hari Krishna Reddy Juturu
9e8252c1f9 Remove wm_state change 2017-04-21 14:35:30 -07:00
Hari Krishna Reddy Juturu
3c3e14b820 End session event on browser window 2017-04-21 14:22:11 -07:00
Kevin Sawicki
e9880e9c97 Merge pull request #8996 from swashcap/master
Add documentation note on dynamic Menu items
2017-04-21 13:44:01 -07:00
Kevin Sawicki
d1691e0a37 Merge pull request #9239 from pfrazee/patch-1
Make note about sync webview calls in docs
2017-04-21 13:40:17 -07:00
Kevin Sawicki
7177ea5e9a Bold note for emphasis 2017-04-21 13:39:51 -07:00
Kevin Sawicki
1256ab075c Merge pull request #9248 from electron/stream-test-output-on-windows
Stream test output on Windows CI
2017-04-21 09:15:41 -07:00
Kevin Sawicki
42ccb36df3 Stream test output on Windows CI 2017-04-21 08:53:40 -07:00
Kevin Sawicki
eee9ed2c5d Merge pull request #9241 from electron/doc-symstore
Document downloading debugging tools for windows
2017-04-21 08:50:33 -07:00
Kevin Sawicki
9acd9e878c Mention downloading debugging tools for windows 2017-04-21 08:37:01 -07:00
rreimann
7ce3571270 Clarify requirements for resumable downloads 2017-04-21 15:14:56 +02:00
Brendan Forster
304c8b9562 add some docs for Windows usage 2017-04-21 13:09:49 +10:00
Brendan Forster
c181a8269d and this is how we invoke the callback 2017-04-21 12:47:11 +10:00
Brendan Forster
1439a1e322 and the order here matters apparently 2017-04-21 12:23:50 +10:00
Brendan Forster
b3baf9976f coding style fixes 2017-04-21 12:17:01 +10:00
Kevin Sawicki
1a49374b4c Merge pull request #9237 from electron/root-modules-describe
Add root describe to modules spec
2017-04-20 15:11:27 -07:00
Kevin Sawicki
93603882b1 Add root describe to be able to run whole file 2017-04-20 14:17:58 -07:00
Kevin Sawicki
e95ba067a5 Merge pull request #9238 from electron/wait-for-stdout-close
Wait for close event instead of exit in spec
2017-04-20 14:17:07 -07:00
Paul Frazee
3068d7a43e Make note about sync webview calls in docs 2017-04-20 14:02:41 -05:00
Kevin Sawicki
361c3e0700 Wait for close event instead of exit so stdout done 2017-04-20 11:40:04 -07:00
Kevin Sawicki
a004cada7c Merge pull request #9095 from seanchas116/better-path-resolve
Search for module from app path when URL is not file protocol
2017-04-20 10:49:53 -07:00
Kevin Sawicki
dc8b43901b Merge pull request #9108 from yuya-oc/add-macos-sheet-events
Add sheet-begin and sheet-end events to macOS BrowserWindow
2017-04-20 10:33:31 -07:00
Kevin Sawicki
29a3e11893 Group sheet event methods with other macOS methods 2017-04-20 10:32:14 -07:00
Brendan Forster
5f1bcd2d16 a first pass at the script to import the certificate for Windows 2017-04-20 21:12:32 +10:00
Brendan Forster
dca08c208b and use the same signature for Windows 2017-04-20 14:21:08 +10:00
Brendan Forster
4f40b8a42c stub the windows source file 2017-04-20 14:21:08 +10:00
Kevin Sawicki
454dd00597 Merge pull request #9227 from electron/specs-on-new-ci-machines
Get specs passing on new macOS CI machines
2017-04-19 20:37:37 -07:00
Kevin Sawicki
fae0308861 Use app name in crash dir path on linux/macos 2017-04-19 20:19:17 -07:00
Kevin Sawicki
709d2933b7 🎨 2017-04-19 16:44:31 -07:00
Kevin Sawicki
de62f1ea6c Restart crash service in each spec 2017-04-19 16:37:24 -07:00
Kevin Sawicki
a7a92e1cd3 Still call done when stop server function is null 2017-04-19 09:52:28 -07:00
Kevin Sawicki
4d9cdad37a Close server and connections after each spec 2017-04-19 09:48:32 -07:00
Kevin Sawicki
ece4df0ac7 Increase timeout to 2 minutes 2017-04-19 09:30:03 -07:00
Kevin Sawicki
c05c324464 Remove extra space in description 2017-04-19 09:28:52 -07:00
Kevin Sawicki
6b13fab83a Wait for full screen event before leaving kiosk mode 2017-04-19 09:13:26 -07:00
Kevin Sawicki
5153c1f353 Disable media device specs on CI where they may not be available 2017-04-18 16:16:08 -07:00
Kevin Sawicki
f891df55d4 Call done callback with Error 2017-04-18 16:06:10 -07:00
Kevin Sawicki
4af44b1be6 Consolidate window closing 2017-04-18 16:04:27 -07:00
Kevin Sawicki
4a9383b50b Bump v1.6.7 2017-04-18 09:17:16 -07:00
Kevin Sawicki
6701a96216 Merge pull request #9211 from sindresorhus/patch-1
Add docs tip about testing Touch Bar usage
2017-04-18 12:10:45 -04:00
Kevin Sawicki
1fe10406ad Merge pull request #9194 from electron/external/cookie-flushstore-api
Adding cookie flush store api
2017-04-18 12:09:19 -04:00
Kevin Sawicki
8f0ac057e3 Add initial spec for cookies.flushStore 2017-04-18 09:08:27 -07:00
Hari Krishna Reddy Juturu
fe88697348 fixup! fixup! Adding cookie flush store api 2017-04-18 09:05:13 -07:00
Hari Krishna Reddy Juturu
efca0a6e07 fixup! Adding cookie flush store api 2017-04-18 09:05:13 -07:00
Hari Krishna Reddy Juturu
19709a50e9 Adding cookie flush store api 2017-04-18 09:05:13 -07:00
Kevin Sawicki
190fc46e77 Merge pull request #9208 from electron/touchbar-button-icon-pos
Add iconPosition property to touch bar buttons
2017-04-18 12:02:44 -04:00
Kevin Sawicki
ca46d52b0c Add button with icon to touch bar spec 2017-04-18 09:01:43 -07:00
Kevin Sawicki
c32a723e29 Only read iconPosition when icon is present 2017-04-18 08:58:54 -07:00
Samuel Attard
526d287d25 Make iconPosition non-breaking by defaulting to overlay 2017-04-18 08:56:39 -07:00
Samuel Attard
11c7c107a9 add iconPosition property to touch bar buttons 2017-04-18 08:56:39 -07:00
Kevin Sawicki
fa4e4eb3e0 Merge pull request #9195 from mcizol/master
add turkish quick-start file
2017-04-18 11:51:13 -04:00
Kevin Sawicki
f461a2f20b Merge pull request #9185 from sauber92/patch-2
Update protocol.md
2017-04-18 11:46:05 -04:00
Kevin Sawicki
bba3e866b7 Merge pull request #9180 from runinspring/patch-1
Update shell.md
2017-04-18 11:45:10 -04:00
Ryohei Ikegami
91f31506ef Skip native addon test in Windows 2017-04-19 00:11:23 +09:00
Ryohei Ikegami
8dff29185b Merge branch 'master' into native-window-open 2017-04-18 21:59:22 +09:00
Birunthan Mohanathas
4d9977dac1 Merge pull request #9219 from electron/update-libcc-dpi-scaling
Update libcc for electron/libchromiumcontent#285
2017-04-18 15:13:03 +03:00
Alexandre Lachèze
9aff17afea 👕 alphabetical order 2017-04-18 13:44:31 +02:00
Alexandre Lachèze
f375e8a7db Add OS process id to web-contents 2017-04-18 12:31:20 +02:00
Birunthan Mohanathas
3bcf5e0e9f Fix OverrideSiteInstanceForNavigation() signature 2017-04-18 11:51:38 +03:00
Birunthan Mohanathas
4a7125d9f8 Update libcc for electron/libchromiumcontent#285
This fixes non-client area DPI scaling on recent Windows 10 versions.
See discussion in #8786.
2017-04-18 11:11:26 +03:00
Cheng Zhao
70d67f9da4 Link with VideoToolbox.framework 2017-04-18 16:44:04 +09:00
Birunthan Mohanathas
226c1c99a6 Merge pull request #9213 from electron/fix-autohide-menubar-layout
Actually hide menubar area when menu is autohidden
2017-04-17 12:34:23 +03:00
Birunthan Mohanathas
dcf6c52f51 Actually hide menubar area when menu is autohidden
This was a regression introduced in 638eae10.
2017-04-17 12:31:39 +03:00
Cheng Zhao
55e9c3196a Fix building on Linux 2017-04-17 16:52:24 +09:00
Sindre Sorhus
39caa6ad23 📝 Add docs tip about testing Touch Bar usage
Disclosure: I made it.

Most devs don't have the new MacBook with Touch Bar, but would like to support it. I think it would be useful to point out how to easily develop and test Touch Bar usage in Electron apps.

[ci skip]
2017-04-17 14:39:37 +07:00
Cheng Zhao
b82845dc4a A quick fix for crashing when closing devtools 2017-04-17 16:16:02 +09:00
Cheng Zhao
98c039c880 Detach from devtools before destroying
Otherwise Electron would crash on exit in Chrome 58.
2017-04-17 16:16:02 +09:00
Cheng Zhao
79a441874e Fill missing NetworkDelegate method 2017-04-17 16:16:02 +09:00
Cheng Zhao
affd80aef0 Add gen/third_party/WebKit to include dirs 2017-04-17 16:16:02 +09:00
Cheng Zhao
bbd4749668 base::WrapUnique has changed its API 2017-04-17 16:16:02 +09:00
Cheng Zhao
c41fb922b3 Fix API changes of Chrome 58 2017-04-17 16:16:02 +09:00
Cheng Zhao
0a110a44f9 ScopedPtrHashMap has been removed 2017-04-17 16:16:02 +09:00
Cheng Zhao
fdb880eca2 Remove the ENABLE_WEBRTC define
Headers are now defined in gen/media/media_features.h.
2017-04-17 16:16:02 +09:00
Cheng Zhao
9ee47385d5 Update libchromiumcontent to Chrome 58 2017-04-17 16:16:02 +09:00
Birunthan Mohanathas
81879f8f8a Merge pull request #9204 from electron/upgrade-brightray-wmstate
Update Brightray for electron/brightray#289
2017-04-16 19:52:11 +03:00
Birunthan Mohanathas
dc914fdb28 Update Brightray for electron/brightray#289
This fixes #9197.
2017-04-16 18:01:32 +03:00
Birunthan Mohanathas
708d39ebe5 Merge pull request #289 from poiru/windows-wm-state
Initialize wm::WMState on Windows as well
2017-04-16 17:58:41 +03:00
Birunthan Mohanathas
ed9795514e Initialize wm::WMState on Windows as well
See:
cd4f72fdea/ui/views_content_client/views_content_client_main_parts_aura.cc (23)

This fixes electron/electron#9197.
2017-04-16 17:32:28 +03:00
Yuya Ochiai
75184046f6 Add events to manage sheets of macOS BrowserWindow 2017-04-15 16:26:45 +09:00
Mustafa C. Izol
7b3f1b5d91 update link to turkish quick-start 2017-04-14 19:47:39 +02:00
Mustafa C. Izol
228517edde add turkish quick start file 2017-04-14 19:38:46 +02:00
Birunthan Mohanathas
3af50b92ca Merge pull request #9187 from electron/mac-messagebox-warning-icon
Fix missing warning icon with dialog.showMessageBox() on macOS
2017-04-14 19:27:49 +03:00
Birunthan Mohanathas
e7d71000ee Fix missing warning icon with dialog.showMessageBox() on macOS
Fixes #9183.
2017-04-14 19:27:25 +03:00
Junyoung Jung
eee0b35d19 Update protocol.md
오타 수정, Edit typo
2017-04-13 23:47:01 +09:00
Ryohei Ikegami
ea6890aa5c Use const 2017-04-13 23:26:42 +09:00
Birunthan Mohanathas
0c1d60381d Merge pull request #9167 from electron/frameless-overflow3
Fix frameless window overflow on Windows
2017-04-13 13:08:39 +03:00
Kevin Sawicki
108f246d89 Add SubSystem setting 2017-04-13 13:06:36 +03:00
Kevin Sawicki
4ca4eb01d4 Use MinimumRequiredVersion instead of argument 2017-04-13 13:03:46 +03:00
Kevin Sawicki
1a75bf8fb9 Add comment to subsystem linker option 2017-04-13 13:03:46 +03:00
Kevin Sawicki
fe8726d775 Use Chrome default client inset handling 2017-04-13 13:03:46 +03:00
Birunthan Mohanathas
7f4bd79b01 Merge pull request #9166 from electron/browserview
Implement initial, experimental BrowserView API
2017-04-13 11:00:16 +03:00
ZhangYu
ed20cc0af8 Update shell.md 2017-04-13 10:27:32 +08:00
Ryohei Ikegami
9d62b196d3 Use base::FilePath 2017-04-13 10:59:12 +09:00
Birunthan Mohanathas
000aedf2e7 Avoid insecure nodeIntegration in example 2017-04-13 01:27:31 +03:00
Birunthan Mohanathas
ccdeb4746e Destroy BrowserViews after each test 2017-04-13 01:27:31 +03:00
Birunthan Mohanathas
06fcf2c19d Add support for BrowserView autoresizing 2017-04-13 01:27:31 +03:00
Birunthan Mohanathas
638eae1080 Remove MenuLayout in favor of NativeWindowViews::Layout 2017-04-13 01:27:31 +03:00
Birunthan Mohanathas
8b9f7e5b00 Implement initial, experimental BrowserView API
Right now, `<webview>` is the only way to embed additional content in a
`BrowserWindow`. Unfortunately `<webview>` suffers from a [number of
problems](https://github.com/electron/electron/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3Awebview%20).
To make matters worse, many of these are upstream Chromium bugs instead
of Electron-specific bugs.

For us at [Figma](https://www.figma.com), the main issue is very slow
performance.

Despite the upstream improvements to `<webview>` through the OOPIF work, it is
probable that there will continue to be `<webview>`-specific bugs in the
future.

Therefore, this introduces a `<webview>` alternative to called `BrowserView`,
which...

- is a thin wrapper around `api::WebContents` (so bugs in `BrowserView` will
  likely also be bugs in `BrowserWindow` web contents)

- is instantiated in the main process like `BrowserWindow` (and unlike
  `<webview>`, which lives in the DOM of a `BrowserWindow` web contents)

- needs to be added to a `BrowserWindow` to display something on the screen

This implements the most basic API. The API is expected to evolve and change in
the near future and has consequently been marked as experimental. Please do not
use this API in production unless you are prepared to deal with breaking
changes.

In the future, we will want to change the API to support multiple
`BrowserView`s per window. We will also want to consider z-ordering
auto-resizing, and possibly even nested views.
2017-04-13 01:27:27 +03:00
Kevin Sawicki
779e4e5889 Merge pull request #9168 from electron/win-7-notifications
Upgrade brightray for Windows 7 notifications
2017-04-12 13:26:40 -07:00
Kevin Sawicki
4f26424ace Upgrade brightray for Windows 7 notifications 2017-04-12 13:01:52 -07:00
Kevin Sawicki
1c44bcf654 Merge pull request #8786 from electron/per-monitor-dpi-aware
Enable per-monitor DPI for Win10
2017-04-12 12:27:41 -07:00
Ryohei Ikegami
b19c5154ca Fix cpplint errors 2017-04-12 12:25:56 +09:00
Ryohei Ikegami
b07c3adca9 Fix comment for ChildWebContentsTracker 2017-04-12 12:20:53 +09:00
Ryohei Ikegami
c77e07bc15 Fix afterEach 2017-04-12 11:55:41 +09:00
Kevin Sawicki
efa28503a7 Merge pull request #9148 from electron/share-render-frame-observer-with-sandbox
Refactor: Share AtomRenderFrameObserver with AtomSandboxedRendererClient
2017-04-11 10:02:12 -07:00
Kevin Sawicki
964b210ce0 Merge pull request #9133 from electron/app-exit-failure
Fix app.exit() not closing all windows
2017-04-11 09:49:54 -07:00
Kevin Sawicki
e7b679ead6 Add IsEmpty helper and remove GetInstance public usage 2017-04-11 09:09:17 -07:00
Kevin Sawicki
da5d7d72b0 Add GetWindows helper that returns a vector 2017-04-11 09:09:17 -07:00
Kevin Sawicki
0883a9f966 Use CloseAllWindows helper 2017-04-11 09:09:17 -07:00
Kevin Sawicki
8311aa667c Add DestroyAllWindows helper that uses vector copy 2017-04-11 09:09:17 -07:00
Kevin Sawicki
bfb9388191 Add failing spec for app.exit with >2 windows 2017-04-11 09:09:17 -07:00
Kevin Sawicki
a30cf30e93 Merge pull request #9134 from electron/scroll-bounce-fix
Always set NSScrollViewRubberbanding scroll bounce pref
2017-04-11 09:08:30 -07:00
Kevin Sawicki
b2761ab7dc Merge pull request #9157 from electron/cifratila/remove-unused-dll
#9128: Removed unused dll from distribution.
2017-04-11 08:52:20 -07:00
Kevin Sawicki
29c68182df Always set NSScrollViewRubberbanding scroll bounce pref 2017-04-11 08:42:41 -07:00
Cheng Zhao
c59ef0efc5 Enable per-monitor DPI 2017-04-11 15:17:15 +09:00
Cheng Zhao
8f7bd436f0 Merge pull request #279 from electron/win7_notifications
Windows 7 notifications
2017-04-11 15:06:26 +09:00
Kevin Sawicki
e2a00e423c Merge pull request #9104 from electron/fix-crash-reporter-test
Fix sandboxed crashReporter for windows
2017-04-10 15:38:12 -07:00
Kevin Sawicki
f3072e3b2d Merge pull request #9158 from mcizol/patch-1
add electron slack channel for turkish community
2017-04-10 15:37:17 -07:00
Mustafa
2c6ef95923 add electron slack channel for turkish community 2017-04-10 18:41:52 +02:00
Kevin Sawicki
0caa35d33c Merge pull request #9155 from Hum4n01d/master
Add information about dragging not working with Dev tools open
2017-04-10 08:18:09 -07:00
Kevin Sawicki
676f02e001 Tweak GitHub spelling 2017-04-10 08:17:55 -07:00
Kevin Sawicki
3ec7900e6e Merge pull request #9154 from miniak/fix-api-docs
Fix api docs
2017-04-10 08:16:54 -07:00
Kevin Sawicki
cfb4010415 Merge pull request #9151 from mcizol/master
add turkish translation files
2017-04-10 08:16:20 -07:00
Kevin Sawicki
53884580cc Merge pull request #9149 from electron/link-session-docs
Link session properties to class docs
2017-04-10 08:15:29 -07:00
Kevin Sawicki
2933eef07e Merge pull request #9144 from electron/wait-util-server-closes
Wait until server closes in afterEach in net spec
2017-04-10 08:14:42 -07:00
Kevin Sawicki
575ece69e2 Merge pull request #9137 from runinspring/patch-3
add some document
2017-04-10 08:14:13 -07:00
Kevin Sawicki
ef7dbf8b51 Merge pull request #9136 from runinspring/patch-2
Update README.md
2017-04-10 08:13:47 -07:00
Catalin Fratila
d3953f7280 #9128: Removed unused dll from distribution. 2017-04-10 16:41:16 +02:00
Hum4n01d
0ce983363b Add information about dragging not working with Dev tools open 2017-04-09 23:05:56 -07:00
Milan Burda
fa0de5c2b4 Define filter argument type for WebRequest methods 2017-04-10 02:18:36 +02:00
Mustafa C. Izol
475620119e add turkish translation link to readme 2017-04-10 02:12:53 +02:00
Milan Burda
8f46137fda Fix session.setPermissionRequestHandler webContents argument type 2017-04-10 02:12:15 +02:00
Mustafa C. Izol
613c835eec add turkish readme file 2017-04-10 02:10:52 +02:00
Mustafa C. Izol
34beb52edb fix link to electron faq 2017-04-10 01:23:14 +02:00
Mustafa C. Izol
6a729f90e5 add translation files for application-distrubution and supported platforms 2017-04-10 00:47:00 +02:00
Kevin Sawicki
b7b7f28c5a Link properties to class docs 2017-04-08 18:50:55 -07:00
Thiago de Arruda
039aaba758 Move AtomRenderFrameObserver creation to RendererClientBase.
Also remove AtomSandboxedRenderFrameObserver class.
2017-04-08 11:54:58 -03:00
Thiago de Arruda
72781e38c8 Change AtomRenderFrameObserver.renderer_client_ type to RendererClientBase. 2017-04-08 11:27:19 -03:00
Thiago de Arruda
ef07e25f9d Make SetupMainWorldOverrides/isolated_world pure virtual.
Also implement stubs in AtomSandboxedRendererClient.
2017-04-08 11:12:18 -03:00
Thiago de Arruda
f751335bf9 Make DidCreateScriptContext/WillReleaseScriptContext pure virtual. 2017-04-08 10:58:13 -03:00
Thiago de Arruda
0227254774 Move DidClearWindowObject into RendererClientBase.
Also adapt AtomSandboxedRenderFrameObserver to forward DidClearWindowObject to
RendererClientBase.
2017-04-08 10:43:19 -03:00
Thiago de Arruda
91ee0ea740 Move AtomRenderFrameObserver into a separate module.
Also move SetupMainWorldOverrides into the AtomRendererClient class(since the
code there is specific to AtomRendererClient).
2017-04-08 10:29:05 -03:00
Kevin Sawicki
e2e9e8ae24 Wait until server closes in afterEach 2017-04-07 16:42:01 -07:00
Kevin Sawicki
8a324a9375 Bump v1.6.6 2017-04-07 09:01:28 -07:00
ZhangYu
b6481fde14 Create upload-raw-data.md 2017-04-07 10:48:07 +08:00
ZhangYu
ca584fcaf9 Create upload-file.md 2017-04-07 10:47:52 +08:00
ZhangYu
6089456c84 Create upload-file-system.md 2017-04-07 10:47:37 +08:00
ZhangYu
05d59185b2 Create upload-data.md 2017-04-07 10:47:23 +08:00
ZhangYu
6b44692b0d Create upload-blob.md 2017-04-07 10:47:09 +08:00
ZhangYu
3ba8a7516a Create thumbar-button.md 2017-04-07 10:46:53 +08:00
ZhangYu
a584785254 Create task.md 2017-04-07 10:46:34 +08:00
ZhangYu
39111b9e34 Create size.md 2017-04-07 10:46:19 +08:00
ZhangYu
e8f030af15 Create shortcut-details.md 2017-04-07 10:46:04 +08:00
ZhangYu
3475387d9c Create segmented-control-segment.md 2017-04-07 10:45:50 +08:00
ZhangYu
826932199b Create scrubber-item.md 2017-04-07 10:45:36 +08:00
ZhangYu
bffec5e68e Create remove-password.md 2017-04-07 10:45:19 +08:00
ZhangYu
6e36ec7770 Create remove-client-certificate.md 2017-04-07 10:45:00 +08:00
ZhangYu
7a552da192 Create rectangle.md 2017-04-07 10:44:41 +08:00
ZhangYu
30fe4a6f2b Create point.md 2017-04-07 10:44:26 +08:00
ZhangYu
b117f14c2a Create mime-typed-buffer.md 2017-04-07 10:44:09 +08:00
ZhangYu
32ee0f05e3 Create memory-usage-details.md 2017-04-07 10:43:51 +08:00
ZhangYu
aa37030211 Create jump-list-item.md 2017-04-07 10:43:05 +08:00
ZhangYu
913644504c Create jump-list-category.md 2017-04-07 10:42:39 +08:00
ZhangYu
1fb0a5f0da Create file-filter.md 2017-04-07 10:42:04 +08:00
ZhangYu
27a45009b3 Create display.md 2017-04-07 10:40:47 +08:00
ZhangYu
e811f809b5 Create desktop-capturer-source.md 2017-04-07 10:36:50 +08:00
ZhangYu
6a4e7225e2 Create crash-report.md 2017-04-07 10:25:22 +08:00
ZhangYu
9e33f2efeb Create cookie.md 2017-04-07 10:24:11 +08:00
ZhangYu
5986d36059 Create certificate.md 2017-04-07 10:16:32 +08:00
ZhangYu
202b8e40c4 Create certificate-principal.md 2017-04-07 10:14:51 +08:00
ZhangYu
a6f5c35fa6 Create bluetooth-device.md 2017-04-07 10:10:12 +08:00
ZhangYu
ad0a22af23 Update README.md 2017-04-07 10:03:21 +08:00
Kevin Sawicki
e3407bb99e Merge pull request #9132 from electron/fork-eval-node-fix
Cherry pick node fix for ChildProcess.fork --eval bug
2017-04-06 13:17:13 -07:00
Kevin Sawicki
588f699d56 🎨 2017-04-06 09:52:52 -07:00
Kevin Sawicki
c3798be9b8 Upgrade node for fork --eval cherry pick fix 2017-04-06 09:48:36 -07:00
Kevin Sawicki
7f28b7a151 Add failing spec for fork --eval message bug 2017-04-06 09:48:34 -07:00
Kevin Sawicki
4ec7cc913d Merge pull request #9117 from electron/fix_debug_checks
Fixed a couple of failing debug checks when calling Chromium APIs
2017-04-06 08:48:15 -07:00
Kevin Sawicki
b11afc8591 Merge pull request #9129 from runinspring/patch-1
Update accelerator.md
2017-04-06 08:47:21 -07:00
Kevin Sawicki
7ea1253aae Merge pull request #9126 from runinspring/master
Update menu.md and menu-item.md
2017-04-06 08:46:55 -07:00
Kevin Sawicki
931290bc59 Merge pull request #9125 from electron/fix-chrome-upgrade-link
Fix link to the Upgrading Chrome doc
2017-04-06 08:46:25 -07:00
Kevin Sawicki
11abdb6378 Merge pull request #9124 from TasukuUno/fix-docs
Fix document of MimeTypedBuffer Object
2017-04-06 08:45:48 -07:00
ZhangYu
a7d9230497 Update accelerator.md 2017-04-06 17:29:06 +08:00
ZhangYu
c305517957 Update menu-item.md 2017-04-06 15:06:46 +08:00
ZhangYu
0eed821788 Update menu.md 2017-04-06 15:06:02 +08:00
Vadim Macagon
95e782d26c Fix link to the Upgrading Chrome doc 2017-04-06 16:04:19 +10:00
Ryohei Ikegami
34ed1a9ef8 Track child web contents 2017-04-06 12:15:27 +09:00
Ryohei Ikegami
659722924d Don't show BrowserWindow in test 2017-04-06 11:44:20 +09:00
Ryohei Ikegami
349ea3a15a Add test for native addon after reload 2017-04-06 11:43:57 +09:00
Tasuku Uno
59fe7d3dbb 📝 Fix document of MimeTypedBuffer Object
[ci skip]
2017-04-06 11:38:59 +09:00
Ryohei Ikegami
526086d900 Improve RootWebContentsTracker 2017-04-06 11:37:21 +09:00
Kevin Sawicki
d857b71557 Merge pull request #9111 from electron/deliver-ipc-messages-to-handlers
Fix printing on Windows
2017-04-05 16:27:58 -07:00
Thiago de Arruda
ce1a5e3c9c Fix sandboxed crashReporter for windows.
- Use `path` module from browser process in sandboxed renderer. This is required
  because the return value of `path.join` is platform-specific, and this is an
  assumtion of crash-reporter.js which is shared between sandboxed and
  non-sandboxed renderers.
- Set `process.platform` and `process.execPath` in sandboxed renderer
  environment. This is required to spawn the windows crash service from
  sandboxed renderer.
- Use a single temporary directory for all crashReporter tests. This is required
  to make tests more deterministic across platforms(since mac's crashpad doesn't
  support changing the crash dump directory). Also make a few improvements/fixes
  to the `uploadToServer` test.
2017-04-05 18:09:24 -03:00
Ales Pergl
73e3fd01eb Fixed a couple of failing debug checks when calling Chromium APIs 2017-04-05 14:45:46 +02:00
Ales Pergl
fbe3b27409 Addressed review feedback 2017-04-05 14:30:17 +02:00
Ales Pergl
f73233ee55 Changed local variable and parameter names to snake case style 2017-04-05 14:30:17 +02:00
Ales Pergl
ba03c544f3 Address cpplint issue ""public:" should be preceded by a blank line [whitespace/blank_line] [3]" 2017-04-05 14:30:17 +02:00
Ales Pergl
3336e02769 Address cpplint issue "Constructors callable with one argument should be marked explicit. [runtime/explicit] [5]" 2017-04-05 14:30:17 +02:00
Ales Pergl
1a7d9a5d20 Address cpplint issue "At least two spaces is best between code and comments [whitespace/comments] [2]" 2017-04-05 14:30:17 +02:00
Ales Pergl
bf86718d61 Address cpplint issue "DISALLOW_COPY_AND_ASSIGN should be the last thing in the class [readability/constructors] [3]" 2017-04-05 14:30:16 +02:00
Ales Pergl
161b4e752b Address cpplint issue "public: should be indented +1 space inside class NotificationPresenterWin7 [whitespace/indent] [3]" 2017-04-05 14:30:16 +02:00
Ales Pergl
9d75e9f54c Address cpplint issue "Namespace should be terminated with "// namespace brightray" [readability/namespace] [5]" 2017-04-05 14:30:16 +02:00
Ales Pergl
64bf0d210e Address cpplint issue "An else should appear on the same line as the preceding } [whitespace/newline] [4]" 2017-04-05 14:30:16 +02:00
Ales Pergl
9b7fbd4d22 Address cpplint issue "Using C-style cast. Use reinterpret_cast<BYTE*>(...) instead [readability/casting] [4]" 2017-04-05 14:30:16 +02:00
Ales Pergl
91cff2e6c7 Address cpplint issue "Missing space before ( in if( [whitespace/parens] [5]" 2017-04-05 14:30:16 +02:00
Ales Pergl
29f3332276 Address cpplint issue "{ should almost always be at the end of the previous line [whitespace/braces] [4]" 2017-04-05 14:30:16 +02:00
Ales Pergl
63eeb96e71 Address cpplint issue "Do not use namespace using-directives. Use using-declarations instead. [build/namespaces] [5]" 2017-04-05 14:30:16 +02:00
Ales Pergl
20d0bda538 Address cpplint issue "Found C++ system header after other header. Should be: toast.h, c system, c++ system, other. [build/include_order] [4]" 2017-04-05 14:30:16 +02:00
Ales Pergl
33b4936a68 Address cpplint issue "Include the directory when naming .h files [build/include] [4]" 2017-04-05 14:30:15 +02:00
Ales Pergl
0bba5b9b41 Address cpplint issue "Lines should be <= 80 characters long [whitespace/line_length] [2]" 2017-04-05 14:30:15 +02:00
Ales Pergl
392d606848 Changed member variable naming style to snake case 2017-04-05 14:30:15 +02:00
Ales Pergl
0fa6c82b3f Use NotificationPresenterWin7 on Windows 7 2017-04-05 14:30:15 +02:00
Ales Pergl
fe05b66a6c Added desktop notifications implementation for Windows 7 (and earlier) 2017-04-05 14:30:15 +02:00
Ales Pergl
e6a30388da Make Notification factory function a member of NotificationPresenter so that we can create different types of notifications based on runtime conditions. 2017-04-05 14:30:15 +02:00
Ryohei Ikegami
b683584859 Add better comments to ShouldCreateNewSiteInstance 2017-04-05 18:16:10 +09:00
Ryohei Ikegami
cbdd52e43b Always create new SiteInstance on root WebContents 2017-04-05 17:51:17 +09:00
Ryohei Ikegami
90852c665d Pass RenderFrameHost to ShouldCreateNewSiteInstance 2017-04-05 13:47:02 +09:00
Kevin Sawicki
b27b1c3b24 Append printed page to job 2017-04-04 20:47:05 -07:00
Kevin Sawicki
aa75e4562e Restore delivering IPC messages to utility handlers 2017-04-04 20:40:57 -07:00
Kevin Sawicki
7574c33ef1 Merge pull request #9028 from electron/fix-popover-items-not-updating
Fix popover items not updating
2017-04-04 14:09:59 -07:00
Kevin Sawicki
6a22c6645e Guard against missing popover identifier 2017-04-04 13:51:39 -07:00
Kevin Sawicki
9c73c991d7 Use const references for params 2017-04-04 13:51:39 -07:00
Samuel Attard
bea56bbdc8 Update as per feedback 2017-04-04 13:51:38 -07:00
Samuel Attard
2fd62d090a Allow items to be assigned to multiple popovers 2017-04-04 13:51:33 -07:00
Samuel Attard
f05dfc74da Store parent popover in popover touch bar items 2017-04-04 13:51:13 -07:00
Kevin Sawicki
8c8b737fa2 Merge pull request #9023 from electron/touchbar-set-escape-button
TouchBar - Method to set escape button
2017-04-04 13:35:55 -07:00
Kevin Sawicki
74a3a34caa Add spec for interaction event with escape item 2017-04-04 13:14:56 -07:00
Kevin Sawicki
bbadeb62ac Check that escape item is non-null before checking id 2017-04-04 13:12:29 -07:00
Kevin Sawicki
414540bfcb Support passing escape item to TouchBar constructor 2017-04-04 12:50:41 -07:00
Kevin Sawicki
b24b4212c5 Make escape item a property instead of setter 2017-04-04 12:50:41 -07:00
Kevin Sawicki
21c1ddffb3 Handle change and interaction events on escape items 2017-04-04 12:50:41 -07:00
Kevin Sawicki
591cd8d073 Update window via listener when escape item changes 2017-04-04 12:50:41 -07:00
Kevin Sawicki
0501a20fe6 Clear escape item 2017-04-04 12:50:41 -07:00
Kevin Sawicki
6eacec7dc3 replaceEscapeItem -> setEscapeItem 2017-04-04 12:50:41 -07:00
Kevin Sawicki
7f8e490839 Take const reference 2017-04-04 12:50:41 -07:00
Kevin Sawicki
d596d85288 🎨 2017-04-04 12:50:41 -07:00
Kevin Sawicki
df0f468dea Add escapeKeyReplacementItemIdentifier forward declaration 2017-04-04 12:50:41 -07:00
Samuel Attard
60cc862031 Make everything pointer like 2017-04-04 12:50:41 -07:00
Samuel Attard
2ba937289c Add smoke test for escape replacement 2017-04-04 12:50:41 -07:00
Samuel Attard
4d6b0fc01b Add a method to set the escape identifier on the touch bar 2017-04-04 12:50:41 -07:00
Kevin Sawicki
3c1a372157 Merge pull request #9101 from electron/wrap-remote-set-as-args
Support calling remote setters with remote objects
2017-04-04 12:50:15 -07:00
Kevin Sawicki
fdd36334e5 Match args style of other IPC handlers 2017-04-04 11:18:16 -07:00
Kevin Sawicki
746f636016 Add tests for setting remote property null/undefined 2017-04-04 11:18:16 -07:00
Kevin Sawicki
7065123266 Wrap remote value being set as an arg 2017-04-04 11:18:16 -07:00
Kevin Sawicki
e5f70f90a4 Add spec for remote setter with remote object 2017-04-04 11:18:16 -07:00
Kevin Sawicki
3e9014c371 Merge pull request #9099 from electron/certificate-trust
macOS: Add certificate trust API
2017-04-04 11:17:09 -07:00
Kevin Sawicki
2bd47eb672 Add specs for showCertificateTrustDialog option errors 2017-04-04 10:49:21 -07:00
Kevin Sawicki
2e32525e8f Make browser window optional 2017-04-04 10:49:10 -07:00
joshaber
2749ded062 Fix c&p error 2017-04-04 11:45:27 -04:00
Kevin Sawicki
af40a60937 Merge pull request #9072 from p-jackson/patch-1
Document passing null to Menu.setApplicationMenu
2017-04-04 08:42:08 -07:00
Kevin Sawicki
f64d82cf16 Merge pull request #9105 from miniak/fix-api-docs
Use point / size / rectangle structures consistently in API docs
2017-04-04 08:41:34 -07:00
joshaber
736d6afe73 As you wish linter 2017-04-04 09:23:30 -04:00
joshaber
146e1ed3ce Don't pass the result through
It's meaningless on macOS, at least.
2017-04-04 09:21:15 -04:00
joshaber
0cab8a3322 Put CertFromData in an anon namespace 2017-04-04 09:19:23 -04:00
Ryohei Ikegami
61fa8693d2 Merge branch 'master' into native-window-open 2017-04-04 20:54:37 +09:00
Ryohei Ikegami
e7b9b4b1a5 Always create new site instance 2017-04-04 20:54:10 +09:00
Ryohei Ikegami
051e133ce3 Add test for opeing HTML file 2017-04-04 19:05:13 +09:00
Milan Burda
568454525d Use point / size / rectangle structures consistently in API docs 2017-04-04 08:31:09 +02:00
Philip Jackson
6169ccd1e2 📝 Document that setApplicationMenu(null) has no effect on macOS 2017-04-04 18:00:20 +12:00
Ryohei Ikegami
3eab5df4a4 Revert "Reuse site instance only on window.open"
This reverts commit 4d61d071b2.
2017-04-04 13:48:17 +09:00
Cheng Zhao
7265a0c1b4 Merge pull request #8528 from Anatzum/patch-1
Use kioclient for MoveItemToTrash on KDE
2017-04-04 12:15:21 +09:00
joshaber
8d465234e4 Appease our linty overlords 2017-04-03 21:40:46 -04:00
joshaber
e2bda3ca0f Use an options object for most of the params 2017-04-03 21:33:21 -04:00
joshaber
2badfbe04f Remove the intermediate function 2017-04-03 21:22:37 -04:00
joshaber
b3e865a478 Fix some style things 2017-04-03 21:22:14 -04:00
joshaber
398132cfe3 Fix file sorting 2017-04-03 21:19:00 -04:00
Ryohei Ikegami
24fedb2e20 No extra linebreak 2017-04-04 09:40:38 +09:00
Ryohei Ikegami
4a7eec8f2d Pass app path as command line argument 2017-04-04 09:36:01 +09:00
Ryohei Ikegami
9cb6bc098d Use beforeEach/afterEach 2017-04-04 09:08:27 +09:00
Kevin Sawicki
7860ea0227 Merge pull request #9097 from electron/handle-setter-errors
Surface errors setting remote properties
2017-04-03 13:30:39 -07:00
joshaber
370cf815d9 Get rid of intermediates and rehydrate from issuerCert 2017-04-03 16:27:53 -04:00
joshaber
74c0cbddae Linebreak to keep the linter happy 2017-04-03 16:07:02 -04:00
joshaber
b8ff4666c8 Remove stale includes 2017-04-03 15:48:47 -04:00
joshaber
da1b0aab3e Flesh out some docs 2017-04-03 15:39:45 -04:00
joshaber
b0ef7ddf44 Use better iteration 2017-04-03 15:28:51 -04:00
joshaber
06643e525a Const ref that message 2017-04-03 15:28:44 -04:00
joshaber
11f5c942ce Conditionalize 2017-04-03 15:25:09 -04:00
joshaber
0b7ffd094a Expose through the actual JS API too 2017-04-03 15:25:06 -04:00
Kevin Sawicki
e85e483c71 Parse setting response to surface thrown errors 2017-04-03 12:16:51 -07:00
Kevin Sawicki
f49e748020 Merge pull request #9096 from electron/upgrade-brightray-for-cpp-cleanup
Upgrade brightray to latest
2017-04-03 12:16:10 -07:00
joshaber
bcecba20e6 Fix indentation 2017-04-03 15:09:24 -04:00
joshaber
4ffaf2cd99 Remove old unnecssary change on app 2017-04-03 15:09:04 -04:00
joshaber
6e89cb9d7c Move it into dialog 2017-04-03 15:05:24 -04:00
joshaber
4bbbcd093b Handle the callback and cleanup properly 2017-04-03 14:01:48 -04:00
joshaber
1ed443ea29 Do the callback & release dance 2017-04-03 13:21:44 -04:00
Kevin Sawicki
257f6b142f Add spec for remote setter not surfacing error 2017-04-03 09:10:46 -07:00
Kevin Sawicki
0989fd7a1c Upgrade brightray to latest 2017-04-03 08:32:16 -07:00
Kevin Sawicki
f5a75c4e87 Merge pull request #9076 from electron/cleanup-cpp
Cleanup cpp codebase
2017-04-03 08:30:08 -07:00
Kevin Sawicki
0981807261 Merge pull request #287 from electron/no-anonymous-ns-in-header
Don't use anonymous namespace in header file.
2017-04-03 08:27:51 -07:00
Kevin Sawicki
7dce066854 Merge pull request #286 from electron/cleanup-cpp
Cleanup codebase
2017-04-03 08:26:32 -07:00
Kevin Sawicki
2f692c1002 Merge pull request #9084 from runinspring/patch-1
Update web-contents.md
2017-04-03 08:20:06 -07:00
Ryohei Ikegami
001d03c859 Do not add search paths in devtools 2017-04-03 22:40:36 +09:00
Ryohei Ikegami
d1212d4a43 Fix JS style 2017-04-03 20:23:36 +09:00
Ryohei Ikegami
50c99e4507 Search for module under the app directory 2017-04-03 20:19:10 +09:00
Ryohei Ikegami
673f4f4d0c Add test for require to search under app dir 2017-04-03 20:11:19 +09:00
Haojian Wu
34a91434aa Remove extra spaces. 2017-04-01 22:01:29 +02:00
ZhangYu
671bcf2161 Update web-contents.md 2017-04-02 00:41:36 +08:00
Haojian Wu
e80a9bbb93 Move title_ to InspectableWebContentsViewVies to get rid of cast. 2017-04-01 15:10:52 +02:00
Haojian Wu
f09e3f3835 Remove extra blank. 2017-04-01 15:09:53 +02:00
Haojian Wu
ee1f3acf7b Don't use anonymous namespace in header file.
Anonymous namespace should be forbidden in header files even for the
forward declarations:

* As declarations defined in anonymous namespace are internal linkage, each
translation unit which includes this header will get unique copy, which
wastes space.
* It is easy to violate C++ ODR rule.

Consider the following "foo.h":

```cpp
namespace { class Foo; }
class Bar {
  public:
    Foo* getFoo();
    Foo* foo;
}
```

If the 'foo.h' is included in multiple `.cc` files, the compiler will
put `Foo` into a different anonymous namespace in each `.cc`, which
means there are different definitions of `Foo` in the program (a
violation of the ODR).
2017-04-01 08:57:34 +02:00
Zeke Sikelianos
c2230ca76a generate electron.d.ts during dist creation, not during build 2017-03-31 21:35:58 -07:00
Zeke Sikelianos
c00bac5c0b add a convenience script for manually generating API JSON 2017-03-31 21:09:23 -07:00
Zeke Sikelianos
9a10486514 generate and upload electron.d.ts with each release 2017-03-31 21:01:55 -07:00
joshaber
ee7389bb6d Rename to make VS happy 2017-03-31 22:57:56 -04:00
joshaber
4f3d3557cc Notify that the cert changed 2017-03-31 21:51:29 -04:00
Zeke Sikelianos
a686237d9b Merge pull request #9080 from electron/fixup-docs-5
Add missing finalUpdate prop
2017-03-31 18:29:16 -07:00
joshaber
bde2a597f3 Decode all the intermediates 2017-03-31 21:27:49 -04:00
joshaber
69defc5166 Encode all the intermediates 2017-03-31 21:27:33 -04:00
Samuel Attard
f757912f90 Add missing finalUpdate prop 2017-04-01 12:11:34 +11:00
Kevin Sawicki
372f209363 Merge pull request #9079 from electron/fix-dialog-args
Move normalizeAccessKeys docs to showMessageBox method
2017-03-31 16:35:31 -07:00
Kevin Sawicki
6d516fbae3 Move normalizeAccessKeys docs to right method 2017-03-31 15:08:03 -07:00
Haojian Wu
f506047a9b Remove an extra blank line. 2017-03-31 21:56:19 +02:00
joshaber
302ca8669d Slightly better conversion 2017-03-31 15:44:47 -04:00
Kevin Sawicki
a724b6555f Bump v1.6.5 2017-03-31 12:10:09 -07:00
Kevin Sawicki
0faa15c6ca Merge pull request #9074 from electron/tabbing-mode-version-guard
Only define NSWindowTabbingModeDisallowed on pre-10.12 SDKs
2017-03-31 12:09:54 -07:00
Haojian Wu
22035e2d6d Fix cpplint: at least two spaces between code and comments. 2017-03-31 20:59:27 +02:00
Kevin Sawicki
08db63c3cc Only define NSWindowTabbingModeDisallowed on pre-10.12 2017-03-31 11:28:55 -07:00
Kevin Sawicki
8a01ebef63 Merge pull request #9053 from electron/enable-crash-reporter-upload-windows
Pass `uploadToServer` option to windows crash reporter
2017-03-31 11:28:35 -07:00
joshaber
141a5ad73f Maybe this is a valid conversion? 2017-03-31 14:16:26 -04:00
Haojian Wu
8ae91682cb Lines should be <= 80 characters. 2017-03-31 20:09:13 +02:00
joshaber
16cc79354c Errrrybody's a scoped_refptr now 2017-03-31 13:53:42 -04:00
joshaber
deae70de4d Dummy out the certificate FromV8 converter 2017-03-31 13:53:31 -04:00
Kevin Sawicki
d677a436ec 🎨 2017-03-31 10:42:43 -07:00
Thiago de Arruda
460fb9cdb9 Add tests for uploadToServer option. 2017-03-31 13:48:07 -03:00
Thiago de Arruda
f0d447cd68 Pass uploadToServer to windows crash reporter 2017-03-31 13:46:30 -03:00
Philip Jackson
1c80102218 📝 Document passing null to Menu.setApplicationMenu
[ci skip]
2017-03-31 16:42:03 +13:00
Kevin Sawicki
96407d9c17 Merge pull request #9057 from electron/upgrade-libcc-for-ffmpeg-linking-fix
Upgrade libcc for ffmpeg linking fix
2017-03-30 15:15:32 -07:00
Kevin Sawicki
39fdc26921 Time out after 5 minutes 2017-03-30 14:39:48 -07:00
Kevin Sawicki
c85d667e66 Upgrade libcc to latest master 2017-03-30 14:37:19 -07:00
Kevin Sawicki
90d0179fe9 Use correct dll name 2017-03-30 14:36:52 -07:00
Kevin Sawicki
b85ebb00aa Tweak logged messages 2017-03-30 14:36:52 -07:00
Kevin Sawicki
7873130019 Add comment to codecs app script 2017-03-30 14:36:52 -07:00
Kevin Sawicki
6b8f840da0 Add script to verify ffmpeg without proprietary codecs 2017-03-30 14:36:52 -07:00
Kevin Sawicki
740de02d6c builds -> Support 2017-03-30 14:36:52 -07:00
Kevin Sawicki
5b4f715d2e Add test page to check for proprietary codecs 2017-03-30 14:36:52 -07:00
Kevin Sawicki
c8951d0d4d Upgrade libcc for ffmpeg linking fix 2017-03-30 14:36:52 -07:00
Kevin Sawicki
76529b5065 Merge pull request #9067 from electron/check-name-param-directly
Check name directly instead of arguments length
2017-03-30 14:35:56 -07:00
joshaber
edf61d41ba Link against the Security frameworks 2017-03-30 17:26:11 -04:00
joshaber
7b044ffe0e Compile these lovely files 2017-03-30 17:26:03 -04:00
joshaber
653b2d15c3 Expose the certificate trust panel as part of app 2017-03-30 17:25:55 -04:00
joshaber
64369cd07f Show a certificate trust panel 2017-03-30 17:25:44 -04:00
Haojian Wu
328cf4789b Should override the virtual destructor. 2017-03-30 23:19:43 +02:00
Haojian Wu
e8abee9ca9 Replace C-style casts with static_cast. 2017-03-30 23:05:47 +02:00
Kevin Sawicki
fcb7cbc54a Check name directly instead of arguments length 2017-03-30 14:03:00 -07:00
Kevin Sawicki
a2588c1fd9 Merge pull request #9052 from tonyganch/native_tabs
Native tabs on macOS
2017-03-30 14:02:19 -07:00
Haojian Wu
ff745e1a82 Use prefix increment in for loops. 2017-03-30 22:56:21 +02:00
Haojian Wu
8d8c7ce6ad Correct type cast. 2017-03-30 22:53:20 +02:00
Kevin Sawicki
6f27d466a5 Move tabbingIdentifier out of webPreferences list 2017-03-30 13:49:00 -07:00
Kevin Sawicki
42300ae58e Make tabbing identifier var local 2017-03-30 13:47:11 -07:00
Kevin Sawicki
e699e88b4c Add initial tabbingIdentifier spec 2017-03-30 13:46:58 -07:00
Kevin Sawicki
c8b992fa39 Remove 10.12 check handled by respondsToSelector 2017-03-30 13:46:34 -07:00
Haojian Wu
bb51401c4c Use base::mac::NSToCast. 2017-03-30 22:33:09 +02:00
Haojian Wu
1b9780035c Remove redundant calls to smart pointer's get method. 2017-03-30 22:22:40 +02:00
Haojian Wu
d425b63b0d NULL => nullptr 2017-03-30 22:12:14 +02:00
Haojian Wu
00693ba075 Replace "size()" with "empty()". 2017-03-30 21:59:18 +02:00
Haojian Wu
6ef3be23fd Avoid copy in for range loop. 2017-03-30 21:56:28 +02:00
Haojian Wu
d18b34d55f Replace size() method with empty() when possible.
There is no guaranteed that size() is a constant-time function.
2017-03-30 21:49:16 +02:00
Haojian Wu
e4c571fc68 Remove unused using namespace declaration. 2017-03-30 21:49:15 +02:00
Haojian Wu
424078cfdb Fix namespace comments. 2017-03-30 21:49:15 +02:00
Kevin Sawicki
77994a7856 Merge pull request #9066 from electron/segment-style-enum-warnings
Add descriptions for each segmentStyle
2017-03-30 12:36:35 -07:00
Kevin Sawicki
4001ba038e Add descriptions for each segmentStyle 2017-03-30 12:36:20 -07:00
Kevin Sawicki
f805bbee9b Merge pull request #9062 from electron/stringify-headers-in-net-module
Fix net module to accept non-string header values
2017-03-30 12:35:53 -07:00
Zeke Sikelianos
f0e7a84627 Merge pull request #9065 from electron/roles
Improve docs for MenuItem Roles
2017-03-30 12:28:14 -07:00
Thiago de Arruda
b3cf00a19a Fix net module to accept non-string header values
This is required to be compatible with node.js http module.
2017-03-30 16:01:40 -03:00
Kevin Sawicki
3100463117 Merge pull request #8917 from bcomnes/patch-1
Clarify remote require of relative modules
2017-03-30 12:00:47 -07:00
Kevin Sawicki
55bf2239df Remove spaces around brackets 2017-03-30 11:58:09 -07:00
Zeke Sikelianos
d5bc8990fc link to roles list from Menu doc 2017-03-30 11:08:12 -07:00
Zeke Sikelianos
b24be19fac tighten up formatting of menu example 2017-03-30 11:07:59 -07:00
Zeke Sikelianos
d779ecf674 create a linkable heading for MenuItem roles 2017-03-30 11:07:25 -07:00
Kevin Sawicki
bdd08b8baa Merge pull request #9054 from ColinEberhardt/patch-3
Some minor copy edit on sandbox documentation
2017-03-30 10:52:46 -07:00
Tony Ganch
bd935b213f Fix compilation against macOS 10.10 SDK 2017-03-30 15:13:49 +02:00
Colin Eberhardt
bed32682b7 Clarification of the chromium sandbox support 2017-03-30 10:47:14 +01:00
Haojian Wu
5f724e57bc Avoid unnecessary copy of parameters. 2017-03-29 22:06:07 +02:00
Kevin Sawicki
57edc28b0d Merge pull request #8880 from mst128256/2814
Default menu items for 'Edit' and 'Window' #2814
2017-03-29 12:31:58 -07:00
Kevin Sawicki
8b4bf1f29e 🎨 2017-03-29 12:29:36 -07:00
Haojian Wu
99293dd57f Fix namespace comments. 2017-03-29 20:47:41 +02:00
Tony Ganch
a7565f0d57 Enable native tabs on macOS 2017-03-29 13:51:39 +02:00
Tony Ganch
9e02c60e22 Revert "Disable Show Tab Bar menu item on macOS Sierrra"
This reverts commit 24b9313958.
2017-03-29 13:50:56 +02:00
Tony Ganch
ed76e03730 Revert "Add forward declaration of NSWindow.allowsAutomaticWindowTabbing"
This reverts commit 770a3509cf.
2017-03-29 13:50:56 +02:00
mst128256
6ae198a625 Empty objects within default menu replaced by nulls 2017-03-29 12:50:31 +02:00
Cheng Zhao
6db827cc9a Use GetDesktopEnvironment to determien desktop env
Which can get a much more precise result for us.
2017-03-29 16:21:38 +09:00
Anatzum
f9dbdf4522 Updated MoveItemToTrash in platform_util_linux.cc
If ELECTRON_TRASH is null, first check the DESKTOP_SESSION variable and set trash accordingly. Additional desktop environments can be added easily this way with the fallback of ELECTRON_DEFAULT_TRASH.
2017-03-29 16:08:26 +09:00
Cheng Zhao
208182d8cf Merge pull request #9039 from electron/extract-renderer-base-class
Create base class to share code between sandbox and non-sandbox
2017-03-29 15:20:46 +09:00
Cheng Zhao
9ef1f8cd5d Merge pull request #9043 from electron/fix-uv-run-crash
Fix crash happened in UvRunOnce
2017-03-29 13:37:07 +09:00
Kevin Sawicki
4441d557a2 Merge pull request #9007 from electron/net_redirect_patch
net: allow controlling redirects
2017-03-28 09:31:05 -07:00
Kevin Sawicki
03b2167f6c Merge pull request #9001 from electron/net_source_stream_error_patch
net: catch source stream creation failure for content encoding
2017-03-28 09:24:18 -07:00
Kevin Sawicki
e0003021cf Merge pull request #9041 from runinspring/master
Update dialog.md
2017-03-28 09:15:09 -07:00
Kevin Sawicki
d196486cb4 Merge pull request #8652 from electron/no-api-docs-generation
create-dist: Adding argument to supress api docs generation.
2017-03-28 08:59:46 -07:00
deepak1556
b14c4dcdc0 address review comments 2017-03-28 19:05:44 +05:30
deepak1556
8db1eacd1c [skip ci] add docs 2017-03-28 18:46:21 +05:30
deepak1556
3ae62615f4 net: allow controlling redirects 2017-03-28 18:46:21 +05:30
Ryohei Ikegami
37c4569982 Use GetBoolean directly 2017-03-28 20:00:33 +09:00
Ryohei Ikegami
9edfbab89f Add comment why defaultPrevented = false 2017-03-28 19:58:58 +09:00
Ryohei Ikegami
de2019f6b8 Change webContents -> options.webContents 2017-03-28 19:58:23 +09:00
Ryohei Ikegami
87565f4c84 Simplify example code 2017-03-28 19:50:45 +09:00
Ryohei Ikegami
e885e33b75 Fix choise -> choice 2017-03-28 19:50:00 +09:00
Cheng Zhao
2ef1b70897 Fix crash happened in UvRunOnce 2017-03-28 17:19:14 +09:00
Cheng Zhao
bd5c53c2f7 Merge pull request #283 from electron/devtools_shutdown_patch_revert_revert
Revert "Revert "close devtools web contents when available to trigger cleanup""
2017-03-27 22:46:06 -07:00
Cheng Zhao
637bdc239b Merge pull request #8923 from electron/geolocation_request_context_patch
browser: Create separate request context for geolocation service.
2017-03-27 22:45:46 -07:00
ZhangYu
3004f3c762 Update dialog.md 2017-03-28 11:49:47 +08:00
Kevin Sawicki
8164ede297 Merge pull request #9037 from electron/upgrade-libcc-for-webview-drag-fix
Upgrade libcc for webview dnd fix
2017-03-27 17:18:17 -07:00
Thiago de Arruda
d1f08beddf Make AtomSandboxedRendererClient a RendererClientBase subclass. 2017-03-27 18:49:55 -03:00
Thiago de Arruda
c3a8f665f2 Extract base class from AtomRendererClient
The new `RendererClientBase` class contains code that is not specific to node.js
integration with the renderer.
2017-03-27 18:49:55 -03:00
Kevin Sawicki
3028bffa73 Upgrade libcc for webview dnd fix 2017-03-27 14:06:00 -07:00
Kevin Sawicki
9249228ac3 Merge pull request #9034 from electron/disable-flaky-appveyor-spec
Disable flaky post navigation spec on AppVeyor
2017-03-27 14:05:42 -07:00
Kevin Sawicki
f24baffc79 Expect count to be 0 2017-03-27 10:21:01 -07:00
Kevin Sawicki
ad5a48d255 Merge pull request #8983 from electron/sandbox-initial-documentation
Add initial documentation for `sandbox` option.
2017-03-27 10:16:24 -07:00
Kevin Sawicki
870dcb9071 Remove old sandbox option in list and mark as experimental 2017-03-27 10:14:47 -07:00
Kevin Sawicki
6a2cdcf32f Merge pull request #8956 from electron/expose-crash-reporter-to-sandbox
Expose crash reporter to sandbox
2017-03-27 10:09:36 -07:00
Kevin Sawicki
f979bbf9d3 Merge pull request #8897 from electron/versioning-doc
update versioning doc
2017-03-27 09:54:11 -07:00
Kevin Sawicki
b1275a8ef0 Merge pull request #8984 from hansenzhang/display-menuitem-label
Fix '&'  not showing in MenuItem label
2017-03-27 09:47:50 -07:00
Kevin Sawicki
bf6d21fe08 Merge pull request #285 from electron/cpplint
Run cpplint on CI
2017-03-27 09:20:05 -07:00
Kevin Sawicki
9a4783bf34 Disable flaky post navigation spec on AppVeyor 2017-03-27 09:15:40 -07:00
Kevin Sawicki
2dabe8d6fa Merge pull request #9021 from owwo/master
Fix translation error
2017-03-27 09:11:24 -07:00
Kevin Sawicki
fecd018a35 Merge pull request #9024 from runinspring/patch-1
add getFileIcon method
2017-03-27 09:11:04 -07:00
Kevin Sawicki
10dc08b39b Merge pull request #9006 from electron/fix-thumbnailSize-doc
fix docs for thumbnailSize
2017-03-27 09:10:40 -07:00
ZhangYu
dccfadd2bc add getFileIcon method 2017-03-27 11:16:05 +08:00
Zeke Sikelianos
4d29392217 Merge pull request #9014 from electron/MarshallOfSound-patch-1
Fix return syntax in docs
2017-03-26 19:53:33 -07:00
owwo
4e1b237649 Fix translation error 2017-03-26 18:42:07 -05:00
Samuel Attard
168c47bf10 Update web-contents.md 2017-03-25 18:27:43 +11:00
Zeke Sikelianos
79346f1ac5 Merge pull request #9012 from electron/fixup-docs-4
Add missing property types on the process docs
2017-03-25 00:10:09 -07:00
Samuel Attard
b62f1fd022 Add missing return type on executeJavaScript 2017-03-25 14:59:48 +11:00
Samuel Attard
a80148aa29 Add missing property types on the process docs 2017-03-25 14:51:23 +11:00
Zeke Sikelianos
d39207f83a Merge pull request #9010 from electron/fixup-docs-3
Generic doc fixes
2017-03-24 20:30:53 -07:00
Samuel Attard
aa5c778ca2 Generic doc fixes 2017-03-25 12:37:07 +11:00
Hari Juturu
d95114016d V8 dev resources (#9008)
* Adding V8 documentation links

* Removing extra space

* use electron markdown conventions

* cross-link v8 and chromium dev docs

* fix v8 link
2017-03-24 15:40:23 -07:00
Zeke Sikelianos
32f278d92b Merge pull request #8988 from electron/chromium-dev-resources
document resources for tracking chromium development
2017-03-24 11:21:29 -07:00
Zeke Sikelianos
095df457b2 fix docs for thumbnailSize 2017-03-24 11:14:43 -07:00
Kevin Sawicki
21956071e6 Fix compilation issue 2017-03-24 09:52:37 -07:00
Kevin Sawicki
49ef4e326f Initialize submodules in appveyor build 2017-03-24 09:52:27 -07:00
mst128256
6a7b4feb35 Fixed for linting 2017-03-24 12:31:49 +01:00
mst128256
9e471d8f1c Added specs 2017-03-24 12:14:08 +01:00
Ryohei Ikegami
4e473897b7 Use === 2017-03-24 11:08:08 +09:00
Thiago de Arruda
437f1192d9 Add initial documentation for sandbox option. 2017-03-23 21:42:25 -03:00
Kevin Sawicki
2ece711c2e Format line length to 80 instead of 100 2017-03-23 15:47:30 -07:00
Felix Rieseberg
d5c4ad5e2c 📝 Improve notification docs 2017-03-23 14:12:35 -07:00
Kevin Sawicki
be0c0e278a Remove cpplint errors 2017-03-23 12:48:27 -07:00
Cory Reed
a92f639b64 📝 Add note regarding dynamic addition/removal of menu items.
Closes #8928.

[ci skip]
2017-03-23 11:57:44 -07:00
deepak1556
93b444eef9 net: catch source stream creation failure for content encoding 2017-03-23 23:36:05 +05:30
Kevin Sawicki
1d42073ceb Run cpplint on CI build 2017-03-23 10:08:25 -07:00
Kevin Sawicki
31cd7a28d8 Ignore more Objective-C headers 2017-03-23 10:08:25 -07:00
Kevin Sawicki
ece7698b6a Add .clang-format file 2017-03-23 10:08:25 -07:00
Kevin Sawicki
97ced7fb07 Move cpplint config to CPPLINT.cfg file 2017-03-23 10:08:25 -07:00
Kevin Sawicki
96de22ba5f Use cpplint from depot_tools 2017-03-23 10:08:25 -07:00
Ryohei Ikegami
6f9dbd4e04 Merge branch 'master' into native-window-open 2017-03-24 00:11:43 +09:00
Ryohei Ikegami
deba6553f5 Better preventDefault for ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN 2017-03-23 23:51:33 +09:00
Thiago de Arruda
a5eef516a7 Fix indent in api-crash-reporter-spec.js 2017-03-23 10:01:02 -03:00
Thiago de Arruda
5ee6205c0a Run the crash reporter specs with sandbox option.
- Create a function that accepts BrowserWindow options and generates a suite
  that contains the renderer-specific tests.
- Run the function twice to execute the tests with and without sandbox option.
2017-03-23 10:01:02 -03:00
Thiago de Arruda
3a97cfc359 Expose crashReporter to sandbox 2017-03-23 10:01:02 -03:00
Thiago de Arruda
bf756e3c00 Prevent browserify from leaking the require function
Define a "require" argument in the wrapper functions that runs browserify
bundles, which will prevent browserify from leaking the require function.

Note that this doesn't affect the isolated renderer script, only when `-r` flag
is passed to browserify command it will export a require function. It is still
added to isolated renderer script to prevent future mistakes(doesn't hurt
defining a "require" local).
2017-03-23 10:01:02 -03:00
Thiago de Arruda
e1aebef57c Make sandbox APIs more compatible with normal renderers
- Expose remote shortcuts for the `fs`, `os` and `child_process` modules.
- Expose the `url` and `timers` modules(the browserify versions)
- Add `process.crash` and `process.platform`
2017-03-23 10:01:02 -03:00
Zeke Sikelianos
360d2b45f4 document resources for tracking chromium development 2017-03-22 22:59:11 -07:00
Zeke Sikelianos
d22910f554 mention tilde 2017-03-22 16:13:24 -07:00
Kevin Sawicki
46aed5ff6f Bump v1.6.4 2017-03-22 09:16:08 -07:00
Cheng Zhao
e539129db2 Merge pull request #8852 from electron/web-worker-hook
Add Node.js integration to WebWorker
2017-03-22 09:01:42 -07:00
Cheng Zhao
c1a478179e Merge pull request #8971 from electron/fix-freeenvironment-crash
node::Environment should be destroyed before AtomBindings
2017-03-22 09:00:38 -07:00
Hansen Zhang
426563a843 #8881 - Display '&' in MenuItem label 2017-03-22 11:52:25 -04:00
deepak1556
4ab2c92418 CommonWebContentsDelegate::DestroyWebContents => ResetManagedWebContents 2017-03-22 07:30:36 +05:30
Kevin Sawicki
f7e3f9035d Merge pull request #8974 from electron/default-popup-async-value
Default async to false when object is specified
2017-03-21 06:36:29 -07:00
Ryohei Ikegami
d3252e0eb1 Reuse existing event 2017-03-21 16:09:53 +09:00
Kevin Sawicki
23b235c9c7 Default async to false when object is specified 2017-03-20 20:37:52 -07:00
Ryohei Ikegami
4d61d071b2 Reuse site instance only on window.open 2017-03-21 10:41:49 +09:00
Cheng Zhao
99d3fce3c7 node::Environment should be destroyed before AtomBindings
The shutdown code may still uses the APIs provieded by AtomBindings.
2017-03-20 13:01:28 -07:00
Cheng Zhao
71c3e97e81 Fix docs lint warnings 2017-03-20 12:52:46 -07:00
Cheng Zhao
0287f23e3b Fix cpplint warning 2017-03-20 12:52:46 -07:00
Cheng Zhao
40b35a991f Fix js lint 2017-03-20 12:52:46 -07:00
Cheng Zhao
940d77b9a0 Fix typos and adjust sentences 2017-03-20 12:52:46 -07:00
Cheng Zhao
033aa16e04 test: Node integration in web workers 2017-03-20 12:52:46 -07:00
Cheng Zhao
ab83aa0bfd docs: Multithreading 2017-03-20 12:52:46 -07:00
Cheng Zhao
a49af26e39 Add nodeIntegrationInWorker option 2017-03-20 12:52:46 -07:00
Cheng Zhao
e496e18f6e Make Archive thread safe 2017-03-20 12:52:46 -07:00
Cheng Zhao
c068285ff8 AtomBindings should not use default uv loop 2017-03-20 12:52:46 -07:00
Cheng Zhao
9c9c8ec5f1 WebWorkerObserver should be destroyed on exit 2017-03-20 12:52:46 -07:00
Cheng Zhao
d2f185bea5 Create new uv loop in each worker 2017-03-20 12:52:46 -07:00
Cheng Zhao
69df934710 Converter for base::Callback is not thread safe 2017-03-20 12:52:45 -07:00
Cheng Zhao
bb5ad4ac05 Correctly initialize Node environment in worker 2017-03-20 12:52:45 -07:00
Cheng Zhao
b467c3939e Add a new type of NodeBindings 2017-03-20 12:52:45 -07:00
Cheng Zhao
aac934b34e Update native_mate: Make Wrappable thread safe 2017-03-20 12:52:45 -07:00
Cheng Zhao
2cbdb6bac3 Wrap ContextCreated with context scope 2017-03-20 12:52:45 -07:00
Cheng Zhao
e017e157ba Insert node integrations into WebWorker 2017-03-20 12:52:45 -07:00
Kevin Sawicki
253caf35ab Merge pull request #8955 from babanesma/feat/new-clean-command
Feat/new clean command
2017-03-20 10:36:19 -07:00
Kevin Sawicki
2d638e5da7 Add option to clean.py to only remove dist and out dirs 2017-03-20 10:33:04 -07:00
Kevin Sawicki
6ded27f3a9 Merge pull request #8878 from TanninOne/patch-1
Update browser-window.md
2017-03-20 10:14:23 -07:00
Kevin Sawicki
caae03f954 Use rendered language in both ready-to-show docs 2017-03-20 10:13:45 -07:00
Kevin Sawicki
286f529968 Merge pull request #8890 from twolfson/dev/proxy.to.string.sqwished
🐛 Add toString support to remote functions
2017-03-20 09:35:51 -07:00
Kevin Sawicki
75d934e4a2 Merge pull request #8962 from feserafim/patch-1
Update README.md
2017-03-20 09:35:09 -07:00
Ryohei Ikegami
c3c67f78c1 Improve docs on window.open 2017-03-19 20:33:22 +09:00
Ryohei Ikegami
88f062958f Fix option doc 2017-03-19 20:21:03 +09:00
Ryohei Ikegami
3af9f572ac Fix spec description 2017-03-19 20:10:25 +09:00
Ryohei Ikegami
2c21d3b3fa Fix JavaScript in docs 2017-03-19 20:09:52 +09:00
Ryohei Ikegami
afdf52b053 Add docs for useNativeWindowOpen 2017-03-19 18:37:38 +09:00
Ryohei Ikegami
f3ce93f1bb Fix C++ style 2017-03-19 18:24:05 +09:00
Ryohei Ikegami
076427673e Fix JavaScript style 2017-03-19 18:20:10 +09:00
Ryohei Ikegami
6bbfe89f96 Add spec for useNativeWindowOpen 2017-03-19 18:11:20 +09:00
Ryohei Ikegami
319a7759d0 Fix ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN handler 2017-03-19 17:52:39 +09:00
Ryohei Ikegami
2c7343293a Allow window.open on native-window-open enabled 2017-03-19 17:47:26 +09:00
Ryohei Ikegami
a1f9a45276 Use native window.open implementation 2017-03-19 17:41:20 +09:00
Ryohei Ikegami
054ba7a964 Add AtomBrowserClient::IsRendererUsesNativeWindowOpen 2017-03-19 17:25:45 +09:00
Ryohei Ikegami
f7935b429a Add WebContentsPreferences::IsNativeWindowOpenEnabled 2017-03-19 17:12:25 +09:00
deepak1556
72adbf7a2f destroy guest webcontents before embedder 2017-03-19 10:25:13 +05:30
Felipe Serafim
deef2da87c Update README.md
Correcting some Spanish words mistakes.
2017-03-18 23:23:14 +01:00
deepak1556
99fd1394e4 Revert "Revert "close devtools web contents when available to trigger cleanup""
This reverts commit 7f01bf4e73c188db2406ded1286b661c61c78bba.
2017-03-19 01:25:22 +05:30
deepak1556
16f9754445 Create separate request context for geolocation service.
* Geolocation service cannot hold reference to browser context,
    since it is destroyed at the end of everything and this will
    confuse the shutdown path of browser context.
  * Geolocation service run on its own thread.
2017-03-19 01:11:55 +05:30
Adham Saad
8060b0966f 🐛 #8919 - fix typo 2017-03-17 20:47:20 +02:00
Adham Saad
487a195320 🐛 #8919 - add new command to the docs 2017-03-17 20:44:18 +02:00
Kevin Sawicki
a215e8fb82 Merge pull request #8954 from electron/mark-touchbar-apis-with-experimental-label
Mark touch bar apis with _Experimental_ in docs
2017-03-17 11:02:46 -07:00
Kevin Sawicki
6f047fd4b7 Mark touch bar apis with _Experimental_ 2017-03-17 10:56:41 -07:00
Kevin Sawicki
64984ac23b Merge pull request #8942 from electron/read-binary-data-from-clipboard
Add clipboard.readBuffer(format)
2017-03-17 10:56:24 -07:00
Kevin Sawicki
f119bc0944 Remove unused args param 2017-03-17 10:35:54 -07:00
Kevin Sawicki
c50b518493 Check toString after loading remote properties 2017-03-17 10:29:07 -07:00
Kevin Sawicki
648d3324fb Add spec for remote function with toString property 2017-03-17 10:28:23 -07:00
Kevin Sawicki
11a4c7e408 🎨 2017-03-17 09:57:17 -07:00
Kevin Sawicki
3ae034deab Change data -> format in clipboard docs 2017-03-17 09:57:17 -07:00
Kevin Sawicki
ab05346572 Add clipboard.readBuffer 2017-03-17 09:57:17 -07:00
Kevin Sawicki
0e55e5cbb5 Add initial spec for clipboard.readBuffer 2017-03-17 09:57:17 -07:00
Kevin Sawicki
fe5db82d47 Merge pull request #8926 from electron/upgrade-libcc-for-heap-snapshot-patch
Upgrade libcc and brightray to latest
2017-03-17 09:55:39 -07:00
Kevin Sawicki
f71353a4c5 Merge pull request #8939 from electron/expose-remote-to-sandbox
Expose remote module to sandbox
2017-03-17 09:41:59 -07:00
Kevin Sawicki
9642381c02 Upgrade to libcc 44448acf 2017-03-17 09:37:28 -07:00
Kevin Sawicki
bbf477291f Merge pull request #282 from electron/revert-278-devtools_shutdown_patch
Revert "close devtools web contents when available to trigger cleanup"
2017-03-17 09:37:04 -07:00
Kevin Sawicki
6b387e339b Merge pull request #281 from electron/upgrade-libcc
Upgrade libcc to latest
2017-03-17 09:36:54 -07:00
Kevin Sawicki
8877d78e79 Revert "close devtools web contents when available to trigger cleanup" 2017-03-17 09:35:01 -07:00
Kevin Sawicki
a35cce5f7a Enable takeHeapSnapshot spec 2017-03-17 09:14:17 -07:00
Kevin Sawicki
469ab8b509 Upgrade libcc for heap snapshot patch 2017-03-17 09:14:17 -07:00
Kevin Sawicki
1499ba83d9 Upgrade libcc to latest 2017-03-17 09:11:28 -07:00
Todd Wolfson
818738ce84 🐛 Add toString support to remote functions 2017-03-17 08:21:37 -07:00
Thiago de Arruda
e9b955b9ec Use remote/fs to read preload script during sandboxed setup
Also expose the "fs" module to preload scripts, as a shortcut to
`require('electron').remote.require('fs')`
2017-03-16 14:23:00 -03:00
Thiago de Arruda
f6befbe764 Expose lib/renderer/api/remote.js to sandboxed renderer 2017-03-16 14:21:23 -03:00
Kevin Sawicki
6d45052eea Merge pull request #8900 from electron/handle-buffer-instances-in-sandbox
Handle Buffer deserialization in sandboxed renderers
2017-03-16 10:12:09 -07:00
Thiago de Arruda
a6e4867111 Handle Buffer deserialization in sandboxed renderers
In sandboxed renderers we use browserify to provide a node-like environment. The
Buffer class used by browserify is actually just a wrapper around Uint8Array,
but to deserialize Buffer correctly we must expose the class as a hidden value
and use it in V8ValueConverter.
2017-03-16 13:20:09 -03:00
Kevin Sawicki
da0d0e7aac Merge pull request #8910 from electron/touchbar-scrubber
Touchbar NSScrubber
2017-03-16 09:10:59 -07:00
Adham Saad
713e256843 🐛 #8919 - add new command that cleans only out & dist dirs 2017-03-16 13:34:53 +02:00
Cheng Zhao
e0485f5ea1 Merge pull request #278 from electron/devtools_shutdown_patch
close devtools web contents when available to trigger cleanup
2017-03-16 17:49:57 +09:00
Kevin Sawicki
e98ac94d51 🎨 2017-03-15 11:22:31 -07:00
Kevin Sawicki
bc31f05404 highlightedStyle -> overlayStyle 2017-03-15 09:47:07 -07:00
Kevin Sawicki
f41db87e47 Use NSZeroRect for scrubber frame 2017-03-15 09:45:50 -07:00
Kevin Sawicki
466c39ed19 Use icon for consistency with other touch bar APIs 2017-03-15 09:33:11 -07:00
Kevin Sawicki
019883f2fa Merge pull request #8899 from electron/dynamically-generate-browserify-dep-list
Dynamically generate dependencies of browserify build actions
2017-03-15 09:12:31 -07:00
Cheng Zhao
5200b1a1ab Merge pull request #8435 from electron/pdf_rendering
browser: implement native pdf rendering
2017-03-15 18:36:50 +09:00
Kevin Sawicki
49d48a4eb0 Add more non-default options to scrubber spec 2017-03-14 14:15:04 -07:00
Kevin Sawicki
87c219748d Document more constructor options 2017-03-14 14:12:41 -07:00
Kevin Sawicki
2e0e4e69bb Drop on prefix from property names 2017-03-14 14:02:48 -07:00
Kevin Sawicki
6175ee05e2 Remove unneeded long cast 2017-03-14 13:59:29 -07:00
Kevin Sawicki
8b7675baee Add more forward declarations for scrubber APIs 2017-03-14 13:57:39 -07:00
Kevin Sawicki
eeccdf967c Merge pull request #8924 from electron/update-appveyor-badge
Update AppVeyor badge URL
2017-03-14 13:18:04 -07:00
Bret Comnes
b67c81226c fix linting 2017-03-14 10:48:44 -07:00
Kevin Sawicki
069baf8cd8 Update AppVeyor badge URL 2017-03-14 10:13:53 -07:00
deepak1556
07c4f3563e close devtools web contents when available to trigger cleanup 2017-03-14 22:23:08 +05:30
Samuel Attard
a55cddaa53 Add more options 2017-03-14 18:57:57 +11:00
Bret Comnes
85c48a2336 make main process example shorter 2017-03-13 17:20:11 -07:00
Bret Comnes
2276357f72 update with a tree 2017-03-13 17:18:23 -07:00
Bret Comnes
f82590b9ab Wrap at 80 2017-03-13 15:48:42 -07:00
Bret Comnes
46af3cefec Clarify remote require of relative modules
The docs for the `remote.require(module)` method were a little too terse for me to understand the behavior of relative module loading for `remote.require` and I had to run an experiment to understand the behavior (e.g. is the relative path relative to caller of `remote.require` or relative to some other path in the project related to the main process?).   I think this is correct but someone please double check my understanding.

Adding an example and additional explanation should help clarify this.  Feel free to edit the copy as needed.
2017-03-13 15:42:26 -07:00
deepak1556
15e2b2335f address review comments 2017-03-14 00:26:27 +05:30
deepak1556
80ce60f644 spec: check if pdf has loaded 2017-03-14 00:26:27 +05:30
deepak1556
6e02d18a40 update submodules 2017-03-14 00:26:27 +05:30
deepak1556
6be779c777 update spec with new asset 2017-03-14 00:26:27 +05:30
deepak1556
d022d108a3 Dont intercept pdf request for subframes
Will not work without OOPIF support
2017-03-14 00:26:27 +05:30
deepak1556
4381e0895f propagate zoom changes to pdf plugin 2017-03-14 00:26:27 +05:30
deepak1556
eda413861a update spec 2017-03-14 00:26:27 +05:30
deepak1556
093cff5548 update libcc commit 2017-03-14 00:26:27 +05:30
deepak1556
b28e686228 code cleanup 2017-03-14 00:26:27 +05:30
deepak1556
b1b6573bcd build pdf resource in vendor/pdf_viewer 2017-03-14 00:26:27 +05:30
deepak1556
e5100cd103 Remove grit submodule 2017-03-14 00:26:27 +05:30
deepak1556
5a8e522526 StreamManager class is no longer required.
Stream lifetime is managed by webui
2017-03-14 00:26:27 +05:30
deepak1556
c982af991d request for pdf resource from the webui 2017-03-14 00:26:27 +05:30
Cheng Zhao
210f40dd53 Convert "\" to "/" in file:// url 2017-03-14 00:26:27 +05:30
Cheng Zhao
422b7acece Do not store resource_path as FilePath
On Windows the path value returned by PathWithoutParams also uses "/" as
separator, so there is no need to use the FilePath class.
2017-03-14 00:26:27 +05:30
Cheng Zhao
cca1db47ee Print error when path is not found 2017-03-14 00:26:27 +05:30
deepak1556
528853efbf handle reload api call from pdf ui 2017-03-14 00:26:27 +05:30
deepak1556
010193ef44 remove unused header 2017-03-14 00:26:27 +05:30
deepak1556
e4b97a3c93 update submodules to latest 2017-03-14 00:26:27 +05:30
deepak1556
6987e3ecd0 check if target stream is intercepted for correct request 2017-03-14 00:26:27 +05:30
deepak1556
ed89a603f3 update pdf_viewer to chrome 56.0.2924.87 2017-03-14 00:26:27 +05:30
deepak1556
b9710532e1 update api changes 2017-03-14 00:26:27 +05:30
deepak1556
07835bf4e6 update libcc commit 2017-03-14 00:26:27 +05:30
deepak1556
6e241c5e0d update submodule 2017-03-14 00:26:27 +05:30
deepak1556
bd9a9657aa disable node integration for chrome scheme 2017-03-14 00:26:27 +05:30
deepak1556
a4400dc549 add basic spec 2017-03-14 00:26:27 +05:30
deepak1556
3aba23b471 view_id=>stream_id and add some code comments. 2017-03-14 00:26:27 +05:30
deepak1556
e90fd1444f move constants to atom_constants.h 2017-03-14 00:26:27 +05:30
deepak1556
671a8a2cd6 address review comments 2017-03-14 00:26:27 +05:30
deepak1556
6cb626db88 use existing ipc message generator 2017-03-14 00:26:27 +05:30
deepak1556
56c0eb74ff update submodule 2017-03-14 00:26:27 +05:30
deepak1556
cc09b9ac7d BINDINGS_POLICY_WEB_UI is not required 2017-03-14 00:26:27 +05:30
Paul Betts
846d516584 Get us compiling on macOS 2017-03-14 00:26:27 +05:30
Paul Betts
8580a34f9f Get us compiling on Win32 2017-03-14 00:26:27 +05:30
deepak1556
2b64452d9c fix build config 2017-03-14 00:26:27 +05:30
deepak1556
3baa186c0a fix failing download spec 2017-03-14 00:26:27 +05:30
deepak1556
e767c59da2 enable pdf plugin by default 2017-03-14 00:26:27 +05:30
deepak1556
c15f6af892 fix crash when pdf viewer is reloaded 2017-03-14 00:25:59 +05:30
deepak1556
ddc2e0df71 code cleanup 2017-03-14 00:25:59 +05:30
deepak1556
de7dcdedba setup strings for ui 2017-03-14 00:25:59 +05:30
deepak1556
0c7bb72891 listen to ipc messages from plugin to perform SaveAs op 2017-03-14 00:25:59 +05:30
deepak1556
fd8c450ef3 move pdfviewer ui data source to separate file 2017-03-14 00:25:59 +05:30
deepak1556
008497500b update pdf_viewer submodule to use stream url 2017-03-14 00:25:59 +05:30
deepak1556
945e26750e manage the lifetime of streams created 2017-03-14 00:25:59 +05:30
deepak1556
0ab37da785 replace redundant mimetype helper with net utility 2017-03-14 00:25:59 +05:30
deepak1556
578b717b5f fix cpplint error 2017-03-14 00:25:59 +05:30
deepak1556
c8b932fce4 build pdf resources from submodule 2017-03-14 00:25:59 +05:30
deepak1556
c4dd2f4f56 add pdf webui as submodule 2017-03-14 00:25:59 +05:30
deepak1556
3c90fabab7 update pdf ui to work with webui 2017-03-14 00:25:59 +05:30
deepak1556
41c1623824 handle more messages from webui 2017-03-14 00:25:59 +05:30
deepak1556
a2db14476a create webui message handler 2017-03-14 00:25:59 +05:30
deepak1556
8a2b9c893e initialize webui with message handlers 2017-03-14 00:25:59 +05:30
deepak1556
a7ed7068f6 remove grit 2017-03-14 00:25:59 +05:30
deepak1556
be480fb634 import pdf ui 2017-03-14 00:25:59 +05:30
deepak1556
fdd574cea5 browser: implement pdf renderer as webui 2017-03-14 00:25:59 +05:30
Kevin Sawicki
5e70adb511 Guard against only specifying select or highlight handler 2017-03-13 11:23:27 -07:00
Kevin Sawicki
0dcdd60010 Add initial TouchBarScrubber spec 2017-03-13 11:17:55 -07:00
Kevin Sawicki
268dd1a6c2 Remove unneeded include 2017-03-13 11:15:36 -07:00
Kevin Sawicki
e52ece1a1e Implement NSScrubberDataSource in AtomTouchBar 2017-03-13 11:06:41 -07:00
Kevin Sawicki
4f31a5c452 Fix duplicate protocol method declaration 2017-03-13 10:39:42 -07:00
Kevin Sawicki
d7f458d232 Add protocol methods 2017-03-13 10:31:51 -07:00
Kevin Sawicki
2fe21ecdd0 🎨 2017-03-13 10:28:30 -07:00
Kevin Sawicki
37c9d76cd5 Take const references 2017-03-13 10:25:30 -07:00
Kevin Sawicki
dac6e0ce66 Sort filenames 2017-03-13 10:09:09 -07:00
Kevin Sawicki
634bd7b17f Add NSScrubber forward declarations 2017-03-13 10:07:48 -07:00
Kevin Sawicki
48152a813b Merge pull request #8907 from electron/plugin_list_patch
renderer: reset plugin cache when render frame is created
2017-03-13 09:22:21 -07:00
Kevin Sawicki
84e7387b17 Merge pull request #8906 from roramirez/docs-es
Add translated CODE_OF_CONDUCT.md and README.md for spanish language.
2017-03-13 09:11:30 -07:00
mst128256
76ee7fda2b Fixed linting 2017-03-13 14:26:34 +01:00
Samuel Attard
cfb3798703 Add docs for TouchBarScrubbber 2017-03-13 11:00:25 +11:00
Samuel Attard
a85ae27d68 Fix linting 2017-03-13 11:00:10 +11:00
Samuel Attard
25a231fc50 Initial NSScrubber implementation 2017-03-13 10:51:12 +11:00
Adham Saad
3b265747fe updating README 2017-03-12 14:17:03 +02:00
deepak1556
4281c73cf2 renderer: reset plugin cache when render frame is created 2017-03-12 00:53:39 +05:30
Rodrigo Ramírez Norambuena
eed098277c Add translated CODE_OF_CONDUCT.md and README.md for spanish language. 2017-03-10 22:24:00 -03:00
Kevin Sawicki
280337bf46 Merge pull request #8887 from electron/touchbar-segmneted-control
Touchbar segmented control
2017-03-10 14:43:12 -08:00
Thiago de Arruda
da023b72ee Dynamically generate dependencies of browserify build actions
Instead of having to list in filenames.gypi every javascript file that may go
into a browserify build, generate this list dynamically when the build files are
created by gyp.
2017-03-10 16:30:23 -03:00
Kevin Sawicki
5b1d5b39a2 Set automatic via else block 2017-03-10 10:11:56 -08:00
Kevin Sawicki
3349e32196 Verify selectedIndex to prevent NSRangeException 2017-03-10 10:09:18 -08:00
Kevin Sawicki
3b2faf7b89 Add initial TouchBarSegmentedControl spec 2017-03-10 10:04:22 -08:00
Kevin Sawicki
458e4be77c Add forward declaration for 10.12 API 2017-03-10 09:53:47 -08:00
Kevin Sawicki
7ef69a5af5 Merge pull request #8815 from tarruda/improve-sandbox-expose-more-modules
Improvements to sandbox mode
2017-03-10 09:23:31 -08:00
Zeke Sikelianos
582662e40f fix markdown link 2017-03-10 09:03:04 -08:00
Zeke Sikelianos
7fefb75de5 update versioning doc 2017-03-10 08:08:23 -08:00
Samuel Attard
bfe63d7a88 Fix linting 2017-03-10 17:56:26 +11:00
Samuel Attard
e6a66b6006 Add docs for segmented control touch bar item 2017-03-10 17:50:23 +11:00
Samuel Attard
1c027c526b Add segmented control implementation 2017-03-10 17:40:39 +11:00
Thiago de Arruda
dda2288541 Remove lib/renderer/api/ipc-renderer-setup.js
This file is no longer required since sandboxed renderer directly imports
ipc-renderer.js.
2017-03-09 20:40:32 -03:00
Thiago de Arruda
cd05834d96 Refactor sandboxed renderer init scripts
This change gives sandboxed renderer scripts a similar structure to what already
exists in the lib/{browser,renderer,common} directories.

It also allows sandboxed renderer initialization to share more code with
non-sandboxed renderers (ipcRenderer is now imported directly from
lib/renderer/api/ipc-renderer).
2017-03-09 20:39:14 -03:00
Thiago de Arruda
2b8203e383 Make sandboxed ipcRenderer API compatible with non-sandboxed version 2017-03-09 20:39:14 -03:00
Thiago de Arruda
d78f3cae7b Expose builtin v8 modules to AtomSandboxedRendererClient
- Adapt node.cc code that implements `process.binding` to create a similar
  object in AtomSandboxedRendererClient.
- Replace the ipc binding object passed to `lib/sandboxed_renderer/init.js` by
  the new binding object.
- Refactor the initialization script to use this new object to fetch the ipc
  binding and store as a hidden value using the `v8_util` module.

This change also required applying a patch to node.js, so the submodule commit
was updated.
2017-03-09 20:39:14 -03:00
Kevin Sawicki
85d66d2413 Merge pull request #8882 from electron/list-modules-in-separate-files
Refactor electron exports to keep module list in separate files
2017-03-09 15:36:02 -08:00
Cheng Zhao
b15123938c Merge pull request #270 from electron/pdf_rendering
Link necessary pdf libraries and load pdf ui resources
2017-03-10 08:35:00 +09:00
Thiago de Arruda
44bd93589a Refactor electron exports to keep module list in separate files 2017-03-09 19:08:01 -03:00
Kevin Sawicki
e79a22da5d Merge pull request #8883 from electron/pass-crash-reporter-upload-parameter
Pass `uploadToServer` parameter to linux crash reporter
2017-03-09 12:59:35 -08:00
Thiago de Arruda
e03e37e984 Pass uploadToServer parameter to linux crash reporter 2017-03-09 17:23:52 -03:00
Kevin Sawicki
14e8e463b3 Merge pull request #8864 from electron/zoom_controller_webview_patch
browser: track origin zoom with HostZoomMap
2017-03-09 11:27:34 -08:00
Kevin Sawicki
14b548f27a Merge pull request #8858 from electron/native-image-add-representation
Add nativeImage.addRepresentation API
2017-03-09 10:49:19 -08:00
Kevin Sawicki
f19998ef4c Add more default values 2017-03-09 10:26:44 -08:00
Kevin Sawicki
2946f624ac Add spec for adding representation to existing image 2017-03-09 09:56:42 -08:00
Kevin Sawicki
089bfd2cd2 Document nativeImage.addRepresentation(options) 2017-03-09 09:56:42 -08:00
Kevin Sawicki
6e977cbc3a Assert emptiness and size of built up images 2017-03-09 09:56:42 -08:00
Kevin Sawicki
7e039d92ec Support adding representation from data URL 2017-03-09 09:56:42 -08:00
Kevin Sawicki
d67863aa9f Add addRepresentation buffer support 2017-03-09 09:56:42 -08:00
Kevin Sawicki
17b70670f8 Add initial NativeImage.addRepresentation specs 2017-03-09 09:56:42 -08:00
Kevin Sawicki
783b5e84f4 Merge pull request #8866 from jkleinsc/master
Add WebRTCIPPolicy setting to webContents
2017-03-09 09:55:08 -08:00
Kevin Sawicki
ff5081816f Remove unneeded done call 2017-03-09 09:53:01 -08:00
mst128256
8aba640250 added default menu items for 'Edit' and 'Window' #2814 2017-03-09 16:01:33 +01:00
John Kleinschmidt
3c74404a3e Updated docs. 2017-03-09 09:54:09 -05:00
TanninOne
410e80682a Update browser-window.md
Notes that maximize will also show the window and that ready-to-show won't fire if the window is already being displayed. (See issue #8861)
2017-03-09 15:41:31 +01:00
John Kleinschmidt
d5a658bbe4 Fixed pass by reference and added spec 2017-03-08 22:06:26 -05:00
Kevin Sawicki
c004cf0894 Merge pull request #8870 from electron/touch-bar-links
Add more links to touch bar docs
2017-03-08 13:16:09 -08:00
Kevin Sawicki
dcfab1b6a0 Link more touch bar params 2017-03-08 13:04:55 -08:00
John Kleinschmidt
950e3436c2 Removed webrtcippolicy attribute from webview 2017-03-08 13:52:04 -05:00
John Kleinschmidt
1c2a78a896 Add WebRTCIPPolicy setting to webContents and webview
Resolves #8777
Code to set and get the policy come from the muon framework code:
https://github.com/brave/muon/blob/master/atom/browser/api/atom_api_web_
contents.cc#L1324...L1343
2017-03-08 10:15:48 -05:00
deepak1556
224ffe44aa add spec 2017-03-08 19:16:55 +05:30
deepak1556
b5cfa2e92d track host zoom levels with HostZoomMap 2017-03-08 19:03:43 +05:30
Kevin Sawicki
4f817873f1 Merge pull request #8849 from electron/to-data-url-scale-factor
Support scale factor in more NativeImage APIs
2017-03-07 12:55:56 -08:00
Kevin Sawicki
31cae8e1aa Add more scale factor specs 2017-03-07 12:34:31 -08:00
Kevin Sawicki
8852b128ec Add GetScaleFactorFromOptions helper 2017-03-07 12:27:55 -08:00
Kevin Sawicki
6d5fbe6be2 Document scale factor option 2017-03-07 12:27:55 -08:00
Kevin Sawicki
82a81bb26e Support scale factor to buffer APIs 2017-03-07 12:27:55 -08:00
Kevin Sawicki
e4ead6d018 Remove hasRepresentation and just use 1x png result 2017-03-07 12:27:55 -08:00
Kevin Sawicki
c11cdf321b Support toPNG on image without 1x representation 2017-03-07 12:27:55 -08:00
Kevin Sawicki
8bc65ef495 Add failing spec for toPNG with scale factor 2017-03-07 12:27:55 -08:00
Kevin Sawicki
86babdd412 Remove unused include 2017-03-07 12:27:55 -08:00
Kevin Sawicki
50ade57700 Add more hasRepresentation asserts 2017-03-07 12:27:55 -08:00
Kevin Sawicki
0bbbeb307e Support toDataURL without 1x representation 2017-03-07 12:27:55 -08:00
Kevin Sawicki
8eaf48e552 Add spec for 1x1 PNG data URL 2017-03-07 12:27:55 -08:00
Kevin Sawicki
b46e48cae1 Add failing toDataURL spec 2017-03-07 12:27:55 -08:00
Kevin Sawicki
c0d57d609e Merge pull request #8845 from electron/promise-resolve-assignment
Assign Promise.resolve to constant
2017-03-07 12:27:40 -08:00
Kevin Sawicki
dbe9893d29 Assign Promise.resolve to constant 2017-03-07 12:10:09 -08:00
Kevin Sawicki
e0260d6f53 Bump v1.6.3 2017-03-07 09:49:39 -08:00
Kevin Sawicki
5b8fcb740c Merge pull request #8856 from electron/touch-bar-experimental
Mark TouchBar API as experimental
2017-03-07 09:48:59 -08:00
Kevin Sawicki
bb8d42f1e1 Mark TouchBar as experimental 2017-03-07 09:42:45 -08:00
Kevin Sawicki
8d512de157 Merge pull request #8851 from joaomoreno/joaomoreno-patch-1
Update `ses.resolveProxy` return type
2017-03-07 09:35:29 -08:00
Samuel Attard
f97066511f Capitalize type 2017-03-07 21:25:40 +11:00
João Moreno
5a4d9807ee Update ses.resolveProxy return type
As far as I'm aware, after using the `ses.resolveProxy` API, it seems to return a string in the shape of `PROXY foopy:80;SOCKS5 bar.com:1080`, not an object. Correct me if I'm wrong.
2017-03-07 11:21:51 +01:00
Kevin Sawicki
9547ff135f Merge pull request #8744 from electron/MarshallOfSound-patch-1
Ensure userGesture is boolean when calling executeJavaScript
2017-03-06 11:19:23 -08:00
Kevin Sawicki
6bc464d4b0 Mention userGesture default 2017-03-06 10:51:48 -08:00
Kevin Sawicki
6240e30be1 Default hasUserGesture to false when null 2017-03-06 10:51:17 -08:00
Kevin Sawicki
6fcb784f6e Add failing spec for no callback 2017-03-06 10:49:23 -08:00
Samuel Attard
095e79b043 Ensure the callback is a function when executing JS 2017-03-06 10:46:20 -08:00
Kevin Sawicki
f549bda9fc Merge pull request #8799 from nitsakh/baseURLForDataURL
Support base URL option to loadURL for data URLs
2017-03-06 10:25:53 -08:00
Kevin Sawicki
886b47e713 Merge pull request #8724 from electron/defer_load_url
webContents: defer url load when there is a pending navigation entry
2017-03-06 10:18:36 -08:00
Kevin Sawicki
479af3c9e2 Merge pull request #8678 from liusy182/download-item
only emit `download-item done` event once
2017-03-06 10:11:22 -08:00
Kevin Sawicki
94b7fef30f Merge pull request #8604 from electron/groundwater-patch-1
Emphasize asking for repo URL in bug reports
2017-03-06 09:48:36 -08:00
Kevin Sawicki
e485ff6cea Incorporate feedback 2017-03-06 09:48:11 -08:00
Kevin Sawicki
d26e4a4abf Merge pull request #8800 from electron/https-website
Update website URLs to use HTTPS
2017-03-06 09:32:20 -08:00
Kevin Sawicki
cb66a769d4 Merge pull request #8795 from electron/rename-shortcuts-to-keyboard-shortcuts
Rename shortcuts to keyboard shortcuts
2017-03-06 09:30:55 -08:00
Kevin Sawicki
8b53ff3900 Merge pull request #8840 from Yarkhan/patch-1
Correcting typo
2017-03-06 09:27:38 -08:00
Kevin Sawicki
c7d3d48875 Merge pull request #8837 from rhysd/fix-touchbar-doc
Fix TouchBarSpacer class name in doc
2017-03-06 09:25:57 -08:00
Kevin Sawicki
9234bddc38 Merge pull request #8834 from electron/tb-doc-fixups
Add more explicit types to docs for TouchBar
2017-03-06 09:25:29 -08:00
Cheng Zhao
aaa8e81cd4 Merge pull request #8811 from electron/clean-node-on-exit
Clean up node Environment on exit
2017-03-06 20:36:59 +09:00
Yarkhan
ef5c2bbded Correcting typo 2017-03-05 20:40:18 -03:00
deepak1556
90885d1d8c simply spec 2017-03-06 00:22:20 +05:30
deepak1556
e936143da2 listen for browser initiated pending nav entries too 2017-03-06 00:21:52 +05:30
deepak1556
eb827eb020 update spec 2017-03-06 00:10:46 +05:30
deepak1556
dead1ae1ba webContents: defer url load when there is a pending navigation entry 2017-03-06 00:10:46 +05:30
rhysd
c209b886bf fix TouchBarSpacer class name in doc 2017-03-05 15:09:57 +09:00
Samuel Attard
f97ee56c9f Add more explicit types to docs for TouchBar 2017-03-04 16:14:41 +11:00
Kevin Sawicki
e315116336 Merge pull request #8830 from electron/touchbar-label-color
Support setting TouchBarLabel text color
2017-03-03 15:51:16 -08:00
Kevin Sawicki
4d6c779839 identList -> identifiers 2017-03-03 15:28:32 -08:00
Kevin Sawicki
b879872317 Always set properties in update calls 2017-03-03 15:24:32 -08:00
Kevin Sawicki
2680ee9f8f Add support for setting TouchBarLabel text color 2017-03-03 15:14:51 -08:00
Kevin Sawicki
0098822fcf Merge pull request #8095 from electron/touchbar
Add TouchBar Support
2017-03-03 14:37:56 -08:00
Kevin Sawicki
9f323104e7 Remove unused include 2017-03-03 14:11:09 -08:00
Kevin Sawicki
edebb32014 Drop nullable for consistency 2017-03-03 14:07:59 -08:00
Kevin Sawicki
fde310f50d Mention it only effects 10.12.1 with touch bar 2017-03-03 14:04:55 -08:00
Kevin Sawicki
d9a8c15c69 Add clover to possible values 2017-03-03 14:00:39 -08:00
Kevin Sawicki
ca2898a60e Check that window responds to touchBar selector for pre-10.12.1 compat 2017-03-03 14:00:39 -08:00
Kevin Sawicki
c349aeff80 Add initial touch bar specs 2017-03-03 14:00:39 -08:00
Kevin Sawicki
002369576f Add initial touch bar docs 2017-03-03 14:00:39 -08:00
Kevin Sawicki
81ecd4499c Make exported properties match class names 2017-03-03 14:00:39 -08:00
Kevin Sawicki
eb03ab561d Make config optional 2017-03-03 14:00:39 -08:00
Kevin Sawicki
ce12dcd3b4 Add live popover icon property 2017-03-03 14:00:39 -08:00
Kevin Sawicki
a34f9d3583 Support icon property to match MenuItem 2017-03-03 14:00:39 -08:00
Kevin Sawicki
506b42b563 🎨 2017-03-03 14:00:39 -08:00
Kevin Sawicki
ecc0478e3c Match Popover casing in macOS APIs 2017-03-03 14:00:39 -08:00
Kevin Sawicki
79b17c2cd9 Expose TouchBar on remote module 2017-03-03 14:00:39 -08:00
Kevin Sawicki
d1edd80ef8 Use NSTouchBar itemForIdentifier to lookup existing item 2017-03-03 14:00:39 -08:00
Kevin Sawicki
8d716e8b17 Register item after validating 2017-03-03 14:00:39 -08:00
Kevin Sawicki
93bbe8e70b Use device NS colors consistently 2017-03-03 14:00:39 -08:00
Kevin Sawicki
70d61869a5 Use array to create empty NSMutableArray 2017-03-03 14:00:39 -08:00
Kevin Sawicki
76f112ffc5 Only export TouchBar to start 2017-03-03 14:00:39 -08:00
Kevin Sawicki
5fe3ac60fa Check that atom_touch_bar_ is set 2017-03-03 14:00:39 -08:00
Kevin Sawicki
708ed9d1cd Store ordered settings in AtomTouchBar 2017-03-03 14:00:39 -08:00
Kevin Sawicki
5f9e9d4b36 Add move live updating properties 2017-03-03 14:00:39 -08:00
Kevin Sawicki
61aa9bbff4 Add support for spacer items 2017-03-03 14:00:39 -08:00
Kevin Sawicki
f153d08297 Support setting the initial/available colors 2017-03-03 14:00:39 -08:00
Kevin Sawicki
f9dd91d54d Add static helper to bind touch bar to window 2017-03-03 14:00:39 -08:00
Kevin Sawicki
51f1c5a557 Use SetTouchBar withe empty vector instead of DestroyTouchBar 2017-03-03 14:00:39 -08:00
Kevin Sawicki
d5dbe3676e Add window helpers to TouchBar class 2017-03-03 14:00:39 -08:00
Kevin Sawicki
347d472841 Remove unused clear method 2017-03-03 14:00:39 -08:00
Kevin Sawicki
b959f782f6 Rename instance variable maps 2017-03-03 14:00:39 -08:00
Kevin Sawicki
ec500b2852 Use scoped_nsobject to match Chrome implementation 2017-03-03 14:00:38 -08:00
Kevin Sawicki
812beb240b Remove unneeded includes 2017-03-03 14:00:38 -08:00
Kevin Sawicki
823b3baed0 Use vector of dictionaries instead of mate::Arguments 2017-03-03 14:00:38 -08:00
Kevin Sawicki
98f5858b11 Initial support for dynamic properties 2017-03-03 14:00:38 -08:00
Kevin Sawicki
cbb6f8c33e Store event listeners in each TouchBar class 2017-03-03 14:00:38 -08:00
Kevin Sawicki
1972e2eff9 Update renamed variable 2017-03-03 14:00:38 -08:00
Kevin Sawicki
28f2a4951b touch_bar_helper_ -> atom_touch_bar_ 2017-03-03 14:00:38 -08:00
Kevin Sawicki
b39b49a15a Rename to touch_bar_helper_ to differentiate from touchBar property 2017-03-03 14:00:38 -08:00
Kevin Sawicki
14ef5c5957 Reset helper when makeTouchBar is called 2017-03-03 14:00:38 -08:00
Kevin Sawicki
ca29ec0101 Use reference 2017-03-03 14:00:38 -08:00
Kevin Sawicki
f297ba987e touchBarFromMutatableArray -> touchBarFromItemIdentifiers 2017-03-03 14:00:38 -08:00
Kevin Sawicki
b30f7c3c94 Use std::string ctor 2017-03-03 14:00:38 -08:00
Kevin Sawicki
8500538793 Use base::SysUTF8ToNSString helper 2017-03-03 14:00:38 -08:00
Kevin Sawicki
cf7cd1f32b hasTBDict -> hasItemWithID 2017-03-03 14:00:38 -08:00
Kevin Sawicki
48515d9ecc Ignore objective-c header lint 2017-03-03 14:00:38 -08:00
Kevin Sawicki
b632cdd37d Extract helper class to encapsulate touch bar items 2017-03-03 14:00:38 -08:00
Kevin Sawicki
1b5149ae7a Few memory and scope tweaks 2017-03-03 14:00:38 -08:00
Kevin Sawicki
b16d649819 Use skia color helpers 2017-03-03 14:00:38 -08:00
Kevin Sawicki
eff49ad19c Return early when touchBar is null 2017-03-03 14:00:38 -08:00
Kevin Sawicki
69638a399c Make touchBar readwrite/nullable 2017-03-03 14:00:38 -08:00
Kevin Sawicki
d4d3c78701 Ignore lint warnings in Objective-C header 2017-03-03 14:00:38 -08:00
Kevin Sawicki
9bdca3bbfb Remove linter warnings 2017-03-03 14:00:38 -08:00
Kevin Sawicki
9272582bd6 Revert default_app changes 2017-03-03 14:00:38 -08:00
Kevin Sawicki
52905ae9b3 Get compiling against 10.10 SDK 2017-03-03 14:00:38 -08:00
Kevin Sawicki
2a00bb30c5 Use new NativeWindowObserver helper 2017-03-03 14:00:38 -08:00
Samuel Attard
ba3fbc9d1b Fix Group items 2017-03-03 14:00:38 -08:00
Samuel Attard
28d5c8bbde Add updateConfig ability to other items 2017-03-03 14:00:38 -08:00
Samuel Attard
dd09c91cf2 initial work on updating touch bar item config without rerender 2017-03-03 14:00:38 -08:00
Samuel Attard
61949657f0 Some docs for touch bar 2017-03-03 14:00:38 -08:00
Samuel Attard
15dcc314d3 Export the TouchBar items as their own props on the electron main export 2017-03-03 14:00:38 -08:00
Samuel Attard
d1b3ba39bd Fix cpp linting 2017-03-03 14:00:38 -08:00
Samuel Attard
4f0caffc3b Fix JS linting 2017-03-03 14:00:38 -08:00
Samuel Attard
257b32b84b Remove unused ident 2017-03-03 14:00:38 -08:00
Samuel Attard
43cc5079d8 Implement group item 2017-03-03 14:00:38 -08:00
Samuel Attard
269d899a99 Implement popOver item type (woo hoo it worked) 2017-03-03 14:00:38 -08:00
Samuel Attard
2bc45c8665 Change demo touchbar values 2017-03-03 14:00:38 -08:00
Samuel Attard
c92c4138a8 Add Slider item type and add options to the button type 2017-03-03 14:00:38 -08:00
Samuel Attard
18c7c3ece8 Make label and colorpicker types work 2017-03-03 14:00:38 -08:00
Samuel Attard
7857c83ea1 Make dynamic buttons work along with click events 2017-03-03 14:00:38 -08:00
Samuel Attard
703b5738c8 Initial TouchBar Magic
* Make the AtomNSWindow also a NSTouchbarDelegate
* Implement basic makeTouchBar and makeItemForIdentifier methods
* Initial sending of touch / update events through IPC to BrowserWindowObjects

TODO:
* JS API
* JS Object Converters
* Generalize methods so that popovers can work
2017-03-03 14:00:38 -08:00
Zeke Sikelianos
e027f4aacf Merge pull request #8816 from electron/webview-docs-fixes
Fix API docs for webview tag
2017-03-03 11:23:52 -08:00
Zeke Sikelianos
67dc1b1070 use updated docs linter with webview support 2017-03-03 10:53:30 -08:00
Nitish Sakhawalkar
d75db0ea1a Fixed js lint issues. 2017-03-02 14:37:09 -08:00
Zeke Sikelianos
ffc7a4c8a0 move platform labels to end of description for consistency 2017-03-02 13:57:04 -08:00
Zeke Sikelianos
23eecac288 document arguments for webview methods 2017-03-02 13:29:46 -08:00
Zeke Sikelianos
5ee7434a54 fix indentation of app.setLoginItemSettings arguments 2017-03-02 13:28:58 -08:00
Zeke Sikelianos
01423f79b3 denote webview process so linter will recognize it as an API 2017-03-02 13:27:04 -08:00
Nitish Sakhawalkar
370562b129 Moving data url test outside post navigation block. Trailing separator comment in the docs. 2017-03-02 12:14:18 -08:00
Nitish Sakhawalkar
e8c0813f46 Changes based on review. 2017-03-02 10:58:39 -08:00
Nitish Sakhawalkar
bcda67b8eb No more extra whitespace. 2017-03-02 10:50:48 -08:00
Kevin Sawicki
8f7785bb05 Merge pull request #8806 from electron/felix-winstore-moved
Fix init check for process.windowsStore
2017-03-02 10:35:08 -08:00
Kevin Sawicki
e51a4f0af1 Merge pull request #8804 from electron/isolated-world-origin
Set context isolation origin policy
2017-03-02 09:16:51 -08:00
Kevin Sawicki
7fb77ee1cb Set isolated world security origin 2017-03-02 08:49:18 -08:00
Kevin Sawicki
7f6283352f Add failing spec for fetch from isolated world 2017-03-02 08:49:18 -08:00
Cheng Zhao
cf198904a4 Fix cpplint warnings 2017-03-02 17:26:15 +09:00
Cheng Zhao
1709e74958 Fix crash when the main frame is replaced 2017-03-02 17:19:00 +09:00
Cheng Zhao
24574f7299 Avoid touch an Environemnt after it gets destroyed 2017-03-02 17:19:00 +09:00
Cheng Zhao
29278e500b Destroy node environment when a JS context in renderer is destroyed 2017-03-02 17:19:00 +09:00
Cheng Zhao
d379b05890 async handles should be closed on exit 2017-03-02 17:19:00 +09:00
Cheng Zhao
a0605275b9 Clean up node environment on exit in main process 2017-03-02 17:19:00 +09:00
Nitish Sakhawalkar
c06c4c0ccb Reverting formatting changes made by clang format. 2017-03-01 14:04:41 -08:00
Felix Rieseberg
4aaa936803 Fix init check for process.windowsStore
Windows now allows users to move their `WindowsApps` folder, meaning that it can end up on a different drive (and outside of `Program Files`).
2017-03-01 11:48:51 -08:00
Kevin Sawicki
d009b3267a Bump v1.6.2 2017-03-01 09:11:05 -08:00
Kevin Sawicki
59e656586d Merge pull request #8801 from tomfloyer/patch-1
Fixed typo
2017-03-01 09:05:04 -08:00
Tom Floyer
34e21cb91f Fixed typo 2017-03-01 12:03:00 +03:00
Zeke Sikelianos
15bf7ed536 use https URLs for images 2017-02-28 21:24:31 -08:00
Zeke Sikelianos
166bf7ab8c link to default docs URL from default app nav 2017-02-28 21:21:34 -08:00
Zeke Sikelianos
69f0cb26e7 use https for all Electron website URLs 2017-02-28 21:19:55 -08:00
Nitish Sakhawalkar
879082b1a6 Issue #8735:Support base URL option to loadURL for data URLs 2017-02-28 16:49:03 -08:00
Kevin Sawicki
dba154b062 Merge pull request #8766 from electron/browser-require-in-renderer-process
Don't require browser process API in renderer process
2017-02-28 09:19:30 -08:00
Kevin Sawicki
7a99f0435b Fix typo in comment 2017-02-28 08:45:39 -08:00
Kevin Sawicki
bb1a981a01 Mention variable name to update 2017-02-28 08:45:39 -08:00
Kevin Sawicki
ca8983bf6c Add initial spec for remote modules 2017-02-28 08:45:39 -08:00
Kevin Sawicki
e8a79cb88d Don't require browser process module from renderer
This can cause issues when it is accessed from the
require cache or module tree since the getters throw
errors when called.
2017-02-28 08:45:39 -08:00
Kevin Sawicki
51d6a55061 Merge pull request #8742 from electron/webview-visibility
Route webview window visibility change events in browser process
2017-02-28 08:45:15 -08:00
Zeke Sikelianos
8e7a26ec25 link to keyboard shortcuts from docs README 2017-02-28 08:44:28 -08:00
Zeke Sikelianos
61bce3ef39 rename shortcuts to keyboard-shortcuts for clarity 2017-02-28 08:44:12 -08:00
Kevin Sawicki
54232ee21a Emit event after listener is registered 2017-02-28 08:23:00 -08:00
Kevin Sawicki
1d84d83fd4 Forward webview visibility change events from browser process 2017-02-28 08:23:00 -08:00
Kevin Sawicki
7564a9973b Use const instead of var 2017-02-28 08:23:00 -08:00
Kevin Sawicki
f4717b34e9 Register visibility change listener when attached 2017-02-28 08:23:00 -08:00
Kevin Sawicki
2f5f7721fc Merge pull request #8792 from LasseJacobs/master
Pull request, for dutch translation of glossary.md
2017-02-28 08:18:17 -08:00
Rik Theunis
5fe62d23d9 📝 Fix typos and grammatical errors.
[ci skip]
2017-02-27 23:23:39 +01:00
Lasse Jacobs
76e1f882c0 📝 Fix some grammar mistakes
[ci-skip]
2017-02-27 23:23:05 +01:00
Lasse Jacobs
19a948298b 📝 Fix some spelling mistakes
[ci-skip]
2017-02-27 23:15:51 +01:00
Zeke Sikelianos
5a173965ed Merge pull request #8775 from electron/shortcuts
add a guide to keyboard shortcuts
2017-02-27 09:48:49 -08:00
Zeke Sikelianos
250c656aa7 lint 2017-02-27 09:34:35 -08:00
Kevin Sawicki
776fd56e41 Merge pull request #8787 from serant/translation-doc-typo
Fix typo in translation doc for BrowserWindow
2017-02-27 08:54:02 -08:00
Kevin Sawicki
368da3300e Merge pull request #8783 from thesbros/docs/blink-features-link
📝 Update link to Blink features.
2017-02-27 08:53:34 -08:00
Kevin Sawicki
20a9cf834b Merge pull request #8769 from jwheare/docs-cancel-id
Clarify docs for dialog.showMessageBox cancelId
2017-02-27 08:52:59 -08:00
Zeke Sikelianos
f774ea857e remove electron-localshortcut recommendation 2017-02-27 08:20:23 -08:00
serant
6b138e0215 Fixed typo in translation doc for BrowserWindow 2017-02-27 11:01:44 -05:00
Oden
c10f1210bc 📝 Update link to Blink features. 2017-02-26 20:34:00 -08:00
Zeke Sikelianos
ba4a2d7c30 describe local shortcuts before global 2017-02-25 19:21:33 -08:00
Zeke Sikelianos
5c64075032 add section for browser window events 2017-02-25 19:07:09 -08:00
Zeke Sikelianos
32f44d7917 add a guide to keyboard shortcuts 2017-02-25 18:59:13 -08:00
Zeke Sikelianos
dd5fa2df85 Merge pull request #8746 from electron/clarify-app-activation
clarify actions that cause app.activate event to be emitted
2017-02-25 18:20:43 -08:00
James Wheare
cdc6b13fc8 Clarify docs for dialog.showMessageBox cancelId 2017-02-24 23:56:47 +00:00
Kevin Sawicki
8e4bdec6b6 Merge pull request #8758 from electron/use-local-buffer
Use local Buffer variable in module.js require wrapper
2017-02-24 10:35:35 -08:00
Kevin Sawicki
6c40b1eead Verify global.Buffer is undefined 2017-02-24 09:57:32 -08:00
Kevin Sawicki
ad03ba73a4 Upgrade node for Buffer wrapper fix 2017-02-24 09:57:32 -08:00
Kevin Sawicki
e6fec57bd8 Add failing spec for Buffer from preload required module 2017-02-24 09:57:32 -08:00
Kevin Sawicki
b936221b63 Merge pull request #8733 from electron/macos-cancel-id
Support explicit cancelId on macOS
2017-02-24 09:32:07 -08:00
Kevin Sawicki
be16e75be2 Support explicit cancelId on macOS 2017-02-24 09:05:55 -08:00
Kevin Sawicki
d01250eceb Merge pull request #8739 from electron/pepper-context-menu
Use owner browser window in pepper context menu
2017-02-24 09:05:33 -08:00
Kevin Sawicki
739f3ed102 Popup pepper menu in owner browser window 2017-02-24 08:39:22 -08:00
Kevin Sawicki
c951e253c6 Default to focused window whenever param is null/undefined 2017-02-24 08:39:22 -08:00
Kevin Sawicki
3e05350d6b Check that window is non-null before accessing constructor prop 2017-02-24 08:39:22 -08:00
Kevin Sawicki
5819acbc20 Merge pull request #8745 from electron/async-web-dialog-helper
Use callback dialog methods in RunFileChooser
2017-02-24 08:38:19 -08:00
Kevin Sawicki
ef085a1f15 Remove unneeded AddRef/Release calls handled by base::Bind 2017-02-24 08:15:02 -08:00
Kevin Sawicki
6837ec8576 Check render frame host before getting context 2017-02-24 07:49:26 -08:00
Kevin Sawicki
a62c2f9e2e Remove unused include 2017-02-24 07:37:28 -08:00
Kevin Sawicki
29f92bfb53 Extend RefCounted and add private destructor 2017-02-24 07:37:28 -08:00
Kevin Sawicki
a33ffd621f Use callback dialog methods in RunFileChooser 2017-02-24 07:37:28 -08:00
liusi
ff513f2a84 remove the call to download_item_->Remove() on cancel 2017-02-24 14:08:21 +08:00
Kevin Sawicki
cc688d7fa6 Merge pull request #8760 from popod/popod-startDrag-doc
update startDrag(item) doc
2017-02-23 13:45:22 -08:00
Kevin Sawicki
eb260c3593 Update parameter prefix 2017-02-23 13:03:22 -08:00
popod
ea3b14f0bb update startDrag(item) doc
add doc for `files` option
2017-02-23 21:28:36 +01:00
deepak1556
9a321d2479 dont link libfxcrt.a on linux
It causes multiple definition error
2017-02-23 22:39:34 +05:30
deepak1556
80de70bf66 address review comments 2017-02-23 22:39:34 +05:30
Haojian Wu
26081d5a11 Link libfx_freetype.a on Mac OS. 2017-02-23 22:39:34 +05:30
deepak1556
7700884ebc link pdf libraries on linux with whole-archive option 2017-02-23 22:39:34 +05:30
deepak1556
5e842b1112 link necessary pdf libraries 2017-02-23 22:39:34 +05:30
deepak1556
2b4948d6aa load pdf resource pak file 2017-02-23 22:39:34 +05:30
Zeke Sikelianos
7c4529a01a clarify actions that cause app.activate event to be emitted 2017-02-22 16:42:34 -08:00
Kevin Sawicki
62f4a77755 Merge pull request #8702 from electron/async-menu-popup
Add async menu.popup option
2017-02-22 12:50:57 -08:00
Kevin Sawicki
211bedf910 Invoke close callback after itemSelected runs 2017-02-22 11:47:58 -08:00
Kevin Sawicki
d0b07d5c36 Check that x is non-null 2017-02-22 10:49:25 -08:00
Kevin Sawicki
a8d1a7aed4 Make variables private instead of protected 2017-02-22 10:30:28 -08:00
Kevin Sawicki
2006e22aa4 🎨 2017-02-22 10:30:28 -08:00
Kevin Sawicki
6c6506e5aa Document menu.closePopup 2017-02-22 10:30:28 -08:00
Kevin Sawicki
ce5ac1b056 Implement ClosePopupAt on Windows/Linux 2017-02-22 10:30:28 -08:00
Kevin Sawicki
91d1af053f Implement Menu.closePopup on Windows/Linux 2017-02-22 10:30:28 -08:00
Kevin Sawicki
0a5ccdccb4 Add spec for async Menu.popup 2017-02-22 10:30:28 -08:00
Kevin Sawicki
6a023dc4fe Add Menu.closePopup API on macOS 2017-02-22 10:30:28 -08:00
Kevin Sawicki
947556a23f Move MenuItem spec into root describe 2017-02-22 10:30:28 -08:00
Kevin Sawicki
55f90b4a4b Add new menu.popup signature to planned breaking changes 2017-02-22 10:30:28 -08:00
Kevin Sawicki
d686cf77e9 Update menu.popup docs to take options object 2017-02-22 10:30:28 -08:00
Kevin Sawicki
66b6b4f1cb Map async option to MenuRunner::ASYNC flag 2017-02-22 10:30:28 -08:00
Kevin Sawicki
4430927f98 Add async option to menu.popup 2017-02-22 10:30:28 -08:00
Kevin Sawicki
b091d104f5 Add async menu.popup on Windows/Linux 2017-02-22 10:30:28 -08:00
Kevin Sawicki
636ef0fd29 Add async menu.popup on macOS 2017-02-22 10:30:28 -08:00
Kevin Sawicki
85bdce0722 Merge pull request #8731 from herrmannplatz/patch-1
update setCertificateVerifyProc example
2017-02-22 08:22:21 -08:00
Kevin Sawicki
91bd95a0b2 Add space after if 2017-02-22 08:11:21 -08:00
René Herrmann
c4280612c1 update setCertificateVerifyProc example
setCertificateVerifyProc example should reflect new api
2017-02-22 11:49:14 +01:00
Lasse Jacobs
e5d82edf5d 📝 Add glossary.md to dutch translations part1
[ci skip] Add glossary.md with the first 8 topics.
2017-02-21 14:54:00 -08:00
Kevin Sawicki
92092bed41 Bump v1.6.1 2017-02-21 08:49:50 -08:00
Kevin Sawicki
f80af6e3ed Merge pull request #8718 from demopark/master
add translations files for zh-CN
2017-02-21 08:48:15 -08:00
Kevin Sawicki
1dd37eaab7 Merge pull request #8717 from gerhardberger/vibrancy-version-fix
Fix OS version check of vibrancy
2017-02-21 08:45:10 -08:00
DemoPark
c78d7fc125 add translations files for zh-CN
add zh-CN translations file - debug-instructions-windows.md
add zh-CN translations file - debugging-instructions-macos.md
update zh-CN translations file - README.md
2017-02-19 21:38:37 +08:00
gellert
a1ede4a4b0 fixes os version check of vibrancy 2017-02-18 20:25:03 +01:00
Kevin Sawicki
1f75df0253 Merge pull request #8693 from electron/zoom_specs
webContents: add basic zoom specs
2017-02-17 12:50:26 -08:00
deepak1556
a57af31b99 add zoom specs based on standard protocols 2017-02-18 01:41:39 +05:30
deepak1556
0c022fdc36 set zoom changes for in page navigaitons 2017-02-18 01:34:32 +05:30
deepak1556
403e7681c1 add basic webview zoom specs 2017-02-18 01:34:32 +05:30
deepak1556
c71b44048c address review comments 2017-02-18 01:34:32 +05:30
deepak1556
dfc2e6c4a8 add temporary zoom api spec 2017-02-18 01:34:32 +05:30
deepak1556
71fd3e807c use sync zoom api with guest view manager webpreferences 2017-02-18 01:34:32 +05:30
deepak1556
763b9ab8d8 add zoom spec 2017-02-18 01:34:32 +05:30
deepak1556
203a920c64 fix signature of zoom getter apis 2017-02-18 01:34:32 +05:30
Kevin Sawicki
5e30ccd891 Merge pull request #8709 from electron/upgrade-native-mate
Upgrade native_mate
2017-02-17 10:57:39 -08:00
Kevin Sawicki
e60601898d Upgrade native_mate 2017-02-17 10:25:20 -08:00
Kevin Sawicki
440e48fe19 Merge pull request #8707 from demopark/master
add translations files for zh-CN
2017-02-17 08:22:05 -08:00
Kevin Sawicki
91677ade89 Merge pull request #8704 from YurySolovyov/update-icon-fetch-impl
Update icon loading API implementation
2017-02-17 08:21:10 -08:00
DemoPark
529b84ff9c add translations files for zh-CN
add zh-CN translations file - clang-format.md
add zh-CN translations file - styleguide.md
update zh-CN translations file - README.md
2017-02-17 17:28:55 +08:00
deepak1556
5687f8b3b7 Destroy icon manager after file thread is destroyed 2017-02-17 14:16:18 +05:30
Yury Solovyov
977abc6458 Update icon loading API implementation 2017-02-16 23:16:34 +03:00
Kevin Sawicki
8fe025d6c9 Merge pull request #8695 from ericbrumer/master
[Win] Allow favicon.png to be on the root of any drive letter
2017-02-16 11:56:52 -08:00
Eric Brumer
87e606627c Smaller regex now that it's case insensitive 2017-02-16 09:26:20 -08:00
Eric Brumer
7cb101b566 Case insensitive filepath 2017-02-16 09:17:37 -08:00
Kevin Sawicki
19b686c90b Merge pull request #8696 from demopark/master
add translations files for zh-CN
2017-02-16 08:12:18 -08:00
DemoPark
6dd18678a9 add translations files for zh-CN
add zh-CN translations file - security.md
add zh-CN translations file - repl.md
add zh-CN translations file - windows-store-guide.md
update zh-CN translations file - glossary.md
update zh-CN translations file - README.md
2017-02-16 16:31:55 +08:00
Eric Brumer
d97585d06d Allow favicon.png to be on the root of any drive letter 2017-02-15 19:02:11 -08:00
Kevin Sawicki
a00bb332ca Merge pull request #8686 from demopark/master
Optimize zh-CN language logic and grammar
2017-02-15 12:27:06 -08:00
Kevin Sawicki
9a7ac5326c Merge pull request #8676 from electron/focus-delegate
Prevent invisible windows from being activated
2017-02-15 11:22:00 -08:00
Kevin Sawicki
70849de8c4 Mark constructor as explicit 2017-02-15 08:28:55 -08:00
Kevin Sawicki
52801c4a41 Use internal IsVisible method 2017-02-15 08:28:55 -08:00
Kevin Sawicki
db79f4f450 Implement Activate instead of CanFocus 2017-02-15 08:28:55 -08:00
Kevin Sawicki
bda8af8dd3 Just use visible state in CanFocus delegate 2017-02-15 08:28:55 -08:00
Kevin Sawicki
86007fe61d Update blur parent window spec 2017-02-15 08:28:55 -08:00
Kevin Sawicki
35908ac398 Add webContents.focus() spec 2017-02-15 08:28:55 -08:00
Kevin Sawicki
be79417a03 Include CanFocus on Windows and map to state 2017-02-15 08:28:55 -08:00
Kevin Sawicki
0ac3969c6a Merge pull request #8682 from electron/use-electron-version-in-chromedriver-asset-name
Use electron version in Chromedriver asset name
2017-02-15 08:28:43 -08:00
Kevin Sawicki
a0fc5ae63d Use electron version in Chromedriver asset name 2017-02-15 08:17:40 -08:00
DemoPark
1170ecb269 add zh-CN translations for offscreen-rendering.md
add zh-CN translations for offscreen-rendering.md
2017-02-15 17:45:52 +08:00
DemoPark
f79ce38a57 add zh-CN translations for electron-versioning.md
add zh-CN translations for 'electron-versioning.md'
2017-02-15 17:21:20 +08:00
Jonas Zhang
20aeec7cf5 Merge pull request #1 from demopark/demopark-patch-1
Optimize zh-CN language logic and grammar
2017-02-15 14:21:37 +08:00
Jonas Zhang
b3ab426a5e Optimize zh-CN language logic and grammar
Optimize zh-CN language logic and grammar.
2017-02-15 14:20:48 +08:00
Cheng Zhao
c127ce3e46 Merge pull request #8679 from electron/disable-active-tracker
Disable the ActiveVerifier
2017-02-15 11:04:36 +09:00
Kevin Sawicki
fe59f413f6 Merge pull request #8684 from electron/compiler-error
Rename variable for compiler error
2017-02-14 12:40:21 -08:00
Kevin Sawicki
36e6501c44 Rename variable for compiler error 2017-02-14 12:30:23 -08:00
Kevin Sawicki
9be42db8d5 Merge pull request #8628 from Spacetech/master
Implement invalidate for non-offscreen mode
2017-02-14 11:41:16 -08:00
Kevin Sawicki
52d989f908 Update docs for non-offscreen invalidate 2017-02-14 11:17:39 -08:00
Kevin Sawicki
643cb5d6de Remove unused variable 2017-02-14 11:13:23 -08:00
Kevin Sawicki
5cb6648686 Use underscore variable name for consistency 2017-02-14 11:12:30 -08:00
Kevin Sawicki
82f452568c 🎨 Minor formatting tweaks 2017-02-14 11:09:15 -08:00
Kevin Sawicki
897d58bde1 Merge pull request #8648 from electron/set-extra-crash-reporter-data
Support updating crash reporter extra parameters
2017-02-14 10:09:02 -08:00
Kevin Sawicki
272a0824e8 Fix darwin platform name 2017-02-14 09:37:09 -08:00
Kevin Sawicki
af7702d0f2 🎨 2017-02-14 09:37:09 -08:00
Kevin Sawicki
07173cdd9d Tweak setExtraParameter description 2017-02-14 09:37:09 -08:00
Kevin Sawicki
b51adf8ae5 Add spec for updated extra parameters 2017-02-14 09:37:09 -08:00
Kevin Sawicki
a4bbad03c2 autoSubmit -> uploadToServer 2017-02-14 09:37:09 -08:00
Kevin Sawicki
f3756ccf29 Run crash reporter specs on all platforms 2017-02-14 09:37:09 -08:00
Kevin Sawicki
3b7207da9f Support removing extra parameters 2017-02-14 09:37:09 -08:00
Kevin Sawicki
41fef3999c Document setExtraParameter 2017-02-14 09:37:09 -08:00
Kevin Sawicki
9a434af03e Clear crash keys in InitBreakpad 2017-02-14 09:37:09 -08:00
Kevin Sawicki
ba975d552a Add setExtraParameter support on macOS 2017-02-14 09:37:09 -08:00
Kevin Sawicki
cfe3ae234b Correct , -> . typo 2017-02-14 09:37:09 -08:00
Kevin Sawicki
3e18d8baf5 Remove _ prefix on binding methods 2017-02-14 09:37:09 -08:00
Kevin Sawicki
e4c54fd0d8 Merge pull request #8662 from oukan/feature/translate-zh-CN
Modules for the Main Process to zh-CN
2017-02-14 09:33:27 -08:00
Kevin Sawicki
e9e8595605 Merge pull request #8673 from electron/scroll-touch-end
Call OnWindowScrollTouchEnd instead of Edge
2017-02-14 09:32:56 -08:00
Kevin Sawicki
c54ae66fb9 Call OnWindowScrollTouchEnd instead of Edge 2017-02-14 09:13:07 -08:00
Kevin Sawicki
624e44dd6f Merge pull request #8605 from electron/no-more-global-buffer
Delete Buffer global when node integration is disabled
2017-02-14 09:07:24 -08:00
Kevin Sawicki
fdc1d3d763 Add Buffer typeof assertion 2017-02-14 08:42:34 -08:00
Kevin Sawicki
8e09fcd2a9 Upgrade node for require wrapper Buffer change 2017-02-14 08:42:34 -08:00
Kevin Sawicki
2a18e3f9ea Remove Buffer global on load 2017-02-14 08:42:34 -08:00
Kevin Sawicki
1933a4fc9f Remove global Buffer mention now handled as require wrapper 2017-02-14 08:42:34 -08:00
Kevin Sawicki
7e138083ef Add declared const Buffer spec 2017-02-14 08:42:34 -08:00
Kevin Sawicki
70010fdb8e Add spec for Buffer global 2017-02-14 08:42:34 -08:00
Kevin Sawicki
80dad58a59 Merge pull request #8654 from electron/context-shutdown-crash
Upgrade brigthray for context crash fix
2017-02-14 08:41:55 -08:00
Kevin Sawicki
1f0bc7fe86 Upgrade brigthray for context crash fix 2017-02-14 08:25:27 -08:00
Kevin Sawicki
28f96f32f9 Merge pull request #276 from electron/context-shutdown-crash
Cleanly shutdown browser context
2017-02-14 08:24:52 -08:00
Cheng Zhao
bad6954911 Disable the ActiveVerifier 2017-02-14 17:23:20 +09:00
liusi
d56c1909df only emit download-item done event once. 2017-02-14 14:39:33 +08:00
Gary Wilber
f19924bcb0 Add Invalidate method to NativeWindow and add Mac implementation 2017-02-13 19:41:24 -08:00
Kevin Sawicki
4ed9f63989 Cleanly shutdown browser context 2017-02-13 11:04:02 -08:00
Kevin Sawicki
d3c967401d Merge pull request #8672 from electron/reorder-compiler-error-in-zoom-controller
Call content::WebContentsObserver first
2017-02-13 09:24:38 -08:00
Kevin Sawicki
d7ab142e10 Call content::WebContentsObserver first 2017-02-13 09:09:42 -08:00
Kevin Sawicki
8c2cf03f37 Merge pull request #8617 from electron/resolves-aliases-nsopen
Add resolvesAliases option to openDialog
2017-02-13 08:29:18 -08:00
Kevin Sawicki
a746651d1c Use dialog setter for consistency with other properties 2017-02-13 08:23:53 -08:00
Samuel Attard
17fe5efa13 Fix linting 2017-02-13 08:23:53 -08:00
Samuel Attard
7c33f3ee65 Document the noResolveAliases property 2017-02-13 08:23:53 -08:00
Samuel Attard
e45d8079b8 Add support for a noResolveAliases property 2017-02-13 08:23:53 -08:00
Kevin Sawicki
266c78b861 Merge pull request #8669 from poppinlp/patch-1
Fix typo
2017-02-13 08:18:19 -08:00
Kevin Sawicki
c9e5d7d1e2 Merge pull request #8660 from fab1an/patch-3
Update session.md
2017-02-13 08:17:23 -08:00
Kevin Sawicki
070cc40af4 Merge pull request #8659 from fab1an/patch-2
Update web-contents.md
2017-02-13 08:16:55 -08:00
Cheng Zhao
16382162f8 Update brightray for electron/brightray#275. 2017-02-13 19:27:21 +09:00
Cheng Zhao
4abd865989 Merge pull request #275 from electron/fix-bootstrap
Bootstrap: change working directory when doing submodule updates.
2017-02-13 19:26:04 +09:00
Cheng Zhao
7f7df5a6dd Merge pull request #8537 from deepak1556/webcontents_zoom_patch
webContents: manage zoom changes on the browser side with HostZoomMap
2017-02-13 17:24:33 +09:00
Cheng Zhao
7d5c14e2e8 Merge pull request #273 from deepak1556/zoom_pref_patch
Persist zoom changes per partition
2017-02-13 17:15:31 +09:00
PoppinL
9b8e4eb6cb Fix typo
Fix typo
2017-02-13 16:14:49 +08:00
Cheng Zhao
593b7cc92a Merge pull request #8668 from electron/fix-mas
Update libchromiumcontent: fix usage of private API in MAS build
2017-02-13 17:03:37 +09:00
Cheng Zhao
51d5706b48 Update libchromiumcontent: fix usage of private API in MAS build 2017-02-13 16:45:43 +09:00
Weiqiang Lin
e262f6c63e webContents to zh-CN 2017-02-12 23:12:33 +08:00
Weiqiang Lin
b7551b5d84 Class: Tray to zh-CN 2017-02-12 22:51:36 +08:00
Weiqiang Lin
dddb6458da systemPreferences to zh-CN 2017-02-12 22:38:24 +08:00
Weiqiang Lin
c9dd59eb86 session to zh-CN 2017-02-12 22:36:08 +08:00
Weiqiang Lin
9fd9b39448 protocol to -zh-CN 2017-02-12 22:35:03 +08:00
Weiqiang Lin
6a0738aa88 powerSaveBlocker to zh-CN 2017-02-12 22:07:24 +08:00
Weiqiang Lin
50fbd5266a powerMonitor to zh-CN 2017-02-12 22:00:09 +08:00
Fabian Zeindl
46c65ae5fc Update session.md 2017-02-12 10:06:24 +01:00
Fabian Zeindl
5efa34ce6d Update web-contents.md 2017-02-12 10:03:33 +01:00
deepak1556
7a0aff2bae code cleanup 2017-02-12 01:48:24 +05:30
deepak1556
cbeaa6be87 simply handling temporary zoom levels of webview 2017-02-12 00:49:17 +05:30
deepak1556
e3fe3cc490 map webframe zoom api to use HostZoomMap 2017-02-12 00:49:17 +05:30
deepak1556
63c0e4cbb1 Add ZoomController to manager zoom changes for webcontents 2017-02-12 00:49:17 +05:30
deepak1556
07794a58aa use zoom factor webpreference option when required.
* When setzoomlevel is not called for the host.
* When there is no zoom preference for the host.
2017-02-12 00:49:17 +05:30
deepak1556
b27c94368d webContents: set zoom levels with HostZoomMap 2017-02-12 00:49:17 +05:30
Kevin Sawicki
5e78330c6d Merge pull request #8540 from electron/SECURITY.md
Add SECURITY.md
2017-02-10 13:27:50 -08:00
Kevin Sawicki
9b6b8752d4 Merge pull request #8655 from electron/thai-translations
Add Thai translations
2017-02-10 12:18:43 -08:00
Kevin Sawicki
4d7d72256d Remove doc linter warnings 2017-02-10 12:18:24 -08:00
Kevin Sawicki
9dd960fc97 Remove untranslated files 2017-02-10 12:06:06 -08:00
ThePooE
c49363f521 📝 Thai: translated accessibility.md 2017-02-10 11:54:51 -08:00
ThePooE
45a1ffef8f 📝 Thai: fix small line breaking, word warpping in glossary.md 2017-02-10 11:54:51 -08:00
ThePooE
43b09b7360 📝 Thai: translated glossary.md 2017-02-10 11:54:51 -08:00
ThePooE
d3bf36e12a 📝 Thai: translated styleguide.md 2017-02-10 11:54:51 -08:00
wit543
0f55468042 📝 Thai: translate the header ++
translate the header and opening statement
2017-02-10 11:54:51 -08:00
wit543
f4ea70d2c2 Update about.md 2017-02-10 11:54:51 -08:00
ThePooE
9ce93e6cac 📝 Thai: add English placeholders for files to be translated 2017-02-10 11:54:51 -08:00
ThePooE
a78cd79a58 📝 Thai: add link from README.md to the translated version 2017-02-10 11:54:51 -08:00
ThePooE
e008d86e76 📝 Thai: added electron-faq.md 2017-02-10 11:54:51 -08:00
ThePooE
7fdfaa13e7 📝 Thai: fully translated README.md 2017-02-10 11:54:51 -08:00
ThePooE
888dc5702f 📝 Thai: add prelude translation to README.md 2017-02-10 11:54:51 -08:00
Kevin Sawicki
b92c4f6ce5 Merge pull request #8651 from electron/new-window-docs
[ci skip] Improve docs for `new-window` event
2017-02-10 10:29:07 -08:00
deepak1556
0b76a9c073 Persist zoom levels per partition 2017-02-10 22:54:32 +05:30
Kevin Sawicki
e85d2f00dd Fix linting errors around spacing and semicolons 2017-02-10 08:49:13 -08:00
Kevin Sawicki
5d0da398bf Merge pull request #8650 from electron/will-attach-webview-docs
[ci skip] Improve docs for `will-attach-webview` event
2017-02-10 08:45:40 -08:00
Catalin Ionut Fratila
19d7f0733e create-dist: Adding argument to supress api docs generation. 2017-02-10 14:26:53 +01:00
Vadim Macagon
035d9df29b Fix example code 2017-02-10 18:02:03 +07:00
Vadim Macagon
197ad915b7 [ci skip] Improve docs for new-window event
This should help clarify the purpose of `event.newGuest` as per the recent discussion in #7407.
2017-02-10 17:57:55 +07:00
Cheng Zhao
e8f689ecd3 Merge pull request #8640 from electron/fix-debug-symbols
Update libchromiumcontent: Fix debug symbols not generated
2017-02-10 19:11:31 +09:00
Vadim Macagon
e8f0331aeb Improve docs for will-attach-webview event 2017-02-10 10:33:33 +07:00
Kevin Sawicki
acedc3e726 Merge pull request #8584 from electron/new-webview-event
Add will-attach-webview event
2017-02-09 12:40:11 -08:00
Kevin Sawicki
81addbdcbf Remove only call 2017-02-09 11:49:14 -08:00
Kevin Sawicki
941f6c63e3 🎨 Use embedder var for clarity 2017-02-09 11:48:45 -08:00
Kevin Sawicki
a7c050107b Remove guest from will-attach-webview event 2017-02-09 11:47:45 -08:00
Kevin Sawicki
acff2f6baf Adjust src from will-attach-webview 2017-02-09 11:45:07 -08:00
Kevin Sawicki
8b0d3a2567 Emit attach params as well in event 2017-02-09 11:45:07 -08:00
Kevin Sawicki
792f3c3030 Document will-attach-webview 2017-02-09 11:45:07 -08:00
Kevin Sawicki
46f1a49594 new-webview -> will-attach-webview 2017-02-09 11:45:07 -08:00
Kevin Sawicki
7eda8fbdfb Add new-webview event that can be prevented 2017-02-09 11:45:07 -08:00
Kevin Sawicki
706b9f6cbf Add new-webview specs 2017-02-09 11:45:07 -08:00
Kevin Sawicki
5bf60ad8e8 Merge pull request #8556 from yamgent/macos-open-save-panel
Support message, nameFieldLabel and showsTagField for macOS dialog
2017-02-09 11:34:19 -08:00
Kevin Sawicki
5130ad24eb 🎨 2017-02-09 11:30:17 -08:00
Kevin Sawicki
35654d872b Document new settings 2017-02-09 11:29:10 -08:00
Kevin Sawicki
f7f4de36af Merge remote-tracking branch 'origin/master' into macos-open-save-panel 2017-02-09 11:25:05 -08:00
Kevin Sawicki
c3f3a6f133 Merge pull request #8623 from electron/dialog-options-helper
Add DialogSettings helper
2017-02-09 11:07:02 -08:00
Kevin Sawicki
867bb5a94e Add DialogSettings helper struct 2017-02-09 10:13:11 -08:00
Kevin Sawicki
e7410976f0 Merge pull request #8590 from electron/showmessagebox-checkbox
Add support for checkbox with dialog.showMessageBox
2017-02-09 10:07:03 -08:00
Kevin Sawicki
7994acf0ea Use CHROMEGTK_CALLBACK_0 and ignore gpointer data 2017-02-09 09:49:09 -08:00
Birunthan Mohanathas
c8c11e68c6 Add support for checkbox with dialog.showMessageBox
This adds the `checkboxLabel` and `checkboxChecked` options to display a
checkbox in the message box. Fixes #6048.
2017-02-09 09:03:54 -08:00
Tan Wang Leng
347dc835b5 Fix code formatting 2017-02-09 21:51:11 +08:00
Tan Wang Leng
a4a71a1dc9 Change qualifier of ShowSaveDialog() parameter
The normal convention in the codebase is to not use references
or 'const' for primitives like 'bool' and 'int'.
2017-02-09 21:50:55 +08:00
Tan Wang Leng
72723646dd Add tests to check errors in parameters 2017-02-09 21:23:02 +08:00
Tan Wang Leng
9423143211 Change the default value of showsTagField to true
The default value of showsTagField in macOS's NSSavePanel is true.

Therefore, in order to follow the standard behavior and not break
backwards-compatibility, let's change the default value of
showsTagField to true.

Reference:
https://developer.apple.com/reference/appkit/nssavepanel/1525589-showstagfield?language=objc
2017-02-09 21:01:40 +08:00
Tan Wang Leng
b0487b7d84 Fix wrong signature for gtk's ShowSaveDialog() 2017-02-09 20:10:57 +08:00
Tan Wang Leng
1bf8270c0d 🏁 Fix dialog method calls for Windows 2017-02-09 20:10:57 +08:00
Tan Wang Leng
8843fef065 📝 Update docs for new attributes in showOpenDialog() 2017-02-09 20:10:57 +08:00
Tan Wang Leng
36209ddd90 🍎 Add additional options for Mac's open dialog
Support an additional attributes available in macOS's NSOpenPanel:
message.
2017-02-09 20:10:57 +08:00
Tan Wang Leng
cc22149beb 📝 Update docs for new attributes in showSaveDialog() 2017-02-09 20:10:57 +08:00
Tan Wang Leng
1d612a12a1 🍎 Add additional options for Mac's save dialog
Support additional attributes available in macOS's NSSavePanel: message,
nameFieldLabel and showsTagField
2017-02-09 20:10:57 +08:00
Weiqiang Lin
e267a0dd41 Class: MenuItem to zh-CN 2017-02-09 17:57:27 +08:00
Weiqiang Lin
eba65eb4d3 Class: Menu to zh-CN 2017-02-09 17:34:45 +08:00
Weiqiang Lin
c7b639e282 ipcMain to zh-CN 2017-02-09 17:16:27 +08:00
Weiqiang Lin
8f542b1d69 globalShortcut to zh-CN 2017-02-09 17:08:58 +08:00
Weiqiang Lin
4a78490a6a dialog to zh-CN 2017-02-09 17:01:30 +08:00
Weiqiang Lin
db4ad8c692 contentTracing to zh-CN 2017-02-09 16:57:41 +08:00
Weiqiang Lin
f949f83a57 BrowserWindow to zh-CN 2017-02-09 16:17:38 +08:00
Cheng Zhao
a3c5eafb16 Update libchromiumcontent to include debug symbols 2017-02-09 16:52:19 +09:00
Cheng Zhao
90492df1cb Fix exception when executing create-dist directly 2017-02-09 16:52:19 +09:00
Weiqiang Lin
6adf1640e5 autoUpdater to zh-CN 2017-02-09 15:51:48 +08:00
Weiqiang Lin
5d35d2476d window.open Function to zh-cn 2017-02-09 15:24:29 +08:00
Kevin Sawicki
9163b601a4 Merge pull request #8636 from electron/update-certificate-verifier-specs-for-linux-ci
Allow multiple verification results in specs
2017-02-08 13:56:59 -08:00
Kevin Sawicki
22b9c6e539 Allow multiple verification results 2017-02-08 13:33:07 -08:00
Kevin Sawicki
bad130f623 Merge pull request #7955 from deepak1556/veto-ssl-verify
session: provide chromium cert verification result to setCertificateVerifiy callback
2017-02-08 13:12:24 -08:00
Kevin Sawicki
18e15a1e53 Add spec for rejecting using old signature 2017-02-08 12:51:24 -08:00
Kevin Sawicki
1e581d6814 Use unique_ptr for passing VerifyRequestParams 2017-02-08 11:59:43 -08:00
Kevin Sawicki
70178adb6e Use object for verification request 2017-02-08 11:59:43 -08:00
Kevin Sawicki
5245d42d15 Only document deprecation for now 2017-02-08 11:59:43 -08:00
Kevin Sawicki
9c134e7bf3 Assert certificate error 2017-02-08 11:59:43 -08:00
Kevin Sawicki
6b56dfd94b Add spec for remote callback length 2017-02-08 11:59:43 -08:00
Kevin Sawicki
37db804099 Use NetLogWithSource since BoundNetLog no longer exists 2017-02-08 11:59:43 -08:00
Greg Nolle
e29b64a18a modify CertVerifier Class
* respond to multiple similar verification requests.
* accept net error result as callback response.
2017-02-08 11:59:43 -08:00
Kevin Sawicki
d00a96ce35 Merge pull request #8618 from electron/forward-this-in-require-wrapper
Forward `this` in require wrapper
2017-02-08 10:33:48 -08:00
Kevin Sawicki
e9226aa354 Assert test.coffee outside of doesNotThrow 2017-02-08 09:02:46 -08:00
Kevin Sawicki
c1773a2c94 Add coffee-script dependency to specs 2017-02-08 09:00:14 -08:00
Kevin Sawicki
090255c3f4 Upgrade node for require wrapper this fix 2017-02-08 09:00:14 -08:00
Kevin Sawicki
84f8bfbdef Add spec for registering/requiring Coffeescript 2017-02-08 09:00:14 -08:00
Kevin Sawicki
83d31cefeb Merge pull request #8626 from dengyaolong/master
complete download-item translation docs
2017-02-08 08:50:26 -08:00
Gary Wilber
11e1f6b56c Fix lint errors 2017-02-08 00:05:16 -08:00
Gary Wilber
ed44b32ff5 Convert indentation to spaces 2017-02-07 23:08:03 -08:00
Gary Wilber
148898fb75 Implement invalidate for non-offscreen mode 2017-02-07 23:03:42 -08:00
Cheng Zhao
5cd18fe32a Merge pull request #8619 from electron/mac-os-version-checks
Use IsAtLeastOS10_* version checks
2017-02-08 13:58:26 +09:00
dengyaolong
0748f4fef2 complete download-item translation docs 2017-02-08 12:38:08 +08:00
Kevin Sawicki
f9b319e4f8 Merge pull request #8624 from electron/disable-file-icon-specs-on-linux
Disable getFileIcon specs on Linux CI
2017-02-07 18:30:00 -08:00
Kevin Sawicki
ba03f04017 Disable getFileIcon specs on Linux CI 2017-02-07 18:24:35 -08:00
Cheng Zhao
0643d98d99 Merge pull request #8616 from electron/renew-symbol-trick
Simplify the trick used for referencing symbols
2017-02-08 07:56:28 +09:00
Kevin Sawicki
4630f4488e Merge pull request #7851 from YurySolovyov/image-from-icon
Add an API to fetch file icon
2017-02-07 11:37:06 -08:00
Kevin Sawicki
82ac4ddf19 Large is only 48x48 on Linux 2017-02-07 11:20:27 -08:00
Kevin Sawicki
fc1b7431c7 Tweak optional syntax 2017-02-07 10:35:31 -08:00
Kevin Sawicki
a4277bb616 Document sizes 2017-02-07 10:33:44 -08:00
Kevin Sawicki
dddc6aec49 Tweak spec descriptions 2017-02-07 10:21:20 -08:00
Kevin Sawicki
683a758dab Call done instead of skip 2017-02-07 10:16:09 -08:00
Kevin Sawicki
ee66776450 Update IconManager for Chrome 56 upgrade 2017-02-07 10:15:46 -08:00
Yury Solovyov
a9dae243b4 Fix large icon spec 2017-02-07 09:55:18 -08:00
Yury Solovyov
c810e64fda Fix doc lint 2017-02-07 09:55:18 -08:00
Yury Solovyov
bcf0964c61 Fix more review 2017-02-07 09:55:18 -08:00
Yury Solovyov
2b60df3d8b Fix some feedback 2017-02-07 09:55:18 -08:00
Yury Solovyov
29452364f3 Use isolate() method to get isolate 2017-02-07 09:54:22 -08:00
Yury Solovyov
c36cdb8580 Properly skip large size test on macOS 2017-02-07 09:54:22 -08:00
Yury Solovyov
1aa4fcae08 Lint tests 2017-02-07 09:54:22 -08:00
Yury Solovyov
00748889f9 Add tests 2017-02-07 09:54:22 -08:00
Yury Solovyov
c2bf5bb986 Put locker and handle scope to the top of the function. Remove unneeded header 2017-02-07 09:53:34 -08:00
Yury Solovyov
11ef2c539b Update docs 2017-02-07 09:53:34 -08:00
Yury Solovyov
5794138ed4 Normalize path 2017-02-07 09:53:34 -08:00
Yury
1b4ee6e0d8 Image from icon node-style callback (#2)
* Try implementing node-style callbacks

* Add locker and handle scope
2017-02-07 09:53:34 -08:00
deepak1556
2e85ff1f57 Fix code style 2017-02-07 09:53:34 -08:00
Yury Solovyov
3d47c9b71d Fix lint 2017-02-07 09:53:34 -08:00
Yury Solovyov
fe99b255c4 Add docs 2017-02-07 09:53:34 -08:00
Yury Solovyov
05cb26a174 Use object for options 2017-02-07 09:53:34 -08:00
Yury Solovyov
bec671bac8 Make size optional 2017-02-07 09:52:11 -08:00
deepak1556
ff3aaa55f7 define icon loader for liunx as separate target 2017-02-07 09:52:11 -08:00
Robo
b25b141642 create iconmanager as singleton class and cleanup code (#1)
* create iconmanager as singleton class and cleanup code
2017-02-07 09:52:11 -08:00
Yury Solovyov
1b3cd87fc9 Add icon manager to browser process 2017-02-07 09:50:17 -08:00
Yury Solovyov
602aba8723 Include proper header 2017-02-07 09:48:12 -08:00
Yury Solovyov
eb889b9b86 Get it compiling, linking till fails though 2017-02-07 09:48:12 -08:00
Yury Solovyov
d118fed5c2 Try my own class 2017-02-07 09:48:12 -08:00
Yury Solovyov
8e4ed664d9 Add icon fetching sources 2017-02-07 09:48:12 -08:00
Yury Solovyov
1d24a3a175 Add callback converters 2017-02-07 09:48:12 -08:00
Yury Solovyov
be5b907179 WIP 2017-02-07 09:48:12 -08:00
Kevin Sawicki
0f98c9d3fb Use at least OS version checks 2017-02-07 09:32:40 -08:00
Kevin Sawicki
c3c5470a7c Merge pull request #8542 from yamgent/webpref-numeric
Fix webpreferences not accepting numeric options
2017-02-07 09:15:55 -08:00
Kevin Sawicki
4de637779b Make int converter helper an instance method 2017-02-07 09:13:42 -08:00
Tan Wang Leng
7ec88d16a6 Use base::StringToInt() instead of std::stringstream 2017-02-07 09:05:55 -08:00
Tan Wang Leng
42f65c52fb 🐛 Fix webpreferences not accepting numeric options
The webpreferences attribute values are parsed as strings instead
of numbers. Therefore, a conversion is required.
2017-02-07 09:05:55 -08:00
Catalin Ionut Fratila
3487c90667 Bootstrap: change working directory when doing submodule updates. 2017-02-07 11:21:58 +01:00
Cheng Zhao
84c180ac69 Simplify the trick used for referencing symbols 2017-02-07 17:09:43 +09:00
renaesop
7f2705b2d9 Print enhancement: add webContents.printerList And a print option to select printer
Print enhancement: add webContents.printerList And a print option to select printer
2017-02-07 12:03:29 +08:00
renaesop
26135b412b Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	atom/browser/api/atom_api_web_contents.cc
#	chromium_src/chrome/browser/printing/print_job_worker.cc
#	chromium_src/chrome/browser/printing/print_job_worker.h
#	chromium_src/chrome/browser/printing/print_view_manager_base.cc
#	chromium_src/chrome/browser/printing/print_view_manager_base.h
#	chromium_src/chrome/browser/printing/printer_query.cc
#	chromium_src/chrome/common/print_messages.cc
#	chromium_src/chrome/renderer/printing/print_web_view_helper.cc
2017-02-07 09:30:36 +08:00
Kevin Sawicki
852519a826 Bump v1.6.0 2017-02-06 16:42:00 -08:00
Kevin Sawicki
e6fe2a93f2 Merge pull request #8607 from electron/fix-win32-link
Fix missing of symbols when linking win32 build
2017-02-06 16:41:22 -08:00
Cheng Zhao
85e84cc0da Fix missing of symbols when linking win32 build 2017-02-07 09:14:50 +09:00
Kevin Sawicki
a2ecef26a2 Merge pull request #8606 from electron/fix-broken-link
Fix broken Squirrel.Windows link
2017-02-06 16:01:40 -08:00
Charlie Hess
a35424ef25 Fix broken Squirrel.Windows link. 2017-02-06 15:54:05 -08:00
Jacob Groundwater
b8e12a0d21 Update ISSUE_TEMPLATE.md 2017-02-06 14:57:04 -08:00
Kevin Sawicki
8359c72347 Merge pull request #8501 from electron/chrome56
Upgrade to Chrome 56
2017-02-06 11:17:20 -08:00
Kevin Sawicki
17e94cd8dc Merge pull request #272 from electron/chrome56
Upgrade to Chrome 56
2017-02-06 11:16:18 -08:00
Kevin Sawicki
dbb81e34e8 Upgrade node for modules version bump 2017-02-06 10:34:30 -08:00
Kevin Sawicki
997799ad68 Update libcc to e0da1e9 2017-02-06 10:34:30 -08:00
Cheng Zhao
ec650b3773 Update to Chrome 56.0.2924.87 2017-02-06 10:34:30 -08:00
Cheng Zhao
864a23f72b Fix print() not working 2017-02-06 10:34:30 -08:00
Cheng Zhao
86215d4300 Allow filter to use any scheme 2017-02-06 10:34:30 -08:00
Cheng Zhao
e0c021bfef Fix compilation waring on Mac 2017-02-06 10:34:29 -08:00
Cheng Zhao
1ed8743da8 Update Windows printing code to latest 2017-02-06 10:34:29 -08:00
Cheng Zhao
d483352f78 Fix PrintToPDF not receiving results 2017-02-06 10:34:29 -08:00
Cheng Zhao
3024d0563f There were new defaultPrintingSetting fields added 2017-02-06 10:34:29 -08:00
Cheng Zhao
ab783413a2 Update printing code to latest 2017-02-06 10:34:29 -08:00
Cheng Zhao
75627ba6ad Fix sync printing not working 2017-02-06 10:34:29 -08:00
Cheng Zhao
85961a0dd9 Update libchromiumcontent to fix duplicate main functions 2017-02-06 10:34:29 -08:00
Cheng Zhao
c69626336d Link with xcb on Linux 2017-02-06 10:34:29 -08:00
Cheng Zhao
82d796ded4 Fix missing of symbols issue on Release build 2017-02-06 10:34:29 -08:00
Cheng Zhao
41f356a94d icu's namespace has become icu_58 2017-02-06 10:34:29 -08:00
Cheng Zhao
a98e69a80d Work around the compilation error of v8_value_converter.cc
We should apply this patch in future:
0232f57400%5E%21/
2017-02-06 10:34:29 -08:00
Cheng Zhao
be29ea4dad libgtk2ui => libgtkui 2017-02-06 10:34:29 -08:00
Cheng Zhao
820c0827c0 Fix cpplint warnings 2017-02-06 10:34:29 -08:00
Cheng Zhao
55d4d44f02 Fix Debug building on Windows 2017-02-06 10:34:29 -08:00
Cheng Zhao
6165d36351 There is a new INSERTED type of ChangeCause
For the purpose of compatibility, we treat it as "explicit".
2017-02-06 10:34:29 -08:00
Cheng Zhao
09fcb7fb27 Fix crash when using webview 2017-02-06 10:34:29 -08:00
Cheng Zhao
c72438f09f WebInspector has been split up 2017-02-06 10:34:29 -08:00
Cheng Zhao
0a7c51b9aa Fix linking on Mac 2017-02-06 10:34:29 -08:00
Cheng Zhao
fa4b8cff45 Fix error due to search for openssl headers 2017-02-06 10:34:29 -08:00
Cheng Zhao
eb3b77f43b ScopedTempDir::path is replaced with GetPath 2017-02-06 10:34:29 -08:00
Cheng Zhao
6763977316 Update URLPattern to its latest version 2017-02-06 10:34:29 -08:00
Cheng Zhao
81784827ff PrintWebViewHelper is attached to RenderFrame 2017-02-06 10:34:29 -08:00
Cheng Zhao
234e1bb811 base::Bind now prevents the case with no arguments 2017-02-06 10:34:29 -08:00
Cheng Zhao
411696ca19 Clear is replaced with ClearEntriesAddedWithin 2017-02-06 10:34:29 -08:00
Cheng Zhao
8a6fd685e3 Interface of crashpad_client.StartHandler has changed
Refs:
7b9234c4b2%5E%21/
2017-02-06 10:34:29 -08:00
Cheng Zhao
4a14b17255 WindowOpenDisposition has become enum class 2017-02-06 10:34:29 -08:00
Cheng Zhao
6d5339b74e insertText is deprecated 2017-02-06 10:34:29 -08:00
Cheng Zhao
5e43ea227e purgedSize and purgeableSize are removed by Chrome 2017-02-06 10:34:29 -08:00
Cheng Zhao
6d323dd6fe web/WebInputEvent.h is moved to platform/WebInputEvent.h 2017-02-06 10:34:29 -08:00
Cheng Zhao
53bf82dd7c Update URLRequestFetchJob 2017-02-06 10:34:29 -08:00
Cheng Zhao
e7f3a25626 Update OffScreenRenderWidgetHostView 2017-02-06 10:34:29 -08:00
Cheng Zhao
2e0780308c allowDisplayingInsecureContent is removed by Chrome 2017-02-06 10:34:29 -08:00
Cheng Zhao
47c1bc9f66 Update ResponsePiper 2017-02-06 10:34:29 -08:00
Cheng Zhao
5cf2873b77 net::FtpProtocolHandler has changed its constructor 2017-02-06 10:34:29 -08:00
Cheng Zhao
5162905fe4 Update widevine_cdm_messages.h 2017-02-06 10:34:29 -08:00
Cheng Zhao
1a15b45736 --cipher-suite-blacklist is also removed 2017-02-06 10:34:29 -08:00
Cheng Zhao
dc9000f344 --ssl-version-fallback-min is removed by Chrome 2017-02-06 10:34:28 -08:00
Cheng Zhao
3ea6d88763 Update AtomCertVerifier 2017-02-06 10:34:28 -08:00
Cheng Zhao
c0697d8abe SetupFilter is replaced with SetUpSourceStream 2017-02-06 10:34:28 -08:00
Cheng Zhao
9882e87fbd Update OffScreenOutputDevice 2017-02-06 10:34:28 -08:00
Cheng Zhao
c2f3bbb3e6 Update OffScreenWebContentsView 2017-02-06 10:34:28 -08:00
Cheng Zhao
a95bd227c3 Update atom::Browser 2017-02-06 10:34:28 -08:00
Cheng Zhao
e91eed6758 FOR_EACH_OBSERVER is removed 2017-02-06 10:34:28 -08:00
Cheng Zhao
85749e4dbd Update AtomJavaScriptDialogManager 2017-02-06 10:34:28 -08:00
Cheng Zhao
6eaa30e94c Update AtomResourceDispatcherHostDelegate 2017-02-06 10:34:28 -08:00
Cheng Zhao
13a1d79ca6 Deperecate AtomSecurityStateModelClient with SecurityStateTabHelper 2017-02-06 10:34:28 -08:00
Cheng Zhao
3224c39371 Mac's version checking function has changed 2017-02-06 10:34:28 -08:00
Cheng Zhao
1d29b23662 Update api::WebContents 2017-02-06 10:34:28 -08:00
Cheng Zhao
231173aa90 Namespace of ChangeCause has changed 2017-02-06 10:34:28 -08:00
Cheng Zhao
d4e3dade39 WindowCapturer and ScreenCapturer are merged to DesktopCapturer 2017-02-06 10:34:28 -08:00
Cheng Zhao
7a7b72ce04 SimpleMenuModel::MenuClosed renamed to MenuWillClose 2017-02-06 10:34:28 -08:00
Cheng Zhao
c10eb73166 Signature of OnCreateWindow has changed 2017-02-06 10:34:28 -08:00
Cheng Zhao
d8e9432b0d contentTracing.setWatchEvent/cancelWatchEvent is removed 2017-02-06 10:34:28 -08:00
Cheng Zhao
0a91779dfa Node also defines LIKELY 2017-02-06 10:34:28 -08:00
Cheng Zhao
074cad9146 A few new V8 defines 2017-02-06 10:34:28 -08:00
Cheng Zhao
406224edff enable_pepper_cdms is now a feature flag
So we should not define it anymore.
2017-02-06 10:34:28 -08:00
Cheng Zhao
c1df762656 Update crashpad to 556c4e4 2017-02-06 10:34:28 -08:00
Cheng Zhao
b83676f9e9 Update to Chrome 56 2017-02-06 10:34:28 -08:00
Kevin Sawicki
1518ff5ddf Bump v1.5.1 2017-02-06 08:56:48 -08:00
Kevin Sawicki
18357512f3 Merge pull request #8515 from electron/auto-launch-squirrel-support
Support custom launch path in app.setLoginItemSettings
2017-02-06 08:55:32 -08:00
Kevin Sawicki
1b3d3b6b75 Use return value of GetProcessExecPath 2017-02-06 08:34:35 -08:00
CharlieHess
1178915f30 Ensure backwards compatibility with getLoginItemSettings.
We need to make sure the executable path is not quoted.
2017-02-06 08:34:35 -08:00
Kevin Sawicki
b7b200c874 Fix typo in getLoginItemSettings doc 2017-02-06 08:34:35 -08:00
Kevin Sawicki
1c6a07c68d Clear Update.exe login item settings in afterEach 2017-02-06 08:34:35 -08:00
Kevin Sawicki
3c2539eced Update example to use new option keys 2017-02-06 08:34:35 -08:00
Kevin Sawicki
e2501a80e4 Add path and args to LoginItemSettings struct 2017-02-06 08:34:35 -08:00
Charlie Hess
29d0a30d63 Oh, browser_linux is a thing too. 2017-02-06 08:34:35 -08:00
CharlieHess
25bc02f332 Don't append "%1" in the Run registry key.
It's only necessary for the protocol launch path.
2017-02-06 08:34:35 -08:00
Charlie Hess
d2ffd87668 I will never appreciate standard. 2017-02-06 08:34:35 -08:00
CharlieHess
852e158cc6 Make sure the spec takes arguments into account. 2017-02-06 08:34:35 -08:00
Charlie Hess
4fce00148d Add a spec for this behavior on Windows. 2017-02-06 08:34:35 -08:00
Charlie Hess
26d4a3b0ba Fix method signature on macOS. 2017-02-06 08:34:35 -08:00
CharlieHess
02dfdf75a0 Line Lengths! 2017-02-06 08:34:35 -08:00
CharlieHess
45e2f35eff Provide guidance in the docs. 2017-02-06 08:34:35 -08:00
CharlieHess
62c8a00347 This is rubbish let's pull the escape hatch.
Make all these arguments user-provided instead.
2017-02-06 08:34:35 -08:00
CharlieHess
0a6a8192b6 Close to a working Squirrel shortcut. 2017-02-06 08:34:35 -08:00
Charlie Hess
39b6bcb621 First pass at auto-launch supporting Squirrel. 2017-02-06 08:34:35 -08:00
renaesop
023a3fd547 Print enhancement: add webContents.printerList And a print option to select printer 2017-02-06 17:18:04 +08:00
Cheng Zhao
6e2f9935fe Update to Chrome 56.0.2924.87 2017-02-06 10:11:37 +09:00
Kevin Sawicki
093b844859 Merge pull request #8509 from electron/upgrading-chrome-doc
Add initial upgrading chrome checklist
2017-02-03 09:58:29 -08:00
Zeke Sikelianos
6df446baba Merge pull request #8583 from crowchirp/docs-typo-fixes
Docs typo fixes
2017-02-03 09:55:43 -08:00
Kevin Sawicki
de18f09588 Add initial upgrading chrome checklist 2017-02-03 09:54:34 -08:00
Kevin Sawicki
2f3578679f Merge pull request #8572 from electron/content-tracing-app-ready
Document using content tracing after app ready
2017-02-03 09:53:53 -08:00
Kevin Sawicki
7b3e998cc6 Use content tracing after app ready 2017-02-03 09:45:18 -08:00
Kevin Sawicki
cf694ef32b Merge pull request #8570 from electron/force-refresh-menu-role
Add forcereload menu item role
2017-02-03 09:44:57 -08:00
Kevin Sawicki
b1f260ac87 Add forcereload to MenuItem doc 2017-02-03 09:39:41 -08:00
Kevin Sawicki
fb08f56fc8 Add forcereload menu item role 2017-02-03 09:39:41 -08:00
Kevin Sawicki
555347e726 Merge pull request #8569 from electron/webview-default-node-integration
Mention presence of webview attributes enables them
2017-02-03 09:39:22 -08:00
Kevin Sawicki
50b9dfa61a Use querySelector to make examples more portable 2017-02-03 09:32:15 -08:00
Kevin Sawicki
4539a6f4d5 Change wording from on to present 2017-02-03 09:32:15 -08:00
Kevin Sawicki
4abbd65628 Merge pull request #8568 from electron/initialize-color-listener-after-app-is-ready
Initialize color listener after app is ready
2017-02-03 09:31:58 -08:00
Kevin Sawicki
5973aa36ad Initialize color listener after app is ready 2017-02-03 09:00:18 -08:00
Kevin Sawicki
62a400b7d6 Merge pull request #8566 from electron/prompt-to-create-property
Support returning non-existent file paths from Windows open dialog
2017-02-03 08:58:52 -08:00
Chandan Rai
75ec73d6fe Merge remote-tracking branch 'origin/patch-3' into docs-typo-fixes 2017-02-03 22:23:35 +05:30
Chandan Rai
1a3abb61ed Merge remote-tracking branch 'origin/patch-2' into docs-typo-fixes 2017-02-03 22:23:21 +05:30
Chandan Rai
4a6cbd76c8 corrected typo 2017-02-03 19:26:37 +05:30
Chandan Rai
9e7bcda07d corrected typo 2017-02-03 19:11:37 +05:30
Chandan Rai
93b0a2caa1 corrected typo 2017-02-03 18:58:21 +05:30
Kevin Sawicki
930a5c6de2 Merge pull request #8565 from electron/protocol-client-specs
Add protocol client specs on Windows
2017-02-02 12:48:19 -08:00
Kevin Sawicki
daff671afc Add protocol constant 2017-02-02 12:48:09 -08:00
Kevin Sawicki
a60f341968 Add procotol client specs on Windows 2017-02-02 12:48:09 -08:00
Kevin Sawicki
604c2470bc Merge pull request #8561 from liusy182/!-liusy182-br
add 'code' property in 'before-input-event''s 'input' argument
2017-02-02 10:33:20 -08:00
Kevin Sawicki
9fef6a1fd7 Add support for FOS_CREATEPROMPT option 2017-02-02 08:51:10 -08:00
liusy182
2cf6a026d8 fix linting error 2017-02-02 21:16:30 +08:00
liusi
87392ff046 'before-input-event' is missing the code property #8471 2017-02-02 16:23:07 +08:00
Kevin Sawicki
dc1c11a841 Merge pull request #8487 from leethomas/feature/osx-relative-window-levels
Feature/macOS relative window levels
2017-01-30 15:34:24 -08:00
Kevin Sawicki
9b2b6da3a3 Wrap params at 80 characters 2017-01-30 15:32:05 -08:00
Kevin Sawicki
2cacaa443a Indent relativeLevel docs 2017-01-30 15:27:51 -08:00
Zeke Sikelianos
f0882a5058 use consistent headings 2017-01-30 10:57:53 -08:00
Zeke Sikelianos
1945771f37 Add SECURITY.md 2017-01-30 10:49:17 -08:00
Kevin Sawicki
37eebb1dd0 Merge pull request #8539 from electron/require-wrapper
Update require wrapper to allow redefinition of process and global
2017-01-30 10:36:15 -08:00
Kevin Sawicki
94cb605993 Use strictEqual for global variable asserts 2017-01-30 10:08:12 -08:00
Kevin Sawicki
e99b1709d9 Redeclare process/global as strings 2017-01-30 09:58:44 -08:00
Kevin Sawicki
4e5b8ac3ee Remove throws and assert object directly 2017-01-30 09:38:15 -08:00
James Ide
0430380de1 Update the Node submodule to use the new module wrapper
See the fixed issue for the context. This pulls in a vendored copy of Node that includes the described patch.

Fixes #8358

Test Plan: Built Electron and verified it loaded the sample app correctly and that the module wrapper is the new one by viewing Node's source code in the Blink Inspector.

Added specs and tested with `npm test -- --grep "global variables"`
2017-01-30 09:37:14 -08:00
Cheng Zhao
4afc765e28 Link with xcb on Linux 2017-01-30 15:28:24 +09:00
Cheng Zhao
8488425e06 Link with fontsub.lib 2017-01-27 17:11:33 +09:00
Cheng Zhao
766d3c47bb Link with ncrypt.lib on Windows 2017-01-27 17:09:44 +09:00
leethomas
edbb786fb4 use kCGMinimumWindowLevelKey to get the minimum level 2017-01-26 19:12:10 -08:00
Kevin Sawicki
6e2f977f7a Merge pull request #8511 from electron/start-drag-crash
Fix startDrag crash on macOS with empty image
2017-01-26 17:10:21 -08:00
Kevin Sawicki
76e5589a31 Schedule function after executeJavaScript completes 2017-01-26 16:15:10 -08:00
Kevin Sawicki
651ea7ef02 Merge pull request #8421 from oukan/feature/translate-zh-CN
translate zh cn
2017-01-26 15:48:57 -08:00
Kevin Sawicki
eb6d92d427 Mention image cannot be empty on macOS 2017-01-26 15:46:04 -08:00
Kevin Sawicki
e683f28e32 Require a non-empty drag image to prevent crash 2017-01-26 15:46:04 -08:00
Kevin Sawicki
8ce1930f0d Add specs for missing startDrag options 2017-01-26 15:46:04 -08:00
Kevin Sawicki
2ee5f6f358 Merge pull request #8507 from electron/fix-node-upgrade-patches
Redo node 7.4 error handling patch
2017-01-26 15:43:58 -08:00
Kevin Sawicki
06c025050e Fix typo in spec description 2017-01-26 14:46:51 -08:00
Kevin Sawicki
ff718b19db Upgrade node for new 7.4 patches and changes 2017-01-26 14:46:50 -08:00
Kevin Sawicki
1004d205d8 Add spec for unhandledRejection event in main process 2017-01-26 14:46:50 -08:00
Kevin Sawicki
24fb560a9d Add failing spec for uncaught main process errors 2017-01-26 14:46:50 -08:00
Kevin Sawicki
a4e25a8917 Merge pull request #8519 from electron/consolidate-panel-showing
Use helper function to show last dev tools panel
2017-01-26 14:44:45 -08:00
Kevin Sawicki
2cfa67bdff Remove linter warning 2017-01-26 09:59:07 -08:00
Kevin Sawicki
a851695bb9 Clear interval before setting new one 2017-01-26 09:57:53 -08:00
Kevin Sawicki
e2e33a8cf0 Guard against destroyed window or web contents 2017-01-26 09:57:00 -08:00
Kevin Sawicki
515f689814 Use helper function to show last dev tools panel 2017-01-26 09:42:45 -08:00
Kevin Sawicki
640b03f7d0 Merge pull request #8510 from electron/empty-image-crashes
Fix empty image crashes
2017-01-26 09:08:52 -08:00
leethomas
b67d515a76 fix signature for SetAlwaysOnTop in native window views 2017-01-26 07:24:20 -08:00
leethomas
9e189b9d2d fix js lint errors 2017-01-26 07:14:47 -08:00
Cheng Zhao
abececd78b libgtk2ui => libgtkui 2017-01-26 20:02:01 +09:00
Cheng Zhao
a749a3dd2a Fix Debug building on Windows 2017-01-26 16:09:45 +09:00
leethomas
1234b61fa6 spec to ensure an error is thrown when relativeLevel is set out of bounds 2017-01-25 19:39:57 -08:00
Kevin Sawicki
104cae8f68 Only call getNativeHandle on macOS 2017-01-25 14:26:05 -08:00
Kevin Sawicki
e1281342f6 Return empty buffers when image is empty 2017-01-25 14:26:05 -08:00
Kevin Sawicki
2ad46f1842 Add failing spec for empty image crashes 2017-01-25 14:26:05 -08:00
Kevin Sawicki
8e69f94df0 Merge pull request #8357 from electron/remote-events-error-message
Don't crash when calling stale remote listeners
2017-01-25 14:23:57 -08:00
Kevin Sawicki
330ac5f266 Fix standard linting error 2017-01-25 12:36:55 -08:00
Kevin Sawicki
56a8eb3a94 Check that sender is a WebContents instance 2017-01-25 12:36:55 -08:00
Charlie Hess
ddedcf22d1 Move console.warn inside the helper method. 2017-01-25 12:36:55 -08:00
Charlie Hess
f6410d3b77 Assert that listener count decreases after a remove event. 2017-01-25 12:36:55 -08:00
Charlie Hess
c213971a2d Write a warning instead of crashing. 2017-01-25 12:36:55 -08:00
Charlie Hess
bc2f1e8199 Argh. 2017-01-25 12:36:55 -08:00
Charlie Hess
63d8137da2 Use EventEmitter public methods instead of _events. 2017-01-25 12:36:55 -08:00
Kevin Sawicki
45986405b8 Assert remote event names 2017-01-25 12:36:55 -08:00
Charlie Hess
b04db2e546 Add a spec for the "renderer window closed" error. 2017-01-25 12:36:55 -08:00
Charlie Hess
a0b24bd155 Simplify. 2017-01-25 12:36:55 -08:00
Charlie Hess
67f7a60524 Review CommentZ 2017-01-25 12:36:55 -08:00
Charlie Hess
41ea169784 L I N T I N G P T I I 2017-01-25 12:36:55 -08:00
Charlie Hess
49c6446267 L I N T I N G 2017-01-25 12:36:55 -08:00
Charlie Hess
26e3ad3c2e Display more information about remote event crashes.
If possible, we'll dig into the function args and print the ones that are attached remotely.
2017-01-25 12:36:55 -08:00
Kevin Sawicki
c13ea6eb36 Merge pull request #8497 from electron/enable-crash-reporter-specs-on-ci
Run crash reporter server specs on CI
2017-01-25 10:54:56 -08:00
Kevin Sawicki
f104e019be Run crash reporter server specs on CI 2017-01-25 10:36:16 -08:00
Kevin Sawicki
8e39aea34a Merge pull request #8478 from deepak1556/load_url_max_char_patch
WebContents: emit did-fail-load event when url exceeds character limit
2017-01-25 09:46:40 -08:00
deepak1556
d8a16a8ffb fix spec 2017-01-25 14:20:33 +05:30
leethomas
1f5518b91e throw an error for out of bounds window levels 2017-01-24 20:14:09 -08:00
Cheng Zhao
94fdcb4f48 WebInspector has been split up 2017-01-25 08:43:27 +09:00
Kevin Sawicki
90470617ab Merge pull request #8430 from ramya-rao-a/crash-for-children-docs
Updated docs for crash reporter to support child processes
2017-01-24 14:08:36 -08:00
Kevin Sawicki
ce6a46ee59 Use template strings 2017-01-24 14:08:10 -08:00
Kevin Sawicki
108a3473ed Use crashesDirectory in example 2017-01-24 14:07:00 -08:00
Kevin Sawicki
4985e073c4 Mention how to test 2017-01-24 14:04:56 -08:00
Kevin Sawicki
7b03c05b4e Capitalize Electron, fence as JS 2017-01-24 14:03:54 -08:00
Kevin Sawicki
ce472315f4 Merge pull request #8109 from ramya-rao-a/crash-for-children
Expose crash reporter start for child node processes
2017-01-24 14:02:47 -08:00
Kevin Sawicki
43ef4faf79 🎨 2017-01-24 14:00:03 -08:00
Kevin Sawicki
795b674996 Add StartInstance helper on CrashReporter 2017-01-24 13:54:46 -08:00
Kevin Sawicki
170c51ae85 Add spec for crashing node process 2017-01-24 13:49:45 -08:00
Ramya Achutha Rao
241773f2f0 Clean up testing code written for crash for children 2017-01-24 12:44:39 -08:00
Ramya Achutha Rao
d453dbdb40 Support crash reporting from child process in Windows 2017-01-24 12:44:39 -08:00
Ramya Achutha Rao
2814e04e7d Getting rid of linting errors 2017-01-24 12:44:39 -08:00
Kevin Sawicki
f1cd1c6dff Use mate::Dictionary::CreateEmpty 2017-01-24 12:44:39 -08:00
Kevin Sawicki
4107174cfd Group includes 2017-01-24 12:44:39 -08:00
Kevin Sawicki
91f8d6092b Take options object in process.crashReporter.start 2017-01-24 12:44:39 -08:00
Ramya Achutha Rao
1f07cf2545 Add crashReporter property to process 2017-01-24 12:44:39 -08:00
Ramya Achutha Rao
d4b44d8b69 Expose crash reporter start for child node processes 2017-01-24 12:44:39 -08:00
Kevin Sawicki
61aff5ed35 Merge pull request #8495 from electron/fullscreen-spec
Wait for window to transition before leaving full screen
2017-01-24 12:32:14 -08:00
Kevin Sawicki
6bb331356e Finish spec when full screen is left 2017-01-24 11:55:13 -08:00
Kevin Sawicki
284ca3114b Wait for window to transition before leaving full screen 2017-01-24 11:55:13 -08:00
Kevin Sawicki
e1fe5f4fbf Merge pull request #8496 from electron/upgrade-ffi
Upgrade to ffi@2.2.0
2017-01-24 11:54:59 -08:00
Kevin Sawicki
2762ead5a4 Upgrade to ffi@2.2.0 2017-01-24 11:25:21 -08:00
Kevin Sawicki
0ca5ad754e Merge pull request #8452 from electron/document-build
Document toolchains used for building official Electron releases
2017-01-24 10:53:33 -08:00
Kevin Sawicki
4f6750a460 Update build doc to Xcode 8.2.1 2017-01-24 10:49:42 -08:00
Cheng Zhao
ce71d16fdd Link with CoreWLAN.framework 2017-01-24 21:12:26 +09:00
Cheng Zhao
7cdcce157a devtools_discovery and devtools_http_handler are part of content module now 2017-01-24 17:38:24 +09:00
Cheng Zhao
de7da8e4be Export boringssl's include dir to dependents 2017-01-24 17:32:46 +09:00
leethomas
fb741285c6 update documentation 2017-01-23 23:42:38 -08:00
leethomas
7a0a87a6f3 implement relative window levels, closes #8153 2017-01-23 23:42:33 -08:00
deepak1556
593a3de850 add spec 2017-01-23 19:57:47 +05:30
Cheng Zhao
bf4c413947 Update PlatformNotificationService 2017-01-23 17:48:16 +09:00
Cheng Zhao
ac4ef926e1 URLRequestContenxtGetter now accepts task runner 2017-01-23 15:43:17 +09:00
Cheng Zhao
622fd8d1d7 Update InspectableWebContentsImpl 2017-01-23 15:43:17 +09:00
Cheng Zhao
db7959619e Update DevToolsNetworkUploadDataStream 2017-01-23 15:18:52 +09:00
Cheng Zhao
70ffec1134 There is no content::MEDIA_ENUMERATE_DEVICES anymore 2017-01-23 15:14:38 +09:00
Cheng Zhao
43813ff680 Add a new include dir from boringssl 2017-01-23 15:13:28 +09:00
Cheng Zhao
0236f87507 Update DevToolsNetworkTransaction 2017-01-23 15:10:34 +09:00
Cheng Zhao
e7ee9f1be9 DevToolsDelegate is no longer needed 2017-01-23 15:07:18 +09:00
Cheng Zhao
804d56e139 Signature of StartDataRequest has changed 2017-01-23 14:55:06 +09:00
Cheng Zhao
eb89edbf5b devtools_discovery and devtools_http_handler are gone 2017-01-23 14:54:58 +09:00
Cheng Zhao
f560fd56aa Update libchromiumcontent to Chrome 56 2017-01-23 14:34:57 +09:00
Weiqiang Lin
851a7578fa <webview> Tag to zh-CN 2017-01-22 14:18:34 +08:00
Weiqiang Lin
0d259a6eb0 File Object to zh-CN 2017-01-22 14:17:59 +08:00
Weiqiang Lin
86521f325b Synopsis to zh-CN 2017-01-22 14:17:29 +08:00
Weiqiang Lin
64a1b1c474 Supported Chrome Command Line Switches to zh-CN 2017-01-22 14:16:59 +08:00
Weiqiang Lin
cf54c4cbb2 testing-on-headless-ci.md to zh-CN 2017-01-22 14:15:51 +08:00
deepak1556
f9dc08baf6 emit did-fail-load event when the url char length exceeds limit 2017-01-21 14:59:20 +05:30
deepak1556
54559f99a0 Fix dereferencing nullptr
RenderWidgetHostView might not be available when
the navigator fails to load a url.
2017-01-21 14:56:58 +05:30
Kevin Sawicki
91c70a66cb Link to Xcode 7.3.1 DMG 2017-01-20 08:16:17 -08:00
Birunthan Mohanathas
b145131505 Mention VS2015 Update 3 to match CI environment 2017-01-20 07:19:43 +02:00
Birunthan Mohanathas
410f3c03d4 Document use of Xcode 7.3.1 with 10.10 SDK for release builds 2017-01-20 07:19:07 +02:00
Kevin Sawicki
5715dfcf17 Merge pull request #269 from electron/use_gn-chrome54
Use gn chrome54
2017-01-19 10:56:00 -08:00
Ramya Achutha Rao
dc5129f32e Updated docs for crash reporter to support child processes 2017-01-17 21:59:23 -08:00
Kevin Sawicki
e3cfb8ae5f Upgrade libcc to latest 2017-01-17 14:09:22 -08:00
Weiqiang Lin
11259b0ea2 Online/Offline Event Detection to zh-CN 2017-01-17 17:50:16 +08:00
Weiqiang Lin
ac0ba74e87 Desktop Environment Integration to zh-CN 2017-01-17 17:49:18 +08:00
Weiqiang Lin
96b7d3653c Quick Start to zh-CN 2017-01-17 17:48:51 +08:00
Cheng Zhao
72cd10a873 Update libchromiumcontent to latest 2017-01-17 17:20:27 +09:00
Ales Pergl
85db1bb47d Adjustments after upgrading to Chromium 54 2017-01-17 17:18:51 +09:00
Ales Pergl
eaea039155 Adjust linked static libraries after migrating libchromiumcontent to GN 2017-01-17 17:18:51 +09:00
Kevin Sawicki
2443ea4055 Merge pull request #267 from electron/update-ownership
Update std:move call to fix macOS compiler error
2017-01-13 09:13:25 -08:00
Kevin Sawicki
e5ec6adf7d Update std:move call to fix macOS compiler error 2017-01-12 14:04:12 -08:00
Kevin Sawicki
01d49a8bad Merge pull request #268 from electron/ci
Add Travis and AppVeyor CI
2017-01-12 14:03:55 -08:00
Kevin Sawicki
6087a1223f Add initial AppVeyor config 2017-01-12 11:38:12 -08:00
Kevin Sawicki
99786c7437 Build through Electron in cibuild and add Travis config 2017-01-12 11:37:52 -08:00
Kevin Sawicki
cda2e0c181 Merge pull request #266 from deepak1556/devtools_remote_detach_patch
force attach devtools client when requested by inspectable webcontents
2017-01-11 17:26:12 -08:00
deepak1556
cddce77ea4 force attach devtools client when requested by inspectable webcontents 2017-01-10 16:43:16 +05:30
Kevin Sawicki
4110a9c66d Merge pull request #264 from deepak1556/devtools_net_interceptor_patch
interceptor should handle default values of download and upload throughput
2017-01-09 10:42:01 -08:00
deepak1556
237cb7d0a3 interceptor should handle default values of download and upload throughput 2017-01-06 23:28:49 +05:30
Kevin Sawicki
d76f446140 Merge pull request #261 from poiru/always-link-dom-keycode-converter
Always link dom_keycode_converter
2016-12-13 14:59:46 -08:00
Kevin Sawicki
e8cb41ab2e Merge pull request #262 from deepak1556/media_device_id_patch
persist media device id salt across sessions
2016-12-12 13:30:26 -08:00
deepak1556
dbf4e52e05 persist media device id salt across sessions 2016-12-03 16:47:31 +05:30
Birunthan Mohanathas
cef773a439 Always link dom_keycode_converter
This is needed for electron/electron#7586.
2016-11-28 15:23:04 -08:00
Kevin Sawicki
ba6f1f5443 Merge pull request #259 from electron/upgrade-chrome-53
Upgrade to Chrome 53.0.2785.143
2016-11-08 09:36:17 -08:00
Kevin Sawicki
66b5f0c80c Upgrade to Chrome 53.0.2785.143 2016-11-08 09:17:29 -08:00
Kevin Sawicki
487287eb1d Merge pull request #258 from deepak1556/notification_close_patch
set notification close callback before requesting user permission
2016-10-31 09:01:57 -07:00
Kevin Sawicki
7cb8c1fdb9 Add dismiss notification guard on Linux 2016-10-28 11:24:47 -07:00
Kevin Sawicki
0a5f7171d4 Add more guards around null notification 2016-10-28 10:54:55 -07:00
deepak1556
ee4442f964 set notification close callback before requesting user permission 2016-10-25 19:04:09 +05:30
Kevin Sawicki
4fdca64030 Merge pull request #256 from deepak1556/ct_delegate_patch
allow embedder to provide RequireCTDelegate
2016-10-24 15:39:49 +09:00
deepak1556
aa7255bad5 allow embedder to provide RequireCTDelegate 2016-10-17 16:06:37 +05:30
Kevin Sawicki
9456ce44c4 Merge pull request #255 from deepak1556/dock_state_use_preferences_patch
use dock state from peferences when not set by embedder
2016-10-11 08:44:21 -07:00
deepak1556
f652760c7a use dock state from peferences when not set by embedder 2016-10-11 13:47:06 +05:30
Cheng Zhao
546f685314 Merge pull request #254 from deepak1556/devtools_dock_state_reimplement_patch
set dock state using devtools dockController
2016-10-10 11:34:42 +09:00
deepak1556
968bc5c9a2 set dock state using devtools dockController 2016-10-06 17:31:38 +05:30
Cheng Zhao
fca548b2fc Merge pull request #253 from miniak/large-address-aware
Add /LARGEADDRESSAWARE to linker options (Windows)
2016-10-06 14:39:32 +09:00
Milan Burda
cc8b07985d Add /LARGEADDRESSAWARE to linker options (Windows) 2016-10-05 18:32:24 +02:00
Kevin Sawicki
f30cef5c78 Merge pull request #252 from electron/update-example-link
Link to electron instead of brightray_example
2016-10-03 15:47:39 -07:00
Kevin Sawicki
4172bbd683 Link to electron instead of brightray_example 2016-10-03 15:46:09 -07:00
Kevin Sawicki
4fb32f62f5 Merge pull request #251 from electron/cookies-changed
Support configuring a cookie delegate
2016-09-29 09:17:43 -07:00
Kevin Sawicki
67eff02a65 🎨 2016-09-29 08:43:33 -07:00
Kevin Sawicki
cbe92b5fb5 Support configuring a cookie delegate 2016-09-29 08:43:33 -07:00
Cheng Zhao
b2f117efb1 Merge pull request #250 from electron/ct-crash
Set CT related fields on URLRequestContextStorage
2016-09-29 16:55:39 +08:00
Kevin Sawicki
c46200761f Use net::URLRequestContextBuilder::SetHttpNetworkSessionComponents helper 2016-09-28 16:00:23 -07:00
Kevin Sawicki
096d3e61fa Remove unused instance variables 2016-09-28 11:17:42 -07:00
Kevin Sawicki
14c4b1eabb Set certificate transparency objects on URLRequestContextStorage 2016-09-28 11:14:18 -07:00
Kevin Sawicki
b46c86d0ec Merge pull request #249 from electron/ct-log-verifiers
Add verifiers for known certificate transparency logs
2016-09-21 11:28:33 -07:00
Kevin Sawicki
bffd87c118 Call AddLogs through unique pointer 2016-09-21 10:16:05 -07:00
Kevin Sawicki
39a69467ed Add verifiers for known logs 2016-09-21 09:48:17 -07:00
Cheng Zhao
d435df77f8 Revert "initialize crypto delegate in CookieStoreConfig"
This reverts commit ad1d1dce72c6fcb6c15a18dac04ff382d9bf4db0.
2016-09-19 16:30:16 +09:00
Cheng Zhao
7917aa8938 Merge pull request #246 from deepak1556/cookie_crypto_patch
initialize crypto delegate in CookieStoreConfig
2016-09-16 21:26:19 +09:00
Cheng Zhao
296e06be1c Update to Chrome 53.0.2785.113 2016-09-15 14:27:07 +09:00
Cheng Zhao
4203b2a4ce Target OS X 10.9
We do not support 10.8.
2016-09-08 15:24:27 +09:00
Cheng Zhao
a0565bad2e Merge pull request #247 from electron/chrome53
Upgrade to Chrome 53
2016-09-08 15:06:02 +09:00
Cheng Zhao
676a389ecd Add new network parameters needed by chrome53 2016-09-07 17:54:55 +09:00
Cheng Zhao
2bb774996b Link with d3d11.lib 2016-09-06 19:54:49 +09:00
Cheng Zhao
ab14221a85 Fix API changes of Chrome 53 2016-09-06 17:22:52 +09:00
Cheng Zhao
bff2d41e73 Update libchromiumcontent to Chrome 53 2016-09-06 17:22:44 +09:00
deepak1556
a56c6b1b79 initialize crypto delegate in CookieStoreConfig 2016-09-03 11:05:38 +05:30
Cheng Zhao
db6f2462c0 Update libchromiumcontent 2016-09-01 19:12:33 +09:00
Cheng Zhao
46644d1789 Merge pull request #245 from electron/upgrade-clang
Upgrade clang.
2016-08-12 17:37:14 +09:00
Haojian Wu
c3049688b8 Disable -Wundefined-var-template. 2016-08-11 20:57:17 +02:00
Cheng Zhao
0060cd5b1b Update libchromiumcontent to latest 2016-08-08 20:17:22 +09:00
Cheng Zhao
900225bb03 Put definetion of GetCookieableSchemes in .cc to match other methods 2016-08-05 16:23:31 +09:00
Cheng Zhao
5ecefd298a Merge pull request #244 from deepak1556/cookieable_schemes_patch
allow additional schemes that should support cookies
2016-08-05 16:19:13 +09:00
Cheng Zhao
03e2250638 Fix building under linux 2016-08-04 16:40:13 +09:00
Cheng Zhao
1a80cb22b7 Show label for offscreen webview 2016-08-04 16:35:09 +09:00
deepak1556
e96b224307 allow delegate to provide cookieable schemes 2016-08-04 12:21:54 +05:30
deepak1556
826fbf3e21 allow additional schemes that should support cookies 2016-08-03 15:52:09 +05:30
Cheng Zhao
e644e883ba Merge pull request #243 from MaxWhere/master
Offscreen rendering support for Electron
2016-08-03 09:24:31 +09:00
Heilig Benedek
bc5fff148e Merge branch 'master' of https://github.com/MaxWhere/brightray 2016-08-01 13:16:57 +02:00
Cheng Zhao
10ea1606df Load 200 DPI resources on Linux 2016-07-29 10:50:48 +09:00
Heilig Benedek
f28fb3838c add gl2chromium headers too direct dependent settings so we don't have to copy anymore : ) 2016-07-29 01:17:59 +02:00
Heilig Benedek
97b153fce6 fix for offscreen and added khronos 2016-07-28 02:11:57 +02:00
Heilig Benedek
ecef83f8f5 added khronos and fix for offscreen 2016-07-28 02:07:37 +02:00
Cheng Zhao
c00dfcdd6a Merge pull request #239 from deepak1556/pref_init_patch
bring back fix from #152
2016-07-27 08:53:23 +09:00
deepak1556
de692c9896 bring back fix from #152 2016-07-26 16:32:14 +05:30
Cheng Zhao
f3b85e915d Merge pull request #238 from deepak1556/devtools_file_input_patch
allow delegate to handle file and color chooser
2016-07-25 16:07:57 +09:00
Cheng Zhao
2b87813ed3 Load a few more pak files 2016-07-25 11:10:20 +09:00
deepak1556
caba44ab6c allow delegate to handle file and color chooser 2016-07-22 21:09:55 +05:30
Cheng Zhao
06489342a9 Merge pull request #232 from electron/chrome52
Upgrade to Chrome 52
2016-07-22 08:38:28 -06:00
Cheng Zhao
b2546a2b34 Fix compilation error after merge 2016-07-21 06:03:11 -06:00
Cheng Zhao
4f3e9df055 Merge remote-tracking branch 'origin/master' into chrome52 2016-07-21 05:34:20 -06:00
Cheng Zhao
c0bfc56c5c Merge pull request #237 from electron/undocked-focused-state
Fix IsDevToolsViewFocused on undocked windows
2016-07-13 10:39:51 +09:00
Kevin Sawicki
22b3b69e17 Return focus state of window web view when available 2016-07-12 14:03:08 -07:00
Cheng Zhao
6413a4c516 Move the ability to create BrowserContext to embedder 2016-07-12 21:39:23 +09:00
Cheng Zhao
240b5c42b4 Merge pull request #236 from electron/devtools-window-bounds
Allow devtools window to show on other screens
2016-07-11 15:10:23 +09:00
Cheng Zhao
f6171c53ca Allow devtools window to show on other screens 2016-07-11 15:08:39 +09:00
Cheng Zhao
6dfd0518cd Merge pull request #235 from electron/modernize-to-c11
Modernize to C++11
2016-07-11 09:03:09 +09:00
Haojian Wu
1d1dd6301a Don't use auto to static variables. 2016-07-10 15:38:34 +02:00
Haojian Wu
3e041b2c91 Modernize C++11: Use override. 2016-07-10 13:22:54 +02:00
Haojian Wu
0cf7454d4b Modernize to C++11 : use auto. 2016-07-10 13:12:33 +02:00
Haojian Wu
7474e5ec28 Modernize to C++11 : NULL => nullptr 2016-07-10 12:30:17 +02:00
Cheng Zhao
d6b1814065 Merge pull request #234 from electron/remove-unused-using-decls
Remove unused using decls.
2016-07-10 19:30:11 +09:00
Haojian Wu
b85c3b5e7f Remove unused using decls. 2016-07-09 22:40:41 +02:00
Cheng Zhao
fd1448dd8b Initialize MaterialDesignController 2016-07-05 09:41:05 +09:00
Cheng Zhao
0ae344e5cd Fix building on Linux 2016-07-04 16:41:11 +09:00
Cheng Zhao
4afa3f7206 Add BrowserContext::GetRequestContext 2016-07-04 15:29:43 +09:00
Cheng Zhao
c1b07b3da9 Make it possible to include SkUserConfig.h 2016-07-04 15:06:58 +09:00
Cheng Zhao
d166ba9ed2 Disable compiler warning caused by blink 2016-07-04 15:06:15 +09:00
Cheng Zhao
4e9782897c Update to API changes of Chrome 52 2016-07-04 15:06:05 +09:00
Cheng Zhao
8f7394a7b7 Upgrade to Chrome 52 2016-07-04 13:48:28 +09:00
Cheng Zhao
bf9d2b7fa9 Avoid adding WebContentsAudioMuted method 2016-07-02 16:53:48 +09:00
Cheng Zhao
b217fb07a6 Merge pull request #231 from MarshallOfSound/master
Patch OnWebNotificationAllowed to mark notifications as silent in muted WebContents
2016-07-02 07:44:30 +00:00
Cheng Zhao
b8ac95660f Update to Chrome Update to Chrome 51.0.2704.106 2016-07-02 13:53:28 +09:00
Samuel Attard
f7a8aa12ac Patch OnWebNotificationAllowed to mark notifications as silent in muted WebContents 2016-07-02 13:30:55 +12:00
Cheng Zhao
6140fb2b14 Merge pull request #229 from electron/revert-228-no-whole-archive
Revert "Replace --whole-archive with --start-group"
2016-06-23 03:04:37 +00:00
Cheng Zhao
7fd7699ada Revert "Replace --whole-archive with --start-group" 2016-06-23 11:15:56 +09:00
Cheng Zhao
8eca432b6d Call on GetUserAgent on UI thread 2016-06-22 15:52:04 +09:00
Cheng Zhao
babd741786 Get rid of default BrowserContext 2016-06-22 15:40:52 +09:00
Cheng Zhao
2fb73a266a Merge pull request #228 from tensor5/no-whole-archive
Replace --whole-archive with --start-group
2016-06-21 03:23:51 +00:00
Nicola Squartini
ecf9052ace Replace --whole-archive with --start-group 2016-06-19 21:27:28 +09:00
Cheng Zhao
1d5e9fe7da Update to Chrome 51.0.2704.103 2016-06-19 21:06:46 +09:00
Cheng Zhao
a5ed7b73e1 Merge pull request #227 from electron/redispatch-events
Redispatch key events to handle native shortcuts
2016-06-19 11:12:32 +00:00
Kevin Sawicki
ebc7432893 Remove unused import 2016-06-17 11:37:29 -07:00
Kevin Sawicki
8bee2d7b7f Break out EventDispatchingWindow into separate class 2016-06-17 11:05:25 -07:00
Kevin Sawicki
df726d0f41 Redispatch key events to handle native shortcuts 2016-06-17 10:27:32 -07:00
Cheng Zhao
d37a120a6a Provide access to JobFactory in URLRequestContextGetter 2016-06-15 20:31:11 +09:00
Cheng Zhao
ced54c4ada Merge pull request #226 from electron/fix-crash
Fix double free when closing window with devtools opened
2016-06-14 04:40:11 +00:00
Cheng Zhao
8ebc34aeee Fix double free when closing window with devtools opened 2016-06-14 13:39:19 +09:00
Cheng Zhao
98eeadeb84 Update libchromiumcontent to 51.0.2704.84 2016-06-08 11:06:06 +09:00
Cheng Zhao
7eb78777d7 Update libchromiumcontent to 51.0.2704.79 2016-06-06 15:21:32 +09:00
Cheng Zhao
d53cb54d29 Merge pull request #225 from deepak1556/bluetooth_patch
initialize bluetooth for linux
2016-06-01 05:00:39 +00:00
deepak1556
a09e270efd initialize bluetooth for linux 2016-05-31 12:36:51 +05:30
Cheng Zhao
1cc0d0599e Update to Chrome 51.0.2704.63 2016-05-26 14:38:36 +09:00
Cheng Zhao
95e555ffbc Merge pull request #224 from electron/chrome51
Update to Chrome 51
2016-05-24 10:58:54 +00:00
Cheng Zhao
f395b35b62 Add a few more media related libs 2016-05-23 23:24:16 +09:00
Cheng Zhao
cbcd48257d Link with necessary DLLs of Chrome 51 2016-05-23 22:53:19 +09:00
Cheng Zhao
8250a66968 Link with AVFoundation and CoreMedia 2016-05-23 22:05:08 +09:00
Cheng Zhao
e23ffd1694 Merge branch 'master' into chrome51
Conflicts:
	browser/url_request_context_getter.cc
	browser/url_request_context_getter.h
2016-05-23 19:46:28 +09:00
Cheng Zhao
17064b483e Link with xscrnsaver 2016-05-23 19:44:09 +09:00
Cheng Zhao
b41d9fd6c0 Merge pull request #223 from deepak1556/iwa_patch
flags to control iwa enabled server whitelist
2016-05-23 10:37:36 +00:00
Cheng Zhao
f5bfbada97 NetLog should be managed by BrowserClient 2016-05-23 19:02:13 +09:00
Cheng Zhao
4ccf4394d7 Fix compilation errors on Linux 2016-05-23 15:26:44 +09:00
Cheng Zhao
0a5c4b8ced Call BrowserContext::Initialize 2016-05-23 12:36:34 +09:00
Cheng Zhao
7c39075c2c Initialize FeatureList 2016-05-23 12:34:09 +09:00
Cheng Zhao
76d180a80d Adapt to changes of Chrome 51 API changes (Part 2) 2016-05-23 12:28:41 +09:00
Cheng Zhao
851ef398fb Adapt to changes of Chrome 51 API changes 2016-05-23 10:59:07 +09:00
Cheng Zhao
e7be3d0ef9 Update to Chrome 51 2016-05-23 10:07:06 +09:00
deepak1556
b8e8e08f63 flags to control iwa enabled server whitelist 2016-05-21 23:40:02 +05:30
Cheng Zhao
7d126e1734 Merge pull request #222 from deepak1556/disable_http2_patch
flag to disable HTTP/2 and SPDY/3.1 protocols
2016-05-19 10:21:23 +00:00
Cheng Zhao
3d01930122 Link with static runtime library for Release build 2016-05-19 15:06:04 +09:00
deepak1556
e716830671 flag to disable HTTP/2 and SPDY/3.1 protocols 2016-05-18 06:55:05 +05:30
Cheng Zhao
a45af78b15 Remove unneeded lines when importing code 2016-05-18 09:42:14 +09:00
Cheng Zhao
d27a20f1cd Merge pull request #221 from electron/no-link-libnotify
Do not link with libnotify
2016-05-17 11:33:03 +00:00
Cheng Zhao
eb215c173c Try linking with libnotify.so.5 2016-05-17 20:30:53 +09:00
Cheng Zhao
80cd5ae43b Do not link with libnotify
We are already loading it dynamically.
2016-05-17 20:26:19 +09:00
Cheng Zhao
616fa30019 Update gyp with support for CLANG_ENABLE_OBJC_WEAK 2016-05-13 13:49:15 +09:00
Cheng Zhao
9d742d6135 Update libchromiumcontent to chrome50 2016-05-13 11:10:33 +09:00
Brian R. Bondy
c6f198a1af Update SetScreenInstance call for linux 2016-05-13 11:07:34 +09:00
Brian R. Bondy
88d8effa01 Iterator to use size_t 2016-05-13 11:07:34 +09:00
Brian R. Bondy
df386f854f GetNativeScreen -> GetScreen 2016-05-13 11:07:34 +09:00
Brian R. Bondy
f8f97687dc Update to new pref service location in components 2016-05-13 11:07:34 +09:00
Brian R. Bondy
f9dfa5466d Rename PERMISSION_STATUS enum value 2016-05-13 11:07:34 +09:00
Brian R. Bondy
270fc41024 Remove NetworkDelegate::OnResolveProxy
It doesn't exist anymore
2016-05-13 11:07:34 +09:00
Brian R. Bondy
23eda6930a Refactor for NotificationResources bitmaps
SkBitmap icon moves into content::NotificationResources
2016-05-13 11:07:34 +09:00
Brian R. Bondy
9d31297d27 Use HttpNetworkSession::Params::enable_http2
next_protos is a private member now and HTTP1.1 is always added
2016-05-13 11:07:34 +09:00
Brian R. Bondy
71aa9a605a Remove user_gesture parameter from PermissionManager::RequestPermission 2016-05-13 11:07:34 +09:00
Cheng Zhao
768efe89cf Merge pull request #219 from deepak1556/devtools_lifecycle_events_patch
notify devtools open and close once per lifetime
2016-05-13 09:14:44 +09:00
deepak1556
a01f8ba739 notify devtools opened and closed once per lifetime 2016-05-12 19:16:13 +05:30
deepak1556
7e0918f95a Revert "Merge pull request #218 from deepak1556/devtools_extensions_load_patch"
This reverts commit c0942cbbe67158c68ecfd9bf4cb7bdea84e0d529, reversing
changes made to a370461f3420ec285838126da7e7efd6a3101640.
2016-05-12 18:57:54 +05:30
Cheng Zhao
c860689a9b Merge pull request #218 from deepak1556/devtools_extensions_load_patch
notify delegate when devtools is loaded
2016-05-12 17:50:58 +09:00
deepak1556
db0c931d60 notify delegate when devtools is loaded 2016-05-12 07:15:49 +05:30
Cheng Zhao
3797d4b8aa Merge pull request #217 from deepak1556/devtools_file_system_indexer_patch
handle devtools file system indexing requests
2016-05-07 10:51:50 +09:00
deepak1556
f15940e703 port DevToolsFileSystemIndexer 2016-05-07 04:36:42 +05:30
deepak1556
2db138f2dc allow delegate to handle file system indexing requests 2016-05-07 04:36:00 +05:30
Cheng Zhao
8e94d5ab0f Update libchromiumcontent for --defines parameter 2016-05-02 21:18:43 +09:00
Cheng Zhao
434456e771 Do not check existence of paths 2016-05-02 16:17:20 +09:00
Cheng Zhao
d5d16844b5 Update libchromiumcontent for --build-libchromiumcontent 2016-05-02 16:14:20 +09:00
Cheng Zhao
80fff89f88 Merge pull request #215 from deepak1556/devtools_dock_state_patch
pass the current dock state to devtools url when available
2016-04-20 13:34:11 +09:00
deepak1556
e858c0c6d2 pass the current dock state to devtools url when available 2016-04-19 18:13:08 +05:30
Cheng Zhao
aafc48ae2c Merge pull request #213 from 3v1n0/linux-notifications-append
Linux notifications append
2016-04-15 20:57:02 +09:00
Cheng Zhao
1b11bb56be Merge pull request #212 from deepak1556/devtools_network_controller_patch
Fix race initialising DevtoolsNetworkController
2016-04-15 19:41:54 +09:00
Cheng Zhao
ffe88163bb Update libchromiumcontent for printing fix 2016-04-15 16:46:55 +09:00
Cheng Zhao
08b6fe5229 Merge pull request #214 from electron/fix-notification
Fix notification not showing on Windows
2016-04-15 16:34:43 +09:00
Cheng Zhao
593fb8cdf0 Delay notification events to next tick
It is possible that the events get emitted when calling Show(), which
would then delete the class before Show() ends, results in using members
of a deleted class.

By delaying the events to next tick we can effectively avoid this.
2016-04-15 16:20:36 +09:00
Cheng Zhao
f4c27c6d29 Store weak ref to Notification in ToastEventHandler 2016-04-15 16:14:13 +09:00
Cheng Zhao
ddee77fae4 Do not use get_Setting to determine whether notification is enabled
On Windows 10 get_Setting always returns DISABLED when the program has a
AppUserModelID.
2016-04-15 16:01:21 +09:00
Marco Trevisan (Treviño)
83cbc1182d LibnotifyNotification: use "append" when supported
This behavior can be overridden by just providing unique tags to notifications
2016-04-14 18:31:02 +02:00
Marco Trevisan (Treviño)
8962da380b LibnotifyLoader: add notify_notification_set_hint_string 2016-04-14 18:29:00 +02:00
Marco Trevisan (Treviño)
8dd7a8d7fe LibNotifyLoader: implement generic HasCapability 2016-04-14 18:24:00 +02:00
Cheng Zhao
77ca9bc76e Do not link with ppapi_cpp.lib 2016-04-14 18:22:05 +09:00
Cheng Zhao
4c42fe2bb0 Link with other dependencies of pdf.lib 2016-04-14 17:09:09 +09:00
Cheng Zhao
0b68117822 Link with pdf.dll 2016-04-14 16:30:16 +09:00
Cheng Zhao
17fcd09e66 Merge pull request #208 from deepak1556/devtools_security_panel_patch
link libsecurity_state for providing security style
2016-04-14 15:10:48 +09:00
deepak1556
de60acbfde Fix race initialising DevtoolsNetworkController 2016-04-14 08:57:20 +05:30
Cheng Zhao
2f107fcbe1 Merge pull request #211 from 3v1n0/notifications-tags
Notifications tags
2016-04-13 20:12:37 +09:00
Cheng Zhao
f716ae58a6 Merge pull request #210 from 3v1n0/notify-check-actions-cap
Notify check actions cap
2016-04-13 20:08:00 +09:00
Marco Trevisan (Treviño)
1ce34fb8d2 LibnotifyNotification: add support for notification tag
We set the id of the notification if tag is provided.
As per the protocol, this should cause the old notification with same ID to be replaced.
2016-04-13 06:12:46 +02:00
Marco Trevisan (Treviño)
59ed6ad413 Notification: pass tag to Show method 2016-04-13 06:12:46 +02:00
Marco Trevisan (Treviño)
743ceed780 LibnotifyNotification: verify if the "actions" capability is supported before adding actions
This would prevent to add actions to notifier such as Ubuntu's Notify-OSD
which doesn't support them.
2016-04-13 04:43:22 +02:00
Marco Trevisan (Treviño)
a22dc8676f LibnotifyLoader: add notify_get_server_caps support 2016-04-13 04:42:01 +02:00
Marco Trevisan (Treviño)
4e7f478d1e LibnotifyLoader: add notify_get_server_info support 2016-04-13 04:02:23 +02:00
Cheng Zhao
11685faffa Hijack the Page.reload command 2016-04-12 16:35:35 +09:00
Cheng Zhao
3d3cc8c226 Merge pull request #207 from deepak1556/localized_media_strings_patch
register localized media strings
2016-04-11 19:30:09 +09:00
deepak1556
13a5dd4800 link libsecurity_state for providing security style 2016-04-11 15:08:15 +05:30
deepak1556
2b3813135c register localized media strings 2016-04-08 12:42:50 +05:30
Kevin Sawicki
b6312ce63c Update urls for new GitHub org 2016-04-04 12:55:40 -07:00
Cheng Zhao
39595c7a05 Merge pull request #205 from felixrieseberg/fix-win-not
[Windows] Notify only when enabled
2016-03-17 21:44:00 +09:00
Felix Rieseberg
b68be5c583 🏁 Notify only when enabled
- Previously, we'd attempt to create a notification no matter what the
  user's configuration was. Microsoft advises against that, because it
  can create race conditions if notifications are disabled.
- This fixes the issue.

Closes https://github.com/atom/electron/issues/4681
2016-03-15 17:10:24 -07:00
Cheng Zhao
bbfa5835e7 Merge pull request #204 from deepak1556/workspace_patch
fix devtools filesystem api
2016-03-15 21:07:51 +09:00
Robo
c25264113f fix devtools filesystem api and allow delegate to request stored filesystem paths 2016-03-15 07:53:40 +05:30
Cheng Zhao
17ff8f2e7e Merge pull request #203 from deepak1556/devtools_network_patch
update devtools network interceptor to throttle uploads
2016-03-14 10:39:12 +09:00
Robo
215a81d0e6 update devtools network interceptor to throttle uploads 2016-03-14 04:01:30 +05:30
Cheng Zhao
95e63f6b8e Dealy loading powrprof.dll 2016-03-13 10:10:56 +09:00
Cheng Zhao
6b3d4fdc61 Update to lastest master of libchromiumcontent 2016-03-11 10:41:22 +09:00
Cheng Zhao
909c66fa9f Merge pull request #200 from atom/chrome49
Upgrade to Chrome 49
2016-03-11 10:37:12 +09:00
Cheng Zhao
deb1abe152 Fix linking error for Release build 2016-03-10 21:00:49 +09:00
Cheng Zhao
5652af8e61 Merge pull request #202 from deepak1556/sysroot
allow setting pkg-config variable
2016-03-10 17:15:09 +09:00
Cheng Zhao
6b79926cc7 Link with sandbox_helper_win.lib 2016-03-10 16:11:38 +09:00
Cheng Zhao
b68d2ba8b5 Fix compilation error on Windows 2016-03-10 15:56:13 +09:00
Cheng Zhao
5ce6592e1c Handle nullptr in RequestConextGetter 2016-03-10 14:39:07 +09:00
Robo
3983566fa3 allow setting pkg-config variable 2016-03-09 19:43:55 +05:30
Cheng Zhao
f70ece1669 No more libyuv_neon 2016-03-09 22:24:25 +09:00
Cheng Zhao
82c30ef9b9 Fix RenderFrameHostChanged 2016-03-09 18:47:11 +09:00
Cheng Zhao
ead0bb0cfc Fix devtools not working 2016-03-09 14:55:46 +09:00
Cheng Zhao
d3a39540b5 Fix compilation errors on OS X 2016-03-08 23:28:28 +09:00
Cheng Zhao
baf5f384cd Pass() is deprecated for std::move 2016-03-08 20:59:29 +09:00
Cheng Zhao
948e7c4055 virutal should not be used together with override 2016-03-08 17:51:16 +09:00
Cheng Zhao
d49e240fd4 Merge pull request #201 from atom/chrome49-win32
Updates to Chrome 49 on Win32
2016-03-08 17:49:02 +09:00
Paul Betts
dba6680578 Everyone gets permission 2016-03-07 23:09:25 -08:00
Paul Betts
6517dffa04 Start to update UrlRequestContextGetter 2016-03-07 22:58:25 -08:00
Paul Betts
18a75b5124 Renamed enum in MediaStreamDeviceRequest 2016-03-07 22:38:48 -08:00
Paul Betts
d204febecf Update DevtoolsNetworkTransaction 2016-03-07 22:29:23 -08:00
Paul Betts
40c98381ab Update headers for InspectableWebContentsImpl 2016-03-07 22:18:16 -08:00
Paul Betts
157f3abe64 Not quite sure how this ever worked 2016-03-07 22:02:42 -08:00
Paul Betts
e901b1c6ca Update NetworkDelegate 2016-03-07 21:59:14 -08:00
Paul Betts
da59c0f58b basictypes.h => macros.h 2016-03-07 21:40:41 -08:00
Cheng Zhao
c72c89bd75 No more basictypes.h 2016-03-08 10:14:16 +09:00
Cheng Zhao
9fd88e9bb7 Update to Chrome 49 2016-03-08 10:04:06 +09:00
Cheng Zhao
93c7126bc7 Link with ffmpeg 2016-02-17 22:20:40 +08:00
Cheng Zhao
c61e6f3f17 Remove DefaultWebContentsDelegate 2016-02-01 21:08:52 +08:00
Cheng Zhao
7cfc9fad83 Fix compilation error 2016-01-27 23:18:42 +08:00
Cheng Zhao
144061cb2e Merge pull request #195 from deepak1556/notification_disable_patch
allow client to decide displaying web notifications
2016-01-27 21:02:52 +08:00
Robo
3b09c370d4 allow client to decide displaying web notifications 2016-01-25 22:09:36 +05:30
Cheng Zhao
147c09f7d2 Merge pull request #192 from felixrieseberg/silent-notification
Add Silent Notification Support
2016-01-21 14:07:45 -07:00
Felix Rieseberg
728f0f985b 🏁 🍎 Add Silent Notification Support
* Implements support for silent notifications on Windows and OS X
 * Exposes bool `silent` to Linux notification presenters
2016-01-21 09:24:42 -08:00
Cheng Zhao
c9993ccc26 Merge pull request #191 from etiktin/update_libchromiumcontent_47.0.2526.110
Update libchromiumcontent reference to match libchromiumcontent-static
2016-01-16 11:42:21 +08:00
Eran Tiktin
f6ebf83513 update libchromiumcontent 47.0.2526.110 2016-01-15 22:39:20 +02:00
Eran Tiktin
b4dae4ef5e Merge pull request #1 from atom/master
Update from upstream
2016-01-15 22:24:00 +02:00
Cheng Zhao
f5bb23124a Change our PATH_START to 11000 2016-01-11 10:40:20 +08:00
Cheng Zhao
d6051e9580 Initialize resource bundle on browser process separately 2016-01-08 12:04:23 +08:00
Cheng Zhao
2374149b18 Load cocoa locale before initializing resources 2016-01-08 11:29:43 +08:00
Cheng Zhao
0980f53a93 Merge pull request #190 from atom/fix-menu
Load content_shell.pak for current scale factor
2016-01-05 10:21:29 +08:00
Cheng Zhao
ae14829472 Load content_shell.pak for current scale factor 2016-01-05 10:20:02 +08:00
Cheng Zhao
33a9551410 Merge pull request #189 from deepak1556/resource_bundle_patch
initialize resource bundle with application locale awareness
2016-01-04 10:58:42 +08:00
Cheng Zhao
cf93f6fd58 componenet_updater is not needed 2015-12-30 16:14:36 +08:00
Robo
5990acf51b initialize resource bundle with application locale awareness 2015-12-30 10:49:45 +05:30
Cheng Zhao
8f26c0d849 Update libchromiumcontent with widevine support 2015-12-30 11:39:43 +08:00
Cheng Zhao
cd95e7b9ce Update libchromiumcontent 2015-12-29 21:37:11 +08:00
Cheng Zhao
d3f215dadf Merge pull request #178 from clebeaupin/widevine
Add widevine third party
2015-12-29 14:16:13 +08:00
Cheng Zhao
47237cfbd2 Merge pull request #188 from atom/improve-notifications
Decouple notification code from content module
2015-12-25 11:56:55 +08:00
Cheng Zhao
870e6a6f89 linux: Adapt to new Notification style 2015-12-25 11:52:19 +08:00
Cheng Zhao
82cef44623 win: Fire NotificationFailed when failed to show notification 2015-12-25 11:17:35 +08:00
Cheng Zhao
c81bacc840 mac: Emit closed when notification is dismissed 2015-12-25 11:12:25 +08:00
Cheng Zhao
b091f27abf win: Adapt to new Notification style 2015-12-25 11:05:48 +08:00
Cheng Zhao
5b7c7be804 Decouple notification code from content module 2015-12-25 10:16:07 +08:00
Cheng Zhao
6f81d1e29f Expose NotificationPresenter to public 2015-12-24 22:20:47 +08:00
Cheng Zhao
9897f3aab0 Add an abstract Notification class 2015-12-24 22:06:41 +08:00
Cheng Zhao
41084883cf Refactor the notification code 2015-12-24 21:55:18 +08:00
Cheng Zhao
b4664ce897 Merge pull request #187 from atom/fix-win-icon
Do not use icon url when showing notification
2015-12-24 20:07:41 +08:00
Cheng Zhao
513b6ae0d6 Do not use icon url when showing notification 2015-12-24 20:03:54 +08:00
Cheng Zhao
53e8c8841b Merge pull request #186 from atom/dlopen-notify
Load libnotify dynamically
2015-12-24 11:16:09 +08:00
Cheng Zhao
862f3c21f6 Load libnotify dynamically 2015-12-24 11:12:51 +08:00
Cheng Zhao
395a2eb1cc Merge pull request #185 from deepak1556/devtools_network_transaction_patch
devtools: exclude devtools related http header from serviceworker context
2015-12-21 10:08:50 +08:00
Robo
9b88fd4021 devtools: exclude devtools related http header from serviceworker context 2015-12-19 02:29:39 +05:30
Cheng Zhao
30cebb491f Merge pull request #184 from deepak1556/idr_value_patch
fix value of IDR_CONTENT_SHELL_DEVTOOLS_DISCOVERY_PAGE
2015-12-14 18:10:41 +08:00
Robo
d12787303c use value from shell_resources.h 2015-12-12 23:31:00 +05:30
Robo
a3f85a93a0 fix value of IDR_CONTENT_SHELL_DEVTOOLS_DISCOVERY_PAGE 2015-12-12 10:56:47 +05:30
Cyrille Lebeaupin
975a47825b Add widevine third party 2015-12-11 18:18:55 +01:00
Cheng Zhao
517db752d7 Merge pull request #183 from deepak1556/next_proto_patch
add list of next_protos to use
2015-12-09 12:32:52 +08:00
Cheng Zhao
e0719f52bf Link with libyuv_neon.a on ARM 2015-12-08 18:12:11 +08:00
Cheng Zhao
e0b6dd9171 Link a few more X libraries 2015-12-08 17:02:41 +08:00
Cheng Zhao
c9376142ca Xcomposite is needed for ia32 build 2015-12-08 16:55:59 +08:00
Cheng Zhao
161147fa1a webrtc requires IOKit 2015-12-08 16:52:38 +08:00
Cheng Zhao
c33c045964 There is no libdesktop_capture_differ_sse2 no arm 2015-12-08 16:40:49 +08:00
deepak1556
43add44f09 add list of next_protos to use 2015-12-08 03:39:05 -05:00
Cheng Zhao
46677e3a36 Link with libdesktop_capture_differ_sse2 on darwin 2015-12-08 14:48:46 +08:00
Cheng Zhao
4004e4836a Merge pull request #148 from atom/desktop-capture-api
Desktop capture API support
2015-12-08 12:40:57 +08:00
Cheng Zhao
b50d23feff Update libchromiumcontent 2015-12-08 12:06:17 +08:00
Cheng Zhao
f8e688badd Merge pull request #182 from atom/chrome47
Upgrade to Chrome 47
2015-12-08 10:45:18 +08:00
Cheng Zhao
cbd4a25ea6 Link with libsandbox 2015-12-07 22:44:15 +08:00
Cheng Zhao
75d0bc848d Update to API changes of Chrome 47 2015-12-07 19:55:01 +08:00
Cheng Zhao
5d8167afd6 Merge pull request #181 from atom/helper-process
Change how Helper process is detected
2015-11-26 19:10:19 +08:00
Cheng Zhao
b81876775e Check ElectronMainProcess key in Info.plist 2015-11-26 19:07:03 +08:00
Cheng Zhao
77f7cfc938 Change how we detect Helper process 2015-11-26 18:52:07 +08:00
Cheng Zhao
c46fa6d959 Merge pull request #179 from etiktin/support_proxy_bypass_list
Add support for --proxy-bypass-list
2015-11-24 18:37:51 +08:00
Cheng Zhao
5ce2ebf264 Merge pull request #180 from atom/no-app-user-model-id
Use application name when app user model ID is not available
2015-11-24 15:13:47 +08:00
Cheng Zhao
087eeedab8 Use application name when app user model ID is not available 2015-11-24 15:11:43 +08:00
Cheng Zhao
c060539562 Only create NotificationPresenter when succeeded to initailize toast manager
This fix crash when we failed to initailize toast manager.
2015-11-24 14:40:58 +08:00
Eran Tiktin
1a18c3a3af Add support for --proxy-bypass-list 2015-11-22 22:56:35 +02:00
Cheng Zhao
2468c7c34e Merge pull request #177 from atom/toast-app-name
Use AppUserModelID as app id
2015-11-20 13:32:22 +08:00
Cheng Zhao
aa8d164036 Use AppUserModelID as app id 2015-11-20 13:28:37 +08:00
Felix Rieseberg
8db246d770 Merge pull request #175 from atom/iss3458
Fix Tag Typo
2015-11-16 07:43:01 -08:00
Felix Rieseberg
571b595571 Fix Tag Typo
We should probably have tests for Windows notifications ;-)
2015-11-16 07:41:37 -08:00
Cheng Zhao
8ff0b050f8 There is no more NotificationError 2015-11-16 16:47:34 +08:00
Cheng Zhao
0e7f09523b Merge pull request #170 from miniak/windows_toast_notification
Call NotificationError when toast notification fails on Windows
2015-11-16 16:12:46 +08:00
Milan Burda
dedf3553e2 Call content::DesktopNotificationDelegate::NotificationError when toast notification fails on Windows 2015-11-13 15:42:35 +01:00
Cheng Zhao
cdc27a85c0 Merge pull request #174 from tejaspathak/master
Fix build error
2015-11-12 09:48:20 +08:00
Cheng Zhao
5d03058e9e Merge pull request #171 from miniak/notification_presenter_mac
Call [NSUserNotification setContentImage] conditionally using respondsToSelector
2015-11-12 00:09:51 +08:00
Felix Rieseberg
f4ac70f2da Merge pull request #173 from felixrieseberg/windows-7-3
Windows Toasts: Don't call WFI statically
2015-11-11 03:39:52 +01:00
Felix Rieseberg
b4ac9547c4 Windows Toasts: Don't call WFI statically 2015-11-10 18:37:43 -08:00
Felix Rieseberg
08e54d8a1e Merge pull request #172 from felixrieseberg/windows-7-2
Delay Load WinRT Libraries, Full Compat with Windows 7
2015-11-11 03:13:13 +01:00
Felix Rieseberg
2c84d70f8f Delay Load WinRT Libraries 2015-11-10 18:04:09 -08:00
Milan Burda
71d582bc68 Call [NSUserNotification setContentImage] conditionally using respondsToSelector instead of hardcoded OS X version check 2015-11-10 22:18:24 +01:00
tejaspathak
90d142b641 Fix build error 2015-11-10 23:26:42 +09:00
Cheng Zhao
da0197543a Merge pull request #167 from atom/code-cleanup
Cleanup of the notification code
2015-11-10 20:31:29 +08:00
Cheng Zhao
f9f8a289d9 Simplify the management of objects 2015-11-10 20:23:08 +08:00
Cheng Zhao
4f73de0930 Make the toast type really work 2015-11-10 20:07:12 +08:00
Cheng Zhao
6b9371c4cd Use smart pointer for everything 2015-11-10 19:50:38 +08:00
Cheng Zhao
1b9c9e40e3 Code cleanup with Chromium's coding style 2015-11-10 18:30:58 +08:00
Cheng Zhao
37a89ee0d9 Fix compilation error 2015-11-10 18:04:46 +08:00
Cheng Zhao
e3bcb15b81 Merge pull request #165 from felixrieseberg/windows-7
Ensure Notifications are Windows 8+ Only
2015-11-10 16:19:05 +08:00
Felix Rieseberg
995b094858 Ensure Notifications are Windows 8 and up only 2015-11-10 07:49:42 +01:00
Cheng Zhao
b79b7f7e2d Merge pull request #166 from miniak/windows_toast_notification
Simplify ToastEventHandler using WRL::RuntimeClass, which implements the IUnknown interface
2015-11-10 13:16:08 +08:00
Milan Burda
8f5463faab Simplify ToastEventHandler using WRL::RuntimeClass, which implements the IUnknown interface 2015-11-09 20:47:18 +01:00
Cheng Zhao
ecb35883f6 Merge pull request #161 from atom/windows-notifications-lib
Windows Notifications
2015-11-09 22:49:49 +08:00
Jason Poon
8dbeca8c7f Windows Toasts: Hide(), Runtime Check, Header Cleanup 2015-11-09 12:00:50 +01:00
Felix Rieseberg
86ea0759d8 Windows Toasts: Icons, Events, Cleanup, Documentation
- Enable documentations
- Add a small usage example to the header
- Final cleanups
2015-11-09 12:00:49 +01:00
Jason Poon
498bff9e5a Windows Toasts: Enable Basic Notifications
To test this puppy out, build and open up the Chromium Dev Tools.
Then, run `new Notification("Test title", {body: "Test body"});`
2015-11-09 12:00:21 +01:00
Cheng Zhao
7720346ee7 Update libchromiumcontent for filenames.gypi fix 2015-11-09 18:19:32 +08:00
Cheng Zhao
93ebbb1c86 Update libchromiumcontent for atom/electron#3310 2015-11-09 16:38:09 +08:00
Cheng Zhao
d456e87ee6 Merge pull request #164 from tejaspathak/master
Add option to build local libchromiumcontent
2015-11-09 16:36:54 +08:00
tejaspathak
1017ec0d87 Add option to build local libchromiumcontent
- Currently libchromiumcontent is downloaded by default.
- Now developer can choose to provide local libchromiumcontent src, shared and static path
2015-11-08 17:08:42 +09:00
Cheng Zhao
cbc107f441 Merge pull request #162 from deepak1556/certificate_verifier_patch
allow delegate to provide certificate verifier
2015-11-07 21:36:55 +08:00
Cheng Zhao
b8cd4f7981 linux: Link Xi with pkg-config
Fix atom/electron#3357.
2015-11-07 12:11:12 +08:00
Robo
3dfb75b530 allow delegate to provide certificate verifier 2015-11-05 20:56:46 +05:30
Cheng Zhao
54997db5f2 No more need to call setrlimit
Chrome has removed the limiations on fd, this actually became the new limitation.
2015-10-20 22:38:20 +08:00
Cheng Zhao
9efc5fffa2 Merge pull request #157 from atom/allow-ntlm-everywhere
Optionally allow NTLM authentication for all domains
2015-10-20 13:12:42 +08:00
Paul Betts
b7b3029e2a Nuke old declaration 2015-10-19 19:42:49 -07:00
Cheng Zhao
2f2dc063dd Merge pull request #158 from Dwaynekj/xcode-7-dylib
Update to brightray.gyp : libresolv
2015-10-20 10:34:14 +08:00
Paul Betts
5168b44932 Remove our plumbed methods 2015-10-19 12:57:32 -07:00
Paul Betts
0d63eaa07b Move the NTLM check to the URLRequestContextGetter delegate 2015-10-19 12:57:24 -07:00
Dwayne Jones
9d8bff7d04 Update to brightray.gyp : libresolv
In Following with this PR https://github.com/atom/brightray/pull/153
@joshaber helped me to work out this was causing a build error Xcode 7 for libresolv
2015-10-19 15:36:08 -04:00
Paul Betts
91a62640ab Come Correct with cpplint 2015-10-16 16:48:07 -07:00
Paul Betts
66a14c5eb5 Fallback to default behavior if boolean is false 2015-10-16 16:43:03 -07:00
Paul Betts
d123c8613d Create a new API to trump IE security settings if desired 2015-10-16 16:40:30 -07:00
Paul Betts
2c21f1a304 Replace the default one with our own 2015-10-16 16:40:07 -07:00
Paul Betts
73a60ea3e3 Create a new URLSecurityManager that allows explicit settings 2015-10-16 16:39:42 -07:00
Cheng Zhao
859ef0b298 Update libchromiumcontent to latest master 2015-10-14 11:56:01 +08:00
Cheng Zhao
abe749e6be 💄 2015-10-14 09:47:22 +08:00
Cheng Zhao
cab52fedc6 Merge pull request #156 from deepak1556/nss_ocsp_patch
provide request context for oscp session creation
2015-10-14 09:46:28 +08:00
Robo
ec6304c0b2 provide request context for nss_oscp initialisation 2015-10-13 18:20:12 +05:30
Cheng Zhao
34fb1c65bf Merge pull request #155 from atom/remove-websql-limitation
Remove websql's storage limitation
2015-10-13 09:03:20 +08:00
Haojian Wu
2981a7e256 Remove storage limitation of WebSQL. 2015-10-12 21:21:45 +08:00
Cheng Zhao
7caaad2c7a Control linking of QTKit in electron 2015-10-09 21:29:51 +08:00
Cheng Zhao
0659be44bc Update to mas branch of libchromiumcontent 2015-10-09 21:07:21 +08:00
Cheng Zhao
e3c657045d Merge pull request #154 from deepak1556/accept_language_patch
set accept-language header from system locale
2015-10-09 21:05:15 +08:00
Robo
b7296d8a4e set accept-language header from system locale 2015-10-09 13:21:53 +05:30
Cheng Zhao
343cbea8a7 Merge pull request #153 from atom/xcode-7
Don't reference the bsm dylib directly.
2015-10-08 13:57:42 +08:00
joshaber
407b406f34 Don't reference the dylib directly.
https://forums.developer.apple.com/thread/4572 is the best reference I
could find for this.

Apple replaced (some?) dylibs with “text-based stub libraries”
(.tbd’s). So we shouldn’t try to reference the dylib directly anymore.
2015-10-06 16:07:54 -04:00
Cheng Zhao
43bfdace86 Merge pull request #152 from atom/register-prefs
Fix RegisterPrefs not working in subclass.
2015-10-06 22:44:32 +08:00
Cheng Zhao
dd5c962942 Merge pull request #151 from atom/xcode-7-support
Xcode 7 support
2015-10-06 21:39:34 +08:00
Haojian Wu
73632d4189 Fix RegisterPrefs not working in subclass.
Don't call virtual function in subclass's constructor.
2015-10-06 16:11:28 +08:00
joshaber
3d0ab70aa1 mac: Force Xcode to use C++11.
For whatever reason, this is necessary in Xcode 7.
2015-10-05 10:15:54 -04:00
joshaber
7f0b8f01e1 mac: Don't define an SDKROOT.
This way Xcode will use the latest SDK, whatever it is, and we don’t
have to bump this every time Apple releases an OS update.
2015-10-05 10:15:34 -04:00
Haojian Wu
ef9f6eb8c3 Define related marcos for webrtc on Windows and OS X. 2015-10-05 12:50:18 +08:00
Cheng Zhao
dee9f59b19 Merge pull request #150 from atom/linux-menu
Fix tooltip cropped by the window on Linux
2015-10-04 22:18:39 +08:00
Cheng Zhao
c205ab0944 Fix tooltip can not show outside window 2015-10-04 22:15:01 +08:00
Cheng Zhao
6ca7767f09 linux: Set device scaling factor 2015-10-04 16:52:14 +08:00
Cheng Zhao
9f978cc19f Merge pull request #149 from atom/ignore-x-window-error
Don't crash when X Window System errors happen
2015-10-04 15:52:14 +08:00
Cheng Zhao
6044ab05f3 Ignore X Window System errors 2015-10-04 15:40:51 +08:00
Haojian Wu
63085fb0b0 [Linux] Link libraries for desktop capture API. 2015-10-03 13:43:20 +08:00
Haojian Wu
59cbd0a00d [Windows] Link libraries for desktop capture API. 2015-10-03 10:49:42 +08:00
Haojian Wu
64b0333964 [OS X] Link dependent libraries for desktop capture API. 2015-10-02 17:27:48 +08:00
Cheng Zhao
5a97cfaa64 Code cleanup 2015-10-01 17:30:59 +08:00
Cheng Zhao
1f2d934d9d Merge pull request #147 from atom/gnotify
Rewrite Ubuntu check to look for libunity .so files
2015-10-01 17:15:19 +08:00
Cheng Zhao
c9956c2ae0 Merge pull request #146 from deepak1556/remote_devtools_module_patch
provide remoteBase to load remote devtools modules
2015-10-01 17:02:56 +08:00
Paul Betts
1a8377b198 Add environment variable as escape hatch 2015-09-30 09:14:31 -07:00
Paul Betts
50a95792a1 Rewrite unity check to look for libunity SOs 2015-09-30 09:09:35 -07:00
Robo
9122922133 provide remoteBase to load remote devtools modules 2015-09-30 16:34:44 +05:30
Cheng Zhao
3f3fbc03fc Merge pull request #145 from deepak1556/devtools_network_emulation_patch
enabling network emulation in devtools
2015-09-28 12:14:14 +08:00
Robo
a1e646f1b3 enabling network emulation in devtools 2015-09-27 21:38:38 +05:30
Cheng Zhao
ab878c5f98 Merge pull request #143 from deepak1556/ssl_version_config_patch
allowing delegates to provide their sslconfigservice
2015-09-23 10:41:27 +08:00
Robo
5d9c41c416 allowing delegates to provide their sslconfigservice 2015-09-21 22:14:32 +05:30
Cheng Zhao
ca9a54a41e Check whether devtools is opened when executing js code
Fixes atom/electron#2808.
2015-09-17 15:00:14 +08:00
Cheng Zhao
fc33eb99f7 Unsubscribe from NSNotificationCenter when WebContents is destroyed
Due to ref-counted references the NSView is not destroyed immediately
when WebContents is destroyed, so it is not reliable to do this in
the destructor.
2015-09-17 11:19:08 +08:00
Cheng Zhao
fa588f104c Set MACOSX_DEPLOYMENT_TARGET to 10.8
Fixes atom/electron#2790.
2015-09-16 19:54:52 +08:00
Cheng Zhao
3f53564a4f Use the SDKROOT under 10.10 2015-09-15 12:14:46 +08:00
Cheng Zhao
34e1a38d18 Use 10.10 SDK 2015-09-15 11:59:57 +08:00
Cheng Zhao
43c4efb4c7 Merge pull request #142 from atom/devtools-focus
Add IsDevToolsViewFocused method and make DevToolsFocused work in OS X
2015-09-15 11:26:34 +08:00
Cheng Zhao
352f758cd1 Make DevToolsFocused in OS X 2015-09-15 11:24:35 +08:00
Cheng Zhao
c30f458d4f Add IsDevToolsViewFocused method 2015-09-15 11:04:46 +08:00
Cheng Zhao
9d7fbdfd8e Merge pull request #140 from deepak1556/net_log_patch
create net log file after context is created
2015-09-14 19:24:22 +08:00
Cheng Zhao
024d643f98 Merge pull request #139 from toyoshim/sysex_permission
Grant ChildProcessSecurityPolicy for MIDI from PermissionManager
2015-09-09 13:34:40 +08:00
Robo
451dd03866 create net log file after context is created 2015-09-07 22:44:13 +05:30
Cheng Zhao
87a1b68c47 Fix typo 2015-09-06 10:29:59 +08:00
Cheng Zhao
d2ea3b496d Only store weak ref to BrowserContext 2015-09-05 22:34:42 +08:00
Cheng Zhao
1a8dc77951 Move management of browser context to BrowserContext 2015-09-05 20:52:50 +08:00
Cheng Zhao
dc1e50c62e Store BrowserContext in ref-counted ptr 2015-09-05 20:03:18 +08:00
Cheng Zhao
58fb166b0b Pass partition name instead of path to BrowserContext 2015-09-05 19:46:55 +08:00
Takashi Toyoshima
af505db908 Grant ChildProcessSecurityPolicy for MIDI from PermissionManager
PermissionManager should set ChildProcessSecurityPolicy for MIDI SysEx
permission. Otherwise, the browser kills unauthorized renderers that are
going to send MIDI SysEx messages.

Fixes #138.
2015-09-05 14:56:32 +09:00
Cheng Zhao
82b9ced3e0 Merge pull request #137 from atom/chrome45
Upgrade to Chrome 45
2015-09-03 21:17:32 +09:00
Cheng Zhao
dca5c763e9 Use the new devtools URL 2015-09-02 18:25:59 +08:00
Cheng Zhao
f077a51459 Define ENABLE_WEBRTC 2015-09-02 17:49:51 +08:00
Cheng Zhao
90125c44e3 Fix API changes on Linux 2015-09-02 17:29:30 +08:00
Cheng Zhao
38a211db2e Fix API changes 2015-09-02 15:16:34 +08:00
Cheng Zhao
5e004b4c24 Upgrade to Chrome 45 2015-09-02 14:22:50 +08:00
Cheng Zhao
7612b10dc1 Merge pull request #136 from deepak1556/browser_context_partition_patch
handle partition config in browser context
2015-09-01 20:01:29 +08:00
Robo
0e956c497d use browser context from webcontents for registering datasource 2015-08-31 21:04:48 +05:30
Robo
fa5c8fc943 handle partition config in browser context 2015-08-27 17:31:31 +05:30
Cheng Zhao
89e66f15c3 Link with 10.9 SDK 2015-08-26 15:57:35 +08:00
Cheng Zhao
c0b9fd415d Revert "Make bottom corner more round"
This reverts commit f9a64dde5da537f615cd7080a335c6304c6a814e.
2015-08-26 15:56:39 +08:00
Cheng Zhao
eb709a9a8f Fix building on OS X 2015-08-25 20:55:07 +08:00
Cheng Zhao
c3e1ceaf61 Merge pull request #132 from deepak1556/devtools_title_patch
Allowing devtools window to update title
2015-08-25 20:29:03 +08:00
Cheng Zhao
0180eea8a9 Merge pull request #127 from atom/chrome44
Upgrade to Chrome 44
2015-08-21 19:28:43 +08:00
Cheng Zhao
c9557f2b39 win: Fix Release build 2015-08-21 16:19:57 +08:00
Cheng Zhao
c4d192b9a4 linux: Fix building 2015-08-21 16:14:19 +08:00
Cheng Zhao
8a92ef34a7 Store NetLog in BrowserClient 2015-08-11 18:29:55 +08:00
Cheng Zhao
edda9d0488 Link with a few more static libraries on Linux and OS X 2015-08-11 10:45:30 +08:00
Cheng Zhao
3deb8297e1 Update to Chrome 44 2015-08-11 10:24:53 +08:00
Cheng Zhao
1cd7434a66 Include Foundation.h at right place 2015-08-11 10:05:27 +08:00
Cheng Zhao
089a4cf08f Disable -Wunneeded-internal-declaration warning 2015-08-11 10:04:07 +08:00
Haojian Wu
f82ab5f193 Implement devtools preference interfaces. 2015-08-11 09:49:57 +08:00
Haojian Wu
6171ab8f6b [Win] Link http_server.lib. 2015-08-11 09:49:57 +08:00
Haojian Wu
68a45aa29a [Win] Link devtools_discovery.lib and devtools_http_handler.lib in component builds. 2015-08-11 09:49:57 +08:00
Haojian Wu
7d22da5169 Fix API changes in DevToolsManagerDelegate. 2015-08-11 09:49:57 +08:00
Haojian Wu
2dd8bc0c78 ffmpegsumo.dll => ffmpeg.dll 2015-08-11 09:49:57 +08:00
Haojian Wu
2703f186a6 DevToolsHttpHandler is moved from content to devtools_http_handler namespace. 2015-08-11 09:49:56 +08:00
Haojian Wu
dd11ad8db3 DevToolsHttpHandler::GetFrontendResourceId is removed. 2015-08-11 09:49:56 +08:00
Haojian Wu
c5ae2926e1 WebContentsFocused is removed.
Use OnWebContentsFocused instead.
2015-08-11 09:49:56 +08:00
Haojian Wu
ce6172b829 Update PlatformNotificationServiceImpl Interfaces. 2015-08-11 09:49:56 +08:00
Haojian Wu
ef91261aa5 No NetLog anymore, use NetLogCaptureMode. 2015-08-11 09:49:56 +08:00
Robo
26f4d09b2c implement for osx 2015-08-07 16:24:45 +05:30
Robo
1f65b47e8e allow updating devtools title in undocked mode 2015-08-07 14:30:49 +05:30
Cheng Zhao
97cf8ca609 Merge pull request #131 from atom/devtools-size
Don't show devtools window in too small size or out of screen
2015-08-04 22:52:29 +08:00
Cheng Zhao
5b4a42f7e9 Show devtools window in the middle of display 2015-08-04 22:50:30 +08:00
Cheng Zhao
0ef2857534 Don't show devtools window in too small size or out of screen 2015-08-04 22:43:59 +08:00
Cheng Zhao
545c62994f Merge pull request #130 from atom/linux-notification
Guard against outside input in Linux notifications
2015-08-04 16:46:53 +08:00
Cheng Zhao
bb7cd8f261 Guard agains empty notification 2015-08-04 16:44:32 +08:00
Cheng Zhao
81ba4e3a3e Guard against empty image 2015-08-04 16:43:46 +08:00
Cheng Zhao
51f0485898 Merge pull request #128 from deepak1556/inspectable_web_contents_api_patch
fix devtools workspace api
2015-07-29 17:14:49 +08:00
Cheng Zhao
4f124e0f44 Merge pull request #129 from deepak1556/devtools_zoom_level_patch
save devtools zoom level preference
2015-07-29 14:45:14 +08:00
Robo
a56a0505fa save devtools zoom level preference 2015-07-29 12:08:31 +05:30
Robo
e9da74e58a fix devtools workspace api to accept file path 2015-07-29 09:31:00 +05:30
Cheng Zhao
bd6019ba0d Merge pull request #126 from atom/round-corner
Make bottom corner more round
2015-07-20 18:27:25 +08:00
Cheng Zhao
935d1e142f Make bottom corner more round 2015-07-20 18:24:24 +08:00
Cheng Zhao
89546a9c19 Merge pull request #124 from deepak1556/devtools_network_patch
create netlog instance for devtoolsnetlogobserver
2015-07-16 06:35:29 -07:00
Robo
7496cb29fe create netlog for devtoolsnetlogobserver 2015-07-15 00:54:28 +05:30
Cheng Zhao
6b1e4cc91a Set user agent from the delegate 2015-07-14 11:37:57 -07:00
Cheng Zhao
8bb0ea438d Enable override user agent in URLRequestContextGetter 2015-07-14 10:04:34 -07:00
Cheng Zhao
032401edf8 Merge pull request #123 from deepak1556/proxy_patch
adding support for kProxyPacUrl
2015-07-13 15:14:11 -07:00
Robo
ca09f32548 adding support for kProxyPacUrl 2015-07-10 13:52:02 +05:30
Cheng Zhao
681e868a5b Link with nss 2015-07-07 14:15:45 +08:00
Cheng Zhao
08b851dd0f Load cursor from current module 2015-07-06 13:48:31 +08:00
Cheng Zhao
e67d0db448 OpenSSL is still used on Windows and Mac 2015-07-06 12:03:33 +08:00
Cheng Zhao
31b88f7370 USE_NSS is used before Chrome 45 2015-07-06 11:49:49 +08:00
Cheng Zhao
36447f6613 Use NSS instead of OpenSSL 2015-07-06 10:52:20 +08:00
Cheng Zhao
c210c68bee Remove -std=gnu++11 flag 2015-07-01 07:48:29 +00:00
Cheng Zhao
3826e8864a Fix a compiler warning 2015-07-01 06:50:07 +00:00
Cheng Zhao
d440a3c21d Do not force using clang 2015-07-01 14:32:04 +08:00
Cheng Zhao
de57d822d7 Merge pull request #121 from darwin/missing-overrides
Missing overrides
2015-06-26 21:30:56 +08:00
Antonin Hildebrand
899c730ece Missing overrides
ninja compilation failed for me under OS X 10.11
2015-06-26 11:39:41 +02:00
Cheng Zhao
f477e6ca6a Don't hide methods of content::BrowserContext 2015-06-26 10:58:06 +08:00
Cheng Zhao
f9dc87ba97 Add InspectableWebContentsViewDelegate 2015-06-25 12:29:34 +08:00
Cheng Zhao
9fb30b702a Check if image is empty. 2015-06-18 12:41:36 +08:00
Cheng Zhao
a24d4cd0d9 Merge pull request #120 from atom/osx-image-on-109-only
Ensure we don't try to set notification contentImage on < OS X 10.9
2015-06-18 12:35:59 +08:00
Paul Betts
c3de789fd7 Ensure we don't try to set contentImage on 10.7/10.8. That would be rude! 2015-06-17 13:01:48 -07:00
Cheng Zhao
0e6e4b6c5e Merge pull request #118 from atom/osx-notification-image
Set contentImage based on the passed-in image
2015-06-17 12:37:15 +08:00
Paul Betts
0e98519d3b Set contentImage based on the passed-in image 2015-06-16 18:00:39 -07:00
Cheng Zhao
ca021d030f Add --ignore-connections-limit switch 2015-06-16 16:03:43 +08:00
Cheng Zhao
cb6fba94fc Merge pull request #117 from deepak1556/gyp_defines_patch
define openssl_certs on linux
2015-06-16 13:36:54 +08:00
deepak1556
27fbdf3cf2 define openssl_certs on linux 2015-06-11 23:18:47 +05:30
Cheng Zhao
3cea64b0f6 Fix typo 2015-06-10 19:30:57 +08:00
Cheng Zhao
9868d46d63 OpenSSL is actually used by all platforms 2015-06-10 19:15:45 +08:00
Cheng Zhao
4b26cbf24b Merge pull request #115 from deepak1556/cert_store_patch
intiailse platform clientcertstore
2015-06-10 19:14:58 +08:00
deepak1556
3ac3a2f115 intiailse platform clientcertstore 2015-06-10 02:37:11 +05:30
Cheng Zhao
5e943e1456 view_ needs to be destroyed after web_contents_ 2015-06-09 11:09:16 +08:00
Cheng Zhao
e0992884e6 Merge pull request #116 from atom/delete-requests
Make devtools_web_contents_ is destroyed before everything
2015-06-09 11:02:45 +08:00
Cheng Zhao
64c4a34507 Make devtools_web_contents_ is destroyed before everything
The WebContentsDestroyed still access the other members, so if they are
destroyed before the devtools_web_contents_ in the destructor, we will
crash there.
2015-06-09 10:44:48 +08:00
Cheng Zhao
418264d42a Merge pull request #114 from deepak1556/webcontents_patch
fix dereferencing possibly null pointer
2015-06-09 10:31:07 +08:00
Cheng Zhao
b2eb23aa01 Clean up code 2015-06-09 09:51:38 +08:00
Cheng Zhao
a56c132835 Merge pull request #113 from deepak1556/net_log_patch
adding support for kLogNetLog switch
2015-06-08 23:13:03 +08:00
deepak1556
8adb65fa29 fix dereferencing null pointer 2015-06-08 20:31:07 +05:30
deepak1556
2ba119f395 fix memory leak 2015-06-08 19:56:48 +05:30
deepak1556
15255944b6 create net log instance only when needed 2015-06-08 19:19:44 +05:30
deepak1556
33f65ba981 fix crash on quit 2015-06-06 14:33:07 +05:30
deepak1556
1022357700 adding netconstants to log 2015-06-06 00:13:10 +05:30
deepak1556
ee6b14d1d8 adding support for kLogNetLog switch 2015-06-05 20:25:08 +05:30
Cheng Zhao
51bb357405 Add DevToolsOpened and DevToolsClosed events 2015-06-05 16:57:17 +08:00
Cheng Zhao
d1e70e7826 Add InspectableWebContents::GetDevToolsWebContents 2015-06-05 14:33:37 +08:00
Cheng Zhao
9ab9b392d6 Fix crash when quitting 2015-06-05 12:35:41 +08:00
Cheng Zhao
44ba4e87aa Merge pull request #112 from atom/devtools-load-network-resources
Fix networking requests not loading in devtools
2015-06-05 12:27:00 +08:00
Cheng Zhao
05f182f650 Clean up code 2015-06-05 12:24:48 +08:00
Cheng Zhao
aa926680a2 No more need to override DidFinishLoad 2015-06-05 12:10:01 +08:00
Cheng Zhao
95d28c398e Update cpplint 2015-06-05 12:07:27 +08:00
Cheng Zhao
56747e975e Avoid calling JavaScript of devtools WebContents too early
It would craete a context that window.location is about:blank
2015-06-05 11:58:27 +08:00
Cheng Zhao
9a9bc5530e Handle network requests from devtools 2015-06-05 11:20:20 +08:00
Cheng Zhao
d48a80bdfa Update to new devtools messages 2015-06-05 11:03:47 +08:00
Cheng Zhao
3f2c2e3484 Merge pull request #111 from deepak1556/devtools_workspace_patch
delegate filesystem request calls
2015-06-05 10:32:10 +08:00
deepak1556
62f860123d delegate filesystem request calls 2015-06-04 22:21:23 +05:30
Cheng Zhao
894cc64276 Link with gmodule-2.0, fix atom/electron#1809 2015-06-04 14:41:16 +08:00
Cheng Zhao
239ddea0ce Merge pull request #110 from aroben/devtools-security
Make devtools work when web security is enabled
2015-06-03 09:51:32 +08:00
Adam Roben
2025b60968 Make devtools work when web security is enabled
These changes bring our copy of devtools_ui.cc in line with
https://chromium.googlesource.com/chromium/src.git/+/43.0.2357.92/chrome/browser/ui/webui/devtools_ui.cc

Without these changes, opening the devtools prints errors like:

    [0602/165604:ERROR:CONSOLE(0)] "Refused to display 'chrome-devtools://devtools/inspector.html?can_dock=true&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)&experiments=true' in a frame because it set 'X-Frame-Options' to 'DENY'.", source: about:blank (0)
    [0602/165604:ERROR:CONSOLE(1514)] "Uncaught SecurityError: Sandbox access violation: Blocked a frame at "chrome-devtools://devtools" from accessing a frame at "null".  The frame being accessed is sandboxed and lacks the "allow-same-origin" flag.", source: chrome-devtools://devtools/devtools.js (1514)
2015-06-02 16:56:17 -04:00
Cheng Zhao
3a005fd52a Update libchromiumcontent 2015-05-29 17:51:50 +08:00
Cheng Zhao
155a50d00e Revert "Link with ui_zoom in component build"
This reverts commit b48bc01c8f1fc11862f96db835a5f257aa6e53aa.
2015-05-29 17:51:22 +08:00
Cheng Zhao
f494f90a3e Link with ui_zoom in component build 2015-05-29 16:54:28 +08:00
Cheng Zhao
eb2d94faf7 Update to latest libchromiumcontent 2015-05-29 15:50:12 +08:00
Cheng Zhao
a9a5765544 Remove trailing space 2015-05-27 15:02:01 +08:00
Cheng Zhao
bf99380c5d Merge pull request #107 from deepak1556/devtools_patch
method to reset devtools agent host
2015-05-26 16:15:04 +08:00
Cheng Zhao
8818f9c448 Merge pull request #106 from hokein/pdf-dll
No need to link pdf related libraries in component build.
2015-05-26 12:40:40 +08:00
Cheng Zhao
564b9ec56f Merge pull request #109 from atom/chrome43
Upgrade to Chrome 43
2015-05-23 12:24:07 +08:00
Cheng Zhao
ce266e8647 Link with d3d11.lib 2015-05-23 11:25:37 +08:00
Cheng Zhao
847dc32f74 Suppress compiler warning 2015-05-23 11:10:40 +08:00
Cheng Zhao
0f64da9dfc Implement NetworkDelegate::OnFirstPartyOnlyCookieExperimentEnabled 2015-05-22 14:56:28 +08:00
Cheng Zhao
66d49a5241 ProxyResolverV8::EnsureIsolateCreated is removed 2015-05-22 14:54:33 +08:00
Cheng Zhao
37bd7fe331 Remove parameter |by_user| in NotificationClosed 2015-05-22 14:51:16 +08:00
Cheng Zhao
0cbf8b6cd2 Implement PermissionManager 2015-05-22 14:50:41 +08:00
Cheng Zhao
eee334c7f6 Merge pull request #108 from atom/no-incremental-linking
Turn off incremental linking for Release build
2015-05-20 13:53:48 +08:00
Cheng Zhao
c60fcc4c9a Turn off incremental linking for Release build 2015-05-20 13:52:24 +08:00
deepak1556
145c18f4c8 method to reset agent_host 2015-05-18 19:26:03 +05:30
Haojian Wu
e76b06b84c No need to link pdf related libraries in component build. 2015-05-13 09:54:56 +08:00
Cheng Zhao
d350e73dff win: Link with msvcrt dll for Release build 2015-05-12 17:00:18 +08:00
Cheng Zhao
6e603ddae9 Merge pull request #102 from hokein/win-print
Link pdf related libraries for component build.
2015-05-10 11:31:25 +08:00
Cheng Zhao
9b1302b894 Merge pull request #104 from atom/enable-ntlm-auth
Explicitly create HttpAuthHandlerFactory to enable NTLM / Kerberos authentication
2015-05-07 10:48:37 +08:00
Paul Betts
a18e5d7d5c Come Correct with memory management 2015-05-05 22:35:48 -07:00
Paul Betts
dbe969b5c5 Fix indentation 2015-05-05 22:28:00 -07:00
Paul Betts
9737ba3e37 Explicitly create HttpAuthHandlerFactory
The CreateDefault method does not set a URLSecurityManager, so the code will
fall-back to disabling all built-in authentication. Instead, use the default
URLSecurityManager which will use IE Security Zones on Windows to determine
whether a URL is part of the Local Intranet zone or on non-Windows, default
proxy rules will be used (i.e. would a default proxy map vs. connect direct).
2015-05-04 15:49:00 -07:00
Haojian Wu
34a5e0865d Link pdf related libraries for component build. 2015-05-04 18:55:03 +08:00
Cheng Zhao
7e376c1f73 win: Delay load of BluetoothApis.dll, fixes atom/electron#1462 2015-04-23 13:26:34 +08:00
Cheng Zhao
a99d29b859 linux: Fix compiler warning 2015-04-22 05:50:27 +00:00
Cheng Zhao
e65f0941e0 Merge pull request #100 from atom/chrome42
Upgrade to Chrome 42
2015-04-22 12:12:47 +08:00
Cheng Zhao
b62896d571 Merge pull request #99 from paulcbetts/ubuntu-notifications
Ubuntu notification improvements
2015-04-22 12:11:19 +08:00
Paul Betts
a0e5d36305 Free some stuff 2015-04-21 14:09:48 -07:00
Cheng Zhao
7e88fe107d linux: Pass v8 snapshot's fd to child process 2015-04-21 21:43:30 +08:00
Cheng Zhao
a5b6ffd93c mac: Link with IOBluetooth.framework 2015-04-21 19:05:39 +08:00
Cheng Zhao
90b255f2cd Fix API changes 2015-04-21 18:54:57 +08:00
Cheng Zhao
80dd72b93c Upgrade to Chrome 42 2015-04-21 18:54:48 +08:00
Cheng Zhao
027a474fa2 Include headers of mojo 2015-04-21 14:30:06 +08:00
Paul Betts
5d82bab10d Use DBus to detect indicator, not testing for files like an animal 2015-04-20 15:31:24 -07:00
Paul Betts
7c52838ece Fix the build on OS X 2015-04-20 13:29:10 -07:00
Paul Betts
3357dc0ef7 Set icon for notification, and disable action on Ubuntu 2015-04-20 13:22:18 -07:00
Paul Betts
a31ce8ce50 Make PlatformNotificationService pass along the icon 2015-04-20 13:21:18 -07:00
Paul Betts
b8689dc6cc Add a parameter to ShowNotification for the icon 2015-04-20 13:20:50 -07:00
Cheng Zhao
1cf1b5243d win: Delay load of MFReadWrite.dll
Fixes atom/electron#1442.
2015-04-20 19:47:21 +08:00
Cheng Zhao
4769e21e3d Add required defines under 32bit Linux 2015-04-12 08:15:57 +00:00
Cheng Zhao
36e6243085 linux: Define _LARGEFILE_SOURCE 2015-04-12 07:56:14 +00:00
Cheng Zhao
2e7b3f0d78 win: Optimize for size 2015-04-11 23:28:41 +08:00
Cheng Zhao
f3c83b55dd Merge pull request #98 from atom/win_64bit
Allow specifying the arch of libchromiumcontent to download
2015-04-11 20:21:53 +08:00
Cheng Zhao
5bb9c180f9 win: Don't use _x64 targets 2015-04-11 18:58:46 +08:00
Cheng Zhao
a4a1812f17 Require target_arch parameter 2015-04-11 18:29:51 +08:00
Cheng Zhao
0deeae0214 Allow specifying the arch of libchromiumcontent to download 2015-04-11 18:02:52 +08:00
Cheng Zhao
5c9a1d9a43 Merge pull request #97 from atom/component_build
Add support for shared_library and static_library build of libchromiumcontent
2015-04-11 13:47:51 +08:00
Cheng Zhao
59d99f7b60 Set libchromiumcontent_component when bootstrapping 2015-04-11 13:44:58 +08:00
Cheng Zhao
decf522f48 Cleanup the brightray.gyp file 2015-04-11 13:35:22 +08:00
Cheng Zhao
a1b682cd50 Debug_Base and Release_Base configs are abstract 2015-04-11 12:07:14 +08:00
Cheng Zhao
48c9f4a0a6 No longer link with shared library of boringssl 2015-04-10 18:53:14 +08:00
Cheng Zhao
10122304ed Fix including icu libraries 2015-04-10 12:06:55 +08:00
Cheng Zhao
b85b08ef8c Separate V8 libraries from other libraries 2015-04-09 20:48:27 +08:00
Cheng Zhao
62e9452831 win: Do not use link time code generation
It causes problems on Windows
2015-04-09 14:39:52 +08:00
Cheng Zhao
a8eb750efa win: Cleanup the compiler settings 2015-04-09 14:26:33 +08:00
Cheng Zhao
02ee07c4a0 win: No need to set default linked libraries 2015-04-09 13:38:54 +08:00
Cheng Zhao
9d921afff0 win: Remove unused config variables 2015-04-09 13:33:44 +08:00
Cheng Zhao
794b459ccd linux: Work around linker OOM on 32bit target 2015-04-09 12:05:42 +08:00
Cheng Zhao
6e3de02554 mac: "xcode_settings" doesn't work under "configurations" 2015-04-09 11:30:01 +08:00
Cheng Zhao
8a1a39b7b1 Add flag to build with clang 2015-04-09 10:49:36 +08:00
Cheng Zhao
0ae78f98eb mac: Improve configs for Release build 2015-04-09 10:41:26 +08:00
Cheng Zhao
9a691d1be8 Add "linux_system_libraries" variable 2015-04-09 10:14:25 +08:00
Cheng Zhao
845986750c Move filenames to another file 2015-04-09 10:11:28 +08:00
Cheng Zhao
48966c3046 Move filename rules to another file 2015-04-09 10:03:01 +08:00
Cheng Zhao
62d845f09e linux: Improve building flags for Release build 2015-04-09 09:58:07 +08:00
Cheng Zhao
2ef9e85f5e Remove linux_clang option 2015-04-08 19:20:51 +08:00
Cheng Zhao
891856f3af linux: Fix linking with system libraries 2015-04-08 08:22:55 +00:00
Cheng Zhao
c5f8e4360c Link with static_library version of libgtk2ui 2015-04-08 04:08:21 +00:00
Cheng Zhao
a7f7834be9 linux: Link with libboringssl.so 2015-04-08 02:42:19 +00:00
Cheng Zhao
feeb1da5ca Don't call download twice 2015-04-07 23:39:08 +08:00
Cheng Zhao
d1fb13b260 Fix path to boringssl.dll 2015-04-07 20:18:09 +08:00
Cheng Zhao
b9ddf0eb31 Still link with shared_library of boringssl 2015-04-07 17:25:13 +08:00
Cheng Zhao
92ce000bb2 win: Link with DLL version of vcrt in component build 2015-04-07 13:48:09 +08:00
Cheng Zhao
938182a3eb mac: Fix linking with boringssl 2015-04-07 11:28:56 +08:00
Cheng Zhao
512deae254 Fix generating configs on OS X and Linux 2015-04-06 21:41:36 +08:00
Cheng Zhao
9934985974 win: Link with libraries from other places 2015-04-06 16:01:31 +08:00
Cheng Zhao
d522443c75 win: Import system libraries in content_common.gypi 2015-04-06 15:20:27 +08:00
Cheng Zhao
f1a508f643 win: Link with boringssl.dll 2015-04-06 15:14:57 +08:00
Cheng Zhao
3b5edb461a win: Fix linking with libyuv 2015-04-06 15:04:07 +08:00
Cheng Zhao
4c36b747e0 win: Fix linking with ffmepg 2015-04-06 15:03:53 +08:00
Cheng Zhao
7b7a94140d win: Fix defines under component build 2015-04-06 14:19:28 +08:00
Cheng Zhao
ed5660909b win: Link with sandbox and base_static under component build 2015-04-06 12:03:22 +08:00
Cheng Zhao
9fd0f7e78e win: Add configurations for x64 build 2015-04-05 23:03:34 +08:00
Cheng Zhao
f9f891bd03 win: Fix libchromiumcontent_src_dir not defined 2015-04-05 22:51:38 +08:00
Cheng Zhao
0ed4626776 Download static_library build of libchromiumcontent 2015-04-05 22:28:00 +08:00
Cheng Zhao
5ef7a0d1da Use "D" and "R" as short names 2015-04-03 11:39:03 +08:00
Cheng Zhao
d9056135d7 Link with libboringssl.dylib 2015-04-03 11:37:27 +08:00
Cheng Zhao
038afadd1b mac: Link with all necessary system libraries 2015-04-03 09:56:03 +08:00
Cheng Zhao
4977741f35 Set libraries' path according to libchromiumcontent_component variable 2015-04-02 22:14:18 +08:00
Cheng Zhao
faac37a85c Only do component build in Debug mode 2015-04-02 15:11:15 +08:00
Cheng Zhao
7e41b9e44d Link with component build shared libraries 2015-04-02 14:05:43 +08:00
Cheng Zhao
19198a579a Upgrade libchromiumcontent for component build 2015-04-02 13:46:16 +08:00
Cheng Zhao
1a45176c24 Merge pull request #96 from deepak1556/web_contents_patch
detecting focus on devtools webcontents
2015-04-02 10:19:44 +08:00
Robo
4ae52721c4 detecting focus on devtools webcontents 2015-04-01 15:22:53 +05:30
Cheng Zhao
17f1fc618e Merge pull request #95 from hokein/webui
Enable webui in content layer.
2015-03-29 20:57:24 +08:00
Haojian Wu
0eae030f67 Enable webui in content layer.
Allow to access Chrome's webuis(chrome://gpu, chrome://tracing) in Atom Shell.
2015-03-29 16:33:51 +08:00
Cheng Zhao
6090358f16 Update libchromiumcontent 2015-03-23 08:29:44 +00:00
Cheng Zhao
afca245916 Merge pull request #94 from atom/chrome41
Upgrade to Chrome 41
2015-03-18 12:57:01 +08:00
Cheng Zhao
4e14c8634b Fix building on Windows 2015-03-18 12:55:02 +08:00
Cheng Zhao
21ee1f257f Upgrade libchromiumcontent 2015-03-18 09:55:13 +08:00
Kevin Sawicki
ac77c9df54 Update URLs for new atom org location 2015-03-17 11:24:10 -07:00
Cheng Zhao
54e58ae255 Fix compilation on Linux 2015-03-16 14:45:19 +08:00
Cheng Zhao
6033e5bea3 Upgrade libchromiumcontent 2015-03-13 16:33:48 -07:00
Cheng Zhao
1a53e293dd Use DevToolsAPI instead of InspectorFrontendAPI
Now InspectorFrontendAPI is available in the iframe, we have to call DevToolsAPI
which delegates the call.
2015-03-11 14:51:37 -07:00
Cheng Zhao
56a1691588 MEDIA_LOOPBACK_AUDIO_CAPTURE renamed to MEDIA_DESKTOP_AUDIO_CAPTURE 2015-03-08 20:04:25 -07:00
Cheng Zhao
bb8da7ec7e Fix browser_context.cc 2015-03-08 19:56:45 -07:00
Cheng Zhao
5e1a4e1222 Fix url_request_context_getter.cc 2015-03-08 19:54:27 -07:00
Cheng Zhao
f04ee342ea Remove RemoteDebuggingServer class 2015-03-08 19:53:37 -07:00
Cheng Zhao
2837b730f2 Fix network_delegate.cc 2015-03-08 19:47:12 -07:00
Cheng Zhao
95f0f25dc4 Fix inspectable_web_contents_impl.cc 2015-03-08 19:38:40 -07:00
Cheng Zhao
a5026907e4 Implement PlatformNotificationService 2015-03-08 19:37:13 -07:00
Cheng Zhao
99e2dbd6e8 Fix inspectable_web_contents_impl.h 2015-03-08 19:13:17 -07:00
Cheng Zhao
8467fee8d8 Fix devtools_manager_delegate.cc 2015-03-08 19:07:53 -07:00
Cheng Zhao
c0356f0269 Fix ui/gfx/geometry headers 2015-03-08 19:02:38 -07:00
Cheng Zhao
33f0b2ad89 Upgrade to Chrome 41 2015-03-05 12:28:41 -08:00
Cheng Zhao
b23da34ce9 Upgrade to latest gyp 2015-02-12 10:43:31 +08:00
Cheng Zhao
657a394b12 Merge pull request #88 from brightray/chrome40
Upgrade to Chrome 40
2015-02-03 10:58:28 -08:00
Cheng Zhao
5e4c90f264 NotificationError is discarded 2015-02-03 10:57:33 -08:00
Cheng Zhao
1c65f5d7d9 Fix cpplint warning 2015-02-03 10:57:25 -08:00
Cheng Zhao
c874219101 Use the new devtools API 2015-02-03 10:57:25 -08:00
Cheng Zhao
dc01ba5a72 scoped_ptr.PassAs is deprecated 2015-02-03 10:57:25 -08:00
Cheng Zhao
02d632c4f7 Fix change of ShowDesktopNotification API 2015-02-03 10:57:25 -08:00
Cheng Zhao
f8a9348bcf Upgrade libchromiumcontent to 40.0.2214.91 2015-02-03 10:42:52 -08:00
Cheng Zhao
963a3475e8 Merge pull request #91 from dcposch/master
Fix the build on Linux
2015-02-03 10:39:59 -08:00
DC
9aa2fd9119 Fix the build on Linux
See https://github.com/atom/atom-shell/issues/1074 for details
2015-01-30 03:54:30 -08:00
Cheng Zhao
6e5505c34f Merge pull request #90 from hokein/fix-c++11-mac
Use libc++ on mac.
2015-01-26 10:41:06 -08:00
Haojian Wu
f922419f03 Use libc++ on mac. 2015-01-26 22:38:01 +08:00
Cheng Zhao
98bf5bf3ed Implement CheckMediaAccessPermission
Part of the fixes for #1017.
2015-01-23 15:13:04 -08:00
Cheng Zhao
4bbe026d48 register DIR_CACHE and DIR_USER_CACHE in path service 2015-01-18 21:00:47 -08:00
Cheng Zhao
dc4ccfcbdc Merge pull request #89 from brightray/user-data-path
Use PathService to set and get DIR_USER_DATA
2015-01-18 18:03:56 -08:00
Cheng Zhao
c9463d815c linux: Override DIR_APP_DATA before loading .js 2015-01-18 17:34:36 -08:00
Cheng Zhao
76e3d56760 Make DIR_APP_DATA available on Linux 2015-01-18 17:19:25 -08:00
Cheng Zhao
5b4e5a7e55 Override DIR_USER_DATA as data path 2015-01-18 16:59:57 -08:00
Cheng Zhao
964e1d6bb6 Override DIR_APP_DATA on Linux 2015-01-18 16:42:32 -08:00
Cheng Zhao
167995119a Use current exe's icon as default window icon.
Fixes atom/atom-shell#863.
2015-01-15 15:30:04 -08:00
Cheng Zhao
0e0079956c Add support for --ignore-certificate-errors 2015-01-06 20:36:20 -08:00
Cheng Zhao
1166a56ceb Add a way to custom http cache backend 2015-01-05 13:29:16 -08:00
Cheng Zhao
ff0afc688d Fix devtools window can not minimize
Closes atom/atom-shell#941.
2015-01-04 22:32:49 -08:00
Cheng Zhao
51ef072de5 Implement GetDevToolsManagerDelegate, fixes atom/atom-shell#969 2015-01-02 15:18:24 -08:00
Cheng Zhao
ad81698651 Merge pull request #84 from brightray/chrome39
Upgrade to Chrome39
2014-12-17 13:15:42 -08:00
Cheng Zhao
dc86ab58a9 Remove DownloadManagerDelegate
Having a partial implemented DownloadManagerDelegate will cause crashes under
certain places.
2014-12-17 13:13:19 -08:00
Cheng Zhao
779c44424f Upgrade libchromiumcontent 2014-12-12 14:48:36 -08:00
Cheng Zhao
01fde40299 Fix compilation warning on Windows 2014-12-10 13:26:57 -08:00
Cheng Zhao
c25dfcb71d Upgrade libchromiumcontent to 39.0.2171.65 2014-12-09 22:39:45 -08:00
Cheng Zhao
2c81fb4719 Fix compilation warnings due to API changes 2014-12-09 22:39:44 -08:00
Cheng Zhao
289d3b54f3 Add DevToolsManagerDelegateA 2014-12-09 22:39:44 -08:00
Cheng Zhao
8ec5b5ad20 DevToolsClientHost is discarded 2014-12-09 22:39:44 -08:00
Cheng Zhao
f764a449af Merge pull request #85 from paulcbetts/default-framework-name
Fix the default Framework name
2014-12-08 12:30:04 -08:00
Paul Betts
d4be5b6e8e Fix the default framework name to be 'Product Framework.framework', not 'Product.framework' 2014-12-07 21:24:23 -08:00
Cheng Zhao
75eb15fa1f Merge pull request #83 from IgorKlopov/patch-1
Same as https://github.com/atom/atom-shell/pull/867
2014-12-04 11:44:41 -08:00
IgorKlopov
6e1c4d2860 Same as https://github.com/atom/atom-shell/pull/867
Indeed there are two places worth changing. After these two changes i am able to build Atom-Shell using Pyhon installed by default (without adding to paths)
2014-11-28 19:45:25 +03:00
Cheng Zhao
85d633aea3 Merge pull request #81 from rprichard/master
Move Linux pkg-config dependencies from atom-shell to brightray.
2014-11-25 21:23:30 +08:00
Ryan Prichard
f617eb5810 Move Linux pkg-config dependencies from atom-shell to brightray. 2014-11-24 03:27:11 -08:00
Cheng Zhao
06eff5cd8c linux: Add a way to set WM_CLASS for devtools window 2014-11-24 16:03:55 +08:00
Cheng Zhao
601ee75bcf linux: Use native window frame for devtools
Fixes atom/atom-shell#646.
2014-11-06 19:08:41 +08:00
Cheng Zhao
c4aebe3ba1 No need to write "virtual" when we have "override" 2014-11-06 19:08:41 +08:00
Cheng Zhao
21e0907bfc Merge pull request #78 from frankhale/maximize-devtools-window
Make devtools window maximizable
2014-11-04 10:00:28 +08:00
Frank Hale
513d84cd3e Make devtools window maximizable 2014-11-03 11:10:14 -05:00
Cheng Zhao
dbfa9b5660 mac: Clean delegate before releasing window 2014-11-03 22:12:33 +08:00
Cheng Zhao
b75dc9b08d mac: Close the devtools window before releasing it
Sometime simply releasing it may leave it open for a while.
2014-11-03 22:05:16 +08:00
Cheng Zhao
92244500c6 mac: Clean delegate after closing window 2014-11-03 21:46:59 +08:00
Cheng Zhao
74025ee985 Enable setting devtools to not able to dock 2014-11-03 21:32:11 +08:00
Cheng Zhao
2bbfdea8bb Handle localized string 2014-10-31 19:42:06 +08:00
Cheng Zhao
6b49e23312 Fix leaking WebContents from devtools. 2014-10-27 16:42:54 +08:00
Cheng Zhao
7b39673215 No need for "virtual" when "override" is used 2014-10-27 16:39:54 +08:00
Cheng Zhao
f809fef22d OVERRIDE => override 2014-10-23 11:10:39 +08:00
Cheng Zhao
e94795a600 Merge pull request #77 from brightray/chrome38
Upgrade to Chrome 38
2014-10-13 19:36:07 +08:00
Cheng Zhao
6d62b0960e Fix building on Linux 2014-10-13 11:03:37 +08:00
Cheng Zhao
9e12036823 Upgrade to Chrome 38 2014-10-11 19:03:53 +08:00
Cheng Zhao
733931c7ad Fix loading devtools 2014-10-11 19:00:30 +08:00
Cheng Zhao
5bec155c81 Adapt to API changes of Chrome 38 2014-10-11 16:38:27 +08:00
Cheng Zhao
5c455b6ff9 Fix compilation warning on Linux 2014-10-08 01:34:01 +00:00
Cheng Zhao
f7819f369b Don't warn about deprecated-register 2014-10-06 11:11:41 +08:00
Cheng Zhao
ccaf23b338 Merge pull request #76 from brightray/usermedia
Add support for capturing screen in getUserMedia
2014-10-01 15:25:25 +08:00
Cheng Zhao
09678cc485 Clean the callback after executed 2014-10-01 15:18:34 +08:00
Cheng Zhao
ea28f518d3 Add handling of user media requests 2014-10-01 11:07:29 +08:00
Cheng Zhao
469f55ef5a Merge pull request #75 from brightray/devtools-toolbar
Make devtools toolbar more eye candy
2014-09-09 19:32:48 +09:00
Cheng Zhao
30025fe6ef Set toolbar color for devtools. 2014-09-09 18:28:02 +08:00
Cheng Zhao
c58bf15345 mac: Send focus/blur event to devtools web contents. 2014-09-09 17:57:23 +08:00
Cheng Zhao
a6627a7286 Add a method in InspectableWebContentDelegate to set icon for devtools window. 2014-09-09 15:29:35 +08:00
Cheng Zhao
c67ba6de6a Merge pull request #73 from brightray/chrome37
Upgrade to Chrome37
2014-09-09 15:27:36 +08:00
Cheng Zhao
f013a98920 views: Use new devtools resizing strategy. 2014-09-01 20:09:08 +08:00
Cheng Zhao
2a8691d981 mac: Use new devtools resizing strategy. 2014-09-01 19:18:12 +08:00
Cheng Zhao
4107089363 Use new devtools resizing strategy from Chrome 37. 2014-09-01 19:15:07 +08:00
Cheng Zhao
f8c8c415eb Fix cpplint warnings. 2014-08-31 20:05:14 +08:00
Cheng Zhao
6010539914 Don't create empty url request job factory. 2014-08-31 19:57:15 +08:00
Cheng Zhao
dca1c51b32 Fix API changes of Chrome37. 2014-08-31 18:43:01 +08:00
Cheng Zhao
f0e46a4728 Add skia related defines. 2014-08-31 18:28:53 +08:00
Cheng Zhao
bf6722ab4f Upgrade libchromiumcontent to chrome37. 2014-08-31 17:44:07 +08:00
Cheng Zhao
47bc6a29a7 Print console output of devtools. 2014-08-28 12:53:35 +08:00
Cheng Zhao
3872db20d8 Merge pull request #72 from brightray/devtools-zoom
Make zooming work in devtools
2014-08-26 15:10:51 +08:00
Cheng Zhao
20efd82c98 Implement zoom messages for devtools. 2014-08-26 15:07:06 +08:00
Cheng Zhao
69bf54cebe Merge pull request #71 from brightray/request-context-getter-delegate
Add delegate class for URLRequestContextGetter
2014-08-20 15:29:59 +08:00
Cheng Zhao
6e420d5137 Cleanup URLRequestContextGetter.
In brightray line length limit is 100 so we could make code formatted more
tidy.
2014-08-20 15:26:53 +08:00
Cheng Zhao
3fefdcba0d Move creation of URLRequestJobFactoryImpl into default delegate. 2014-08-20 14:48:02 +08:00
Cheng Zhao
c30f11f38c Add Delegate for URLRequestContextGetter. 2014-08-20 14:39:09 +08:00
Cheng Zhao
bbb3702543 Merge pull request #70 from brightray/proxy-server
Add --proxy-server and --no-proxy-server switch
2014-08-20 11:55:08 +08:00
Cheng Zhao
44bfa328f1 Add --proxy-server switch. 2014-08-20 11:49:18 +08:00
Cheng Zhao
d136c44792 Add --no-proxy-server switch. 2014-08-20 11:44:45 +08:00
Cheng Zhao
59398bc24b Merge pull request #69 from brightray/host-rules
Add support for --host-rules and --host-resolver-rules
2014-08-15 12:47:07 +08:00
Cheng Zhao
8c73e6aba4 Implement --host-resolver-rules switch. 2014-08-15 12:42:11 +08:00
Cheng Zhao
052ddd961f Implement --host-rules switch. 2014-08-15 12:30:50 +08:00
Cheng Zhao
8aa422a3e8 Merge pull request #68 from brightray/expose-url_request_context_getter
Add CreateURLRequestJobFactory override for BrowserContext
2014-08-15 12:16:23 +08:00
Cheng Zhao
b06970fda0 Remove unneeded headers and declarations. 2014-08-13 17:39:25 +08:00
Cheng Zhao
da3bafd490 Pass parameter by pointers when creating job factory.
1. The caller needs to modify protocol_handlers.
2. We need to make sure protocol_handlers and interceptors are not touched
   if user doesn't create a job factory.
2014-08-13 17:31:33 +08:00
Cheng Zhao
604361f93d Pass ProtocolHandlerScopedVector by value. 2014-08-13 16:16:01 +08:00
Cheng Zhao
b95b621dfc Add url_request_context_getter getter for BrowserContext. 2014-08-13 16:09:32 +08:00
Cheng Zhao
3f9f778274 Clean handlers when custom job factory is used. 2014-08-13 16:05:22 +08:00
Cheng Zhao
2d03c983e4 Give user a chance to create custom URLRequestJobFactory. 2014-08-13 15:48:16 +08:00
Cheng Zhao
d01aa51686 using content::BrowserThread 2014-08-13 15:11:23 +08:00
Cheng Zhao
f05199d4e4 Don't be too strict on media requests. 2014-08-11 23:22:49 +08:00
Cheng Zhao
37fcbba516 Merge pull request #67 from brightray/devtools-experiments
Enable devtools experiments.
2014-08-11 10:52:04 +08:00
Cheng Zhao
eafa888757 Enable devtools experiments. 2014-08-11 10:42:50 +08:00
Cheng Zhao
760f7ed24f Fix "warning: field 'widget_' is uninitialized when used here". 2014-08-09 09:34:06 +08:00
Cheng Zhao
488f7d168b Merge pull request #66 from brightray/crash-closing-devtools
mac: Close devtools when web contents is destroyed.
2014-08-08 12:51:20 +08:00
Cheng Zhao
4ed7934567 mac: Close devtools when web contents is destroyed.
After the BRYInspectableWebContentsView is added as subview to other
NSWindow owned by users, the view_ would not be dealloc when the web
contents got destroyed, which made the devtools window a ghost.
2014-08-08 12:45:26 +08:00
Cheng Zhao
eab44d5045 Merge pull request #65 from brightray/mac-devtools-focus
Focus on devtools when it is opened on Mac.
2014-08-07 10:51:28 +08:00
Cheng Zhao
f455798c05 Fix cpplint warnings. 2014-08-07 10:50:50 +08:00
Cheng Zhao
e5a57b02d8 Focus on devtools when it is opened on Mac. 2014-08-07 10:48:02 +08:00
Cheng Zhao
a4dd362398 Merge pull request #64 from hokein/master
Add remote debugging support.
2014-07-30 22:44:34 +08:00
Haojian Wu
5a5c92ad2d Add remote debugging support. 2014-07-30 22:19:05 +08:00
Cheng Zhao
fd90f2c360 Merge pull request #63 from brightray/chrome36
Upgrade to Chrome36
2014-07-29 14:36:23 +08:00
Cheng Zhao
7b6fbff40d Implement BrowserClient::GetDefaultDownloadDirectory(). 2014-07-28 17:48:55 +08:00
Cheng Zhao
a866718b49 Initialize ProxyResolverV8 at very early phrase.
In atom-shell we need to ensure node environment is initialized after the
ProxyResolverV8 has been initialized.
2014-07-28 15:28:38 +08:00
Cheng Zhao
a8e879d0c5 mac: Fix blank page after devtools is opened. 2014-07-28 12:40:38 +08:00
Cheng Zhao
8ff2683ae8 Ignore warning 4189 on Windows.
The warning comes from mojo/public/cpp/system/core.h.
2014-07-28 12:12:14 +08:00
Cheng Zhao
f552dc7ba4 mac: Fix the notification presenter of new API. 2014-07-28 11:52:26 +08:00
Cheng Zhao
e52a089ec2 mac: Remove usages of WebContentsView. 2014-07-28 09:34:42 +08:00
Cheng Zhao
edbce1c167 Update libchromiumcontent to fix gfx::display link errors. 2014-07-28 00:21:58 +00:00
Cheng Zhao
d47a94b1fe DispatchBeforeUnload is now a method of WebContents. 2014-07-27 11:27:05 +00:00
Cheng Zhao
8d6a879707 Update libchromiumcontent to include mojo headers. 2014-07-27 11:27:04 +00:00
Cheng Zhao
9821cd1f58 web_contents_view.h has been hidden from user. 2014-07-27 11:27:04 +00:00
Cheng Zhao
a98199511a Implement GetGuestManagerDelegate. 2014-07-27 11:27:04 +00:00
Cheng Zhao
8bf3e084f1 Interface of ProxyResolverV8 has changed. 2014-07-27 11:27:04 +00:00
Cheng Zhao
bb87492897 No more need to init aura::Env. 2014-07-27 11:27:04 +00:00
Cheng Zhao
6dd580526e Refactor notification presenter for new desktop notification interface. 2014-07-27 11:27:04 +00:00
Cheng Zhao
4e63780e4a Prototype of WebContentsDestroyed has changed. 2014-07-27 10:27:19 +00:00
Cheng Zhao
8ad833b333 Merge pull request #62 from brightray/window-frame
Some tweaks on making application looks better
2014-07-27 16:12:27 +08:00
Cheng Zhao
8c38a7547b Upgrade libchromiumcontent to chrome36. 2014-07-27 08:08:27 +00:00
Cheng Zhao
a318b1c5d1 views: Use DesktopNativeWidgetAura for menu view. 2014-07-14 15:56:04 +08:00
Cheng Zhao
46e765f79b Fix crash when closing docked devtools by clicking close button.
We need to send ack for the close message, so we should destroy web contents
after the beforeunload event has fired.
2014-07-13 10:08:28 +08:00
Cheng Zhao
9d4e977c01 win: Fix window frame on detached window. 2014-07-12 21:26:29 +08:00
Cheng Zhao
cf1009ab30 Refactor the AddPakPaths to make it possible to set pak's scale factor.
This is needed when adding high DPI resources.
2014-07-12 21:16:13 +08:00
Cheng Zhao
8d3f615e61 win: Setup font. 2014-07-12 19:46:26 +08:00
Cheng Zhao
0f5b427648 Always shows window frame except for maximized window on Unity. 2014-07-12 11:45:24 +08:00
Cheng Zhao
14235a65a9 Merge pull request #60 from brightray/new-mac-devtools
Rewrite the devtools view for Chromium's new devtools architecture
2014-07-11 23:36:49 +08:00
Cheng Zhao
a080d2c5bb Remove GetNativeView() when compiled with views toolkit. 2014-07-11 23:32:00 +08:00
Cheng Zhao
4b57e1f4f8 Warn about using GetNativeView() in views. 2014-07-11 23:14:20 +08:00
Cheng Zhao
52c521f8b0 Remove duplicate library. 2014-07-11 23:10:57 +08:00
Cheng Zhao
891b7434db Separate the message parsing into a new function. 2014-07-11 23:03:42 +08:00
Cheng Zhao
de08cc1d52 No need for custom dealloc. 2014-07-11 22:22:03 +08:00
Cheng Zhao
e553e11226 Use shortcut way to create scoped_ptr. 2014-07-11 21:55:57 +08:00
Adam Roben
6fd2fc6d3d Merge pull request #61 from tnm/patch-1
Time goes on
2014-07-11 06:09:20 -04:00
Ted Nyman
88e168ada4 Time goes on 2014-07-11 00:39:21 -07:00
Cheng Zhao
24c1544ca5 Upgrade libchromiumcontent to 4b4bcec11a02d1c7981562cf0b8a4670c338992b. 2014-07-09 20:14:49 +08:00
Cheng Zhao
739b352de6 Only init WMState on Linux. 2014-07-09 20:06:31 +08:00
Cheng Zhao
a0ee4a9bf1 Ignore C4819 warning in VS. 2014-07-09 20:04:30 +08:00
Cheng Zhao
aba65c23f6 Give user a chance to override child process and framework path. 2014-07-09 17:07:00 +08:00
Cheng Zhao
d5283b2337 Allow access FileSystem api in devtools.
It is required by the load/save feature of profilers.
2014-07-09 15:38:53 +08:00
Cheng Zhao
1fbeb11371 Send message ack to devtools. 2014-07-09 15:34:10 +08:00
Cheng Zhao
a5bb24284e views: Follow WidgetDelegateView's convention on deleting self.
It could avoid invoking WidgetDelegate's methods when the delegate has been
deleted as a view.
2014-07-09 11:08:17 +08:00
Cheng Zhao
9747ee4411 Fix cpplint warning for obj-c header. 2014-07-09 10:38:00 +08:00
Cheng Zhao
81d31b1d49 Remove Windows's devtools implementation. 2014-07-09 10:37:54 +08:00
Cheng Zhao
0a7b1fdd87 Add new devtools messages in Chrome 35. 2014-07-09 10:26:01 +08:00
Cheng Zhao
7a196933bb views: Don't leak ViewsDelegate. 2014-07-09 10:26:01 +08:00
Cheng Zhao
651ebdde65 views: Remember bounds of devtools window. 2014-07-09 10:26:01 +08:00
Cheng Zhao
4fb4b2d7ba views: Implement undocked devtools. 2014-07-09 10:26:01 +08:00
Cheng Zhao
e574bf6d0f views: Initial docked devtools implementation. 2014-07-09 10:26:01 +08:00
Cheng Zhao
4048d491f0 views: Use chromium's custom frame view. 2014-07-09 10:26:01 +08:00
Cheng Zhao
da5daecb1d Initialize aura environment. 2014-07-09 10:26:01 +08:00
Cheng Zhao
02f52f7e20 Allow override BrowserMainParts::InitProxyResolverV8. 2014-07-09 10:26:01 +08:00
Cheng Zhao
8f3546ed30 Initialize screen for aura. 2014-07-09 10:26:01 +08:00
Cheng Zhao
bad7b95ed7 Add ViewsDelegate, required when using views::Widget on aura. 2014-07-09 10:26:01 +08:00
Cheng Zhao
2682f3db87 Ignore *_views files on mac. 2014-07-09 10:26:01 +08:00
Cheng Zhao
d59c027996 Link with chromiumviews on Linux and Windows.
Without using chromiumviews it would be quite hard to setup a fully working
environment with Aura on Linux now.
2014-07-09 10:26:01 +08:00
Cheng Zhao
48ed03eb39 Initialize Linux UI. 2014-07-09 10:26:01 +08:00
Cheng Zhao
d4e81da19a Make BrowserMainParts's overrides available on all platforms. 2014-07-09 10:26:01 +08:00
Cheng Zhao
bc6237375e Define TOOLKIT_VIEWS for Linux. 2014-07-09 10:26:01 +08:00
Cheng Zhao
7050b7944f Remove devtools view on Linux.
GTK+ has been replaced, we need to rewrite the whole thing.
2014-07-09 10:24:10 +08:00
Cheng Zhao
7f5b84fdea Aura has replaced GTK+ in Linux. 2014-07-09 10:24:10 +08:00
Cheng Zhao
563d6e87ff Fix cpplint warning. 2014-07-09 10:24:10 +08:00
Cheng Zhao
1722532e6d No need to remember dock state.
All devtools states are remembered by devtools itself now.
2014-07-09 10:24:10 +08:00
Cheng Zhao
7a2dc3fc4f mac: Make focus back to browser window when devtools is closed. 2014-07-09 10:24:10 +08:00
Cheng Zhao
2efeaa268f Place DevTools WebContents underneath inspected WebContents.
This commit has this strategy implemented on Mac.

See https://code.google.com/p/chromium/issues/detail?id=318751.
2014-07-09 10:24:10 +08:00
Cheng Zhao
7d130c9697 mac: Revert to simplest undocked-only devtools.
This makes porting Chrome's devtools easier.
2014-07-09 10:24:10 +08:00
Adam Roben
6c825042b5 Merge pull request #58 from brightray/chrome35
Update to Chrome 35
2014-07-07 14:43:14 -04:00
Adam Roben
8f367f6b35 More coding style fixes 2014-07-07 14:42:30 -04:00
Adam Roben
859051669b Make sure our copy of gyp is used
If gyp is installed on the system, gyp_main.py might find it instead of our own
version.
2014-07-07 14:42:02 -04:00
Adam Roben
e86c409e6b Update DevToolsWindow to use views and aura
This is required to make it work in Chrome 35.
2014-07-07 14:27:23 -04:00
Adam Roben
f65246b3cd Fix coding style 2014-07-07 14:27:02 -04:00
Adam Roben
8f2a2e19b5 Really fix unused-variable warnings
I misunderstood how ALLOW_UNUSED is meant to be used. Using a macro like
MSV_WARNING_SUPPRESS() would be nice, but for some reason it isn't working for
me. So now we just manually reference the variable in the code.
2014-07-07 14:21:40 -04:00
Adam Roben
5b2a62627e Silence unused variable warning on Windows 2014-07-07 13:55:10 -04:00
Adam Roben
6bae1f4b44 Set up a native screen on Windows
This is needed to prevent a crash inside aura::WindowTreeHost::InitCompositor.
2014-07-07 13:53:24 -04:00
Adam Roben
a1cf58f811 Link against chromiumviews
This is needed for InspectableWebContentsViewWin.
2014-07-07 13:53:02 -04:00
Adam Roben
8fd78b3593 Pull in generated headers from libchromiumcontent
ui/views/view.h now includes ui/accessibility/ax_enums.h, which is a generated
header.
2014-07-07 12:28:10 -04:00
Adam Roben
ae1995f849 Update libchromiumcontent for better Chrome 35 support
* vendor/libchromiumcontent ded3c0a...331dbed (2):
  > Merge pull request #48 from brightray/chrome35-brightray
  > Merge pull request #49 from brightray/linux-fix
2014-07-07 12:27:38 -04:00
Adam Roben
1269e59a35 Update for move of string conversion functions into base:: 2014-06-27 14:02:44 -04:00
Adam Roben
08c017bd7d Ignore a couple more files on Windows 2014-06-27 13:45:04 -04:00
Adam Roben
307d936d75 Update to use CR_* Windows message macros
See https://codereview.chromium.org/146833020.
2014-06-27 13:40:33 -04:00
Adam Roben
78dd3390f5 Define USE_AURA for Windows
This is true inside of libchromiumcontent, so we need to mirror that here.
2014-06-27 13:40:06 -04:00
Adam Roben
f8b44a1785 Use the MSBuild that comes with Visual Studio
See http://msdn.microsoft.com/en-us/library/hh162058.aspx
2014-06-27 12:06:48 -04:00
Adam Roben
918f38e13f Fix long line 2014-06-27 11:59:01 -04:00
Adam Roben
9602a9aed9 Fix assertion in InitializeICU on launch
We have to tell Chromium about our framework bundle earlier in the launch
sequence so it can find icudtl.dat. See
https://codereview.chromium.org/12470006
2014-06-27 11:54:28 -04:00
Adam Roben
8e7fbd604c Update for move of BuildUserAgentFromProduct in Chrome 35
See https://codereview.chromium.org/186883002
2014-06-27 11:54:28 -04:00
Adam Roben
51ac56e4c4 Update cookie store code for Chrome 35
See https://codereview.chromium.org/110883017
2014-06-27 11:54:28 -04:00
Adam Roben
afc889b883 Update NetworkDelegate for Chrome 35 2014-06-27 11:54:27 -04:00
Adam Roben
3a71958e16 Update MediaStreamDevicesController for Chrome 35
See https://codereview.chromium.org/180633008
2014-06-27 11:54:27 -04:00
Adam Roben
e003cc9a0a Update MediaCaptureDevicesDispatcher for Chrome 35
See https://codereview.chromium.org/183743021
2014-06-27 11:54:27 -04:00
Adam Roben
5b788476a5 Update for move of string symbols into base:: 2014-06-27 11:54:27 -04:00
Adam Roben
5b93dc74e6 Update BrowserContext for Chrome 35 2014-06-27 11:54:27 -04:00
Adam Roben
42b86242ea Add support for Chrome 35's "protocol interceptors"
See https://codereview.chromium.org/187223003
2014-06-27 11:54:27 -04:00
Adam Roben
500861d63d Update prefs code for Chrome 35
See https://codereview.chromium.org/64193003
2014-06-27 11:54:27 -04:00
Adam Roben
202f7bcd41 Fix include paths for WebIconURL.h
It contains #include "public/platform/WebSize.h", so we have to set up the
include path to make that work.
2014-06-27 11:54:27 -04:00
Adam Roben
ad0a5bdf80 Include Chrome's Skia config, not the default one
This ensures we get Chrome's Skia settings.
2014-06-27 11:54:27 -04:00
Adam Roben
55cfef4432 Update libchromiumcontent to Chrome 35
* vendor/libchromiumcontent 656be94...ded3c0a (1):
  > Merge pull request #47 from brightray/chrome35
2014-06-27 11:54:15 -04:00
Adam Roben
1467b18f25 Merge pull request #57 from padopolis/master
remember position and size of developer tools window
2014-06-23 16:26:03 -04:00
Rus Maxham
cca71fce9f less removal of whitespace 2014-06-23 13:16:01 -07:00
Rus Maxham
3acba90225 brightray namespaced frameAutosaveName 2014-06-23 13:12:20 -07:00
Rus Maxham
92a4b25e47 - remember position and size of developer tools window 2014-06-23 12:48:52 -07:00
Cheng Zhao
8dcaccf561 Merge pull request #56 from brightray/detached-devtools-quirks
Closing detached window should mark devtools as not visible
2014-06-17 18:31:54 +08:00
Cheng Zhao
e71927c5da Closing devtools window means it is not visible. 2014-06-17 16:51:46 +08:00
Cheng Zhao
8180075944 Merge pull request #55 from brightray/windows-attached-devtools
Implement attached devtools on Windows
2014-06-11 09:01:50 +08:00
Cheng Zhao
1b274a1fd6 Add comments on the usage of attached devtools. 2014-06-10 12:44:30 +08:00
Cheng Zhao
9a70c9bb44 Enable undocked devtools. 2014-06-10 12:35:23 +08:00
Cheng Zhao
d70d24c360 Implement setting dock side. 2014-06-10 12:03:20 +08:00
Cheng Zhao
1943d88bdc Handle focus correctly. 2014-06-10 11:37:07 +08:00
Cheng Zhao
bd0f9df96c Put devtools in split view. 2014-06-10 10:29:39 +08:00
Cheng Zhao
566022cb66 ContainerView should manage itself. 2014-06-10 10:03:35 +08:00
Cheng Zhao
b0374b6a1d Use views::View to represent web view. 2014-06-10 09:58:28 +08:00
Cheng Zhao
4e69bd1733 Add 'third_party/skia/include/core' to include_dirs. 2014-06-10 09:10:26 +08:00
Cheng Zhao
d5d923439e Update to latest libchromiumcontent. 2014-06-04 21:55:50 +08:00
Cheng Zhao
55cbf8aaf2 Merge pull request #54 from brightray/latest-gyp
Update to latest gyp.
2014-05-18 19:55:33 +08:00
Cheng Zhao
e1988d3b8e Update to latest gyp.
This fixes warnings like 'xxx.o has no symbols'.
2014-05-18 19:48:31 +08:00
Cheng Zhao
0a75ddb49f Merge pull request #52 from brightray/expose-message-dispatcher
Add InspectableWebContentsDelegate
2014-05-15 17:24:53 +08:00
Cheng Zhao
5e0dd5c687 Remove from notification center when web contents is destroyed. 2014-04-23 11:20:12 +08:00
Cheng Zhao
54060ed53d Enable delegate to override SaveToFile and AppendToFile. 2014-04-05 09:21:47 +08:00
Cheng Zhao
d2ff5ad798 Provide a way to close devtools completely. 2014-03-20 09:26:21 +08:00
Cheng Zhao
5768ff6981 Enable delegate to change the dock side. 2014-03-04 19:47:33 +08:00
Cheng Zhao
e3aaaf2643 Add InspectableWebContentsDelegate. 2014-03-04 16:26:50 +08:00
Adam Roben
967efaad58 Merge pull request #51 from brightray/osx-fd-limit
Increase the open file limit on OS X to 1024
2014-01-31 07:44:06 -08:00
Adam Roben
f7fb6371c2 Increase the open file limit on OS X to 1024
The default (256) is too low for pages that load a lot of resources all at
once. See https://codereview.chromium.org/125151 and bugs like
https://code.google.com/p/chromium/issues/detail?id=14137 and
https://code.google.com/p/chromium/issues/detail?id=151039. The new limit
matches what Chrome itself uses.
2014-01-31 10:43:38 -05:00
Adam Roben
8b80473ef9 Merge pull request #50 from brightray/debug
Fix assertions when building against Debug libchromiumcontent
2014-01-30 06:06:16 -08:00
Adam Roben
b1eed728b5 Merge pull request #49 from brightray/commit-argument
Enable passing --commit to download script
2014-01-30 06:05:31 -08:00
Adam Roben
e8de51a8dd Destroy ResourceContext on the IO thread
This matches content_shell and fixes a debug assertion (and maybe even a
crash).
2014-01-30 09:03:00 -05:00
Adam Roben
c4935acbb1 Fix debug assertions about transport_security_state
This code was added to content_shell in
https://chromiumcodereview.appspot.com/16501002 and we never picked it up.
2014-01-30 09:01:23 -05:00
Cheng Zhao
a8f34982a0 Enable passing --commit to download script. 2014-01-30 22:01:22 +08:00
Cheng Zhao
5cf32f1f9c Update libchromiumcontent for --commit argument of download script. 2014-01-30 21:58:55 +08:00
Adam Roben
dcaaeacfe3 Fix assertions in Debug builds about using NetworkDelegate on the wrong thread
We have to create it on the IO thread.
2014-01-30 08:36:54 -05:00
Cheng Zhao
dc8c14f61f Merge pull request #48 from brightray/disable-linux-clang
Add flag to disable clang under Linux.
2014-01-02 06:18:14 -08:00
Cheng Zhao
167b2f5881 '-std=gnu++11' is also needed by g++. 2014-01-01 02:29:27 +00:00
Cheng Zhao
13f816b4bb Add flag to disable clang under Linux. 2013-12-31 11:11:46 +00:00
Patrick Reynolds
37679214d1 Merge pull request #46 from brightray/linux-notifications
Linux notifications
2013-12-19 14:01:47 -08:00
Patrick Reynolds
967e8170f5 brevity and style 2013-12-19 16:01:01 -06:00
Adam Roben
076183c181 Merge pull request #47 from brightray/longer-lines
allow 100-character lines
2013-12-19 11:48:14 -08:00
Patrick Reynolds
8d2b392f07 undo some ugly line wrapping 2013-12-19 13:39:37 -06:00
Patrick Reynolds
df190caefd Merge branch 'longer-lines' into linux-notifications 2013-12-19 13:20:55 -06:00
Patrick Reynolds
46ec999b13 allow 100-character lines 2013-12-19 13:19:12 -06:00
Patrick Reynolds
4e31c0011d keep cpplint happy, mostly about line length 2013-12-19 13:06:05 -06:00
Adam Roben
de07839bb6 Update to latest libchromiumcontent
* vendor/libchromiumcontent ee2e80a...2cd1a60 (1):
  > Merge pull request #35 from brightray/content-test-suite
2013-12-19 09:08:21 -05:00
Patrick Reynolds
ef6d5dbf4e authorship 2013-12-18 23:20:00 -06:00
Patrick Reynolds
c6424672f5 comments and cleanup 2013-12-18 23:14:36 -06:00
Patrick Reynolds
04d5ed25d8 call PostClose when notification closed by click 2013-12-18 23:14:36 -06:00
Patrick Reynolds
272b3c30d3 free notifications properly 2013-12-18 23:14:36 -06:00
Patrick Reynolds
a82e9f30ed use libnotify to pop up notifications on Linux 2013-12-18 23:14:36 -06:00
Adam Roben
8aba54e71a Merge pull request #45 from brightray/fix-proxy-crash
Fix a crash introduced by #41
2013-12-15 05:54:23 -08:00
Cheng Zhao
b1dc139e4b Set the proxy service a bit earlier to avoid crash. 2013-12-15 15:00:52 +08:00
Adam Roben
dc3f2050c0 Merge pull request #44 from brightray/fix-devtools-flash
Fix flash of page while resizing devtools NSSplitView divider.
2013-12-12 07:36:16 -08:00
Cheng Zhao
e0b8935fda Remove the unused dividerHidden property of GraySplitView. 2013-12-12 23:33:50 +08:00
Cheng Zhao
39f5f52423 Fix flash of page while resizing devtools NSSplitView divider. 2013-12-12 18:46:46 +08:00
Adam Roben
e314e52393 Merge pull request #43 from brightray/arches-key
The 'ARCHS' key should be an array.
2013-12-11 13:28:11 -08:00
Cheng Zhao
1a09de0956 The 'ARCHS' key should be an array.
The ninja generator only supports setting the 'ARCHS' key as array, and
ninja does not support '$(ARCHS_STANDARD_64_BIT)' too. The 'x86_64' is
accepted by both ninja and xcodebuild, and is also used by node.
2013-12-10 23:54:46 -08:00
Adam Roben
64b487a8d5 Merge pull request #42 from brightray/devtools-is-opened
Add API to get whether the devtools is opened.
2013-12-10 18:39:47 -08:00
Cheng Zhao
b080e5c52d Rename IsDevToolsOpened to IsDevToolsViewShowing. 2013-12-10 18:38:35 -08:00
Cheng Zhao
7a5415a3b7 Fix IsDevToolsOpened when devtools is attched to pane on Linux. 2013-12-09 13:27:22 +00:00
Cheng Zhao
a8c5911094 Implement IsDevToolsOpened for Linux. 2013-12-09 09:03:41 +00:00
Cheng Zhao
de7892cd6e Add API to get whether the devtools is opened. 2013-12-09 09:03:29 +00:00
Adam Roben
afc627aae1 Merge pull request #41 from brightray/v8-proxy-resolver
Use "ProxyResolverV8" instead of "SystemProxyResolver" as proxy service
2013-12-06 10:03:02 -08:00
Cheng Zhao
0a1f756ca6 Use "ProxyResolverV8" instead of "SystemProxyResolver" as proxy service.
SystemProxyResolver is untested and could cause random crashes.
2013-12-05 02:56:28 -08:00
Cheng Zhao
cf08bb098f Update libchromiumcontent for net_with_v8. 2013-12-05 02:50:56 -08:00
Adam Roben
873f52ffe2 Merge pull request #40 from brightray/default-browser-client
Create a BrowserClient by default
2013-12-03 14:14:18 -08:00
Adam Roben
1c56afe9d8 Create a BrowserClient by default
This way applications that don't need to customize the BrowserClient get one
for free.
2013-12-03 17:13:40 -05:00
Adam Roben
837bd784aa Merge pull request #39 from brightray/mac-x64
Build 64-bit on OS X
2013-12-02 13:42:11 -08:00
Adam Roben
c9c218edc6 Update to 64-bit libchromiumcontent
* vendor/libchromiumcontent 4252769...5cce386 (1):
  > Merge pull request #31 from brightray/mac-x64
2013-12-02 16:37:06 -05:00
Adam Roben
56237a5875 Merge pull request #38 from brightray/chrome-31
Update to Chrome 31
2013-12-02 10:02:21 -08:00
Adam Roben
7e6f5aa734 Update for ui -> gfx moves in Chrome 31
See https://codereview.chromium.org/23769011.
2013-12-02 13:00:39 -05:00
Adam Roben
9c5b81bf7a Stop setting helper process names on OS X
See https://codereview.chromium.org/45253002.
2013-12-02 13:00:39 -05:00
Adam Roben
ab8cb1e3a5 Update for changes to content::CreatePersistentCookieStore in Chrome 31
I just copied how Chrome initializes this object.
2013-12-02 13:00:39 -05:00
Adam Roben
cfeddb5bcb Update for changes to net::FileProtocolHandler in Chrome 31
I just copied the way that Chrome initializes this object.
2013-12-02 13:00:39 -05:00
Adam Roben
265076f19a Update for changes to devtools in Chrome 31
browser/devtools_embedder_message_dispatcher.* came from
chrome/browser/devtools, and were modified just enough to compile within
brightray.
2013-12-02 13:00:39 -05:00
Adam Roben
1da8c37098 Update libchromiumcontent to Chrome 31
* vendor/libchromiumcontent f484ce1...4252769 (1):
  > Merge pull request #32 from brightray/chrome-31
2013-12-02 13:00:15 -05:00
Patrick Reynolds
a98d5194d9 Merge pull request #37 from brightray/virtual-initialize
make BrowserContext::Initialize virtual
2013-11-27 13:57:08 -08:00
Patrick Reynolds
711aa5282b make BrowserContext::Initialize virtual 2013-11-27 15:55:06 -06:00
Patrick Reynolds
1f2c2d416c Merge pull request #36 from brightray/linux
include library dependencies explicitly
2013-11-26 08:54:25 -08:00
Patrick Reynolds
e1b6718c39 include library dependencies explicitly
This is necessary for more recent versions of Clang, e.g., on Debian
unstable.
2013-11-26 10:51:27 -06:00
Adam Roben
c2854a4302 Merge pull request #35 from brightray/fix-black-devtools
Stop the devtools from turning black when the window gets big enough
2013-11-25 13:30:02 -08:00
Adam Roben
89795c9b14 Stop the devtools from turning black when the window gets big enough
We need to use UnderlayOpenGLHostingWindow to show the devtools to ensure they
remain visible even when they get large.
2013-11-25 16:28:57 -05:00
Adam Roben
963e0f1c76 Merge pull request #34 from brightray/cpplint
Fix all cpplint errors
2013-11-18 05:31:52 -08:00
Patrick Reynolds
470daa571c back to reinterpret_cast 2013-11-17 22:27:23 -06:00
Patrick Reynolds
9f9aeac59f safer casts, clearer if-else chain 2013-11-17 22:25:24 -06:00
Adam Roben
c9e948dc58 Make ignoring files work on Windows 2013-11-17 19:22:53 -05:00
Adam Roben
3d8b636f9e Fix remaining cpplint errors in inspectable_web_contents_view_linux.cc 2013-11-17 19:21:50 -05:00
Adam Roben
07de5ef462 Silence warnings about ui::WindowImpl's BOOL& parameters 2013-11-17 19:19:58 -05:00
Adam Roben
cdbfff2fcf Fix backwards typedef 2013-11-17 19:15:26 -05:00
Adam Roben
654f415a49 Fix cpplint errors in common/mac/foundation_util.h 2013-11-17 19:14:24 -05:00
Adam Roben
7b47a6152d Fix cpplint errors in media_capture_devices_dispatcher.cc 2013-11-17 19:14:08 -05:00
Adam Roben
d0566e6e05 Fix cpplint errors in application_info_win.cc 2013-11-17 19:13:44 -05:00
Adam Roben
4938fc62ad Fix most cpplint errors in inspectable_web_contents_view_linux.cc 2013-11-17 19:12:50 -05:00
Adam Roben
1595940723 Fix cpplint errors in devtools_window.cc 2013-11-17 19:05:21 -05:00
Adam Roben
0271ff1964 Fix cpplint errors in inspectable_web_contents_view_win.h 2013-11-17 19:03:41 -05:00
Adam Roben
ae504c319e Fix cpplint errors in content_client.h 2013-11-17 19:03:09 -05:00
Adam Roben
073b1c164b Fix cpplint errors in inspectable_web_contents_view_win.cc 2013-11-17 19:02:49 -05:00
Adam Roben
779dfd2baf Fix most cpplint errors in devtools_window.h
It's still complaining about the non-const reference in BOOL&.
2013-11-17 19:01:36 -05:00
Adam Roben
51a2779fdb Fix cpplint errors in main_delegate.cc 2013-11-17 18:58:25 -05:00
Adam Roben
32f4862e56 Fix cpplint errors in main_delegate.h 2013-11-17 18:57:54 -05:00
Adam Roben
2c1e1b039d Fix cpplint errors in main_application_bundle.h 2013-11-17 18:57:25 -05:00
Adam Roben
9306fecea8 Fix cpplint errors in content_client.cc 2013-11-17 18:56:44 -05:00
Adam Roben
6aec3006e6 Fix whitespace/comment errors 2013-11-17 18:56:07 -05:00
Adam Roben
84ae61744d Ignore cpplint errors in bry_inspectable_web_contents_view_private.h
It's not a C++ header.
2013-11-17 18:55:06 -05:00
Adam Roben
236efa8be5 Fix cpplint errors in bry_application.h 2013-11-17 18:53:34 -05:00
Adam Roben
e5e3dc6a78 Ignore .mm files for cpplint
It doesn't process them anyway.
2013-11-17 18:53:16 -05:00
Adam Roben
23bcf4099f Fix cpplint errors in inspectable_web_contents_view_linux.h 2013-11-17 18:52:02 -05:00
Adam Roben
9f82d58761 Fix cpplint errors in web_ui_controller_factory.h 2013-11-17 18:46:23 -05:00
Adam Roben
7a362b7413 Fix cpplint errors in url_request_context_getter.h 2013-11-17 18:43:46 -05:00
Adam Roben
cf4d966958 Fix cpplint errors in notification_presenter_mac.h 2013-11-17 18:43:20 -05:00
Adam Roben
d4ad45334f Turn off build/include_what_you_use
Chromium doesn't seem to use this rule.
2013-11-17 18:42:15 -05:00
Adam Roben
ec59df1a51 Fix cpplint errors in network_delegate.h 2013-11-17 18:36:34 -05:00
Adam Roben
cb684c5c6e Fix cpplint errors in inspectable_web_contents_view_mac.h 2013-11-17 18:24:36 -05:00
Adam Roben
ea689b31a4 Fix cpplint errors in inspectable_web_contents_view.h 2013-11-17 18:23:13 -05:00
Adam Roben
877a1f0371 Fix cpplint errors in inspectable_web_contents_impl.h 2013-11-17 18:22:48 -05:00
Adam Roben
0805b414e9 Fix cpplint errors in inspectable_web_contents.h 2013-11-17 18:20:54 -05:00
Adam Roben
9ac1a539ee Fix all remaining readability/namespace errors 2013-11-17 18:20:17 -05:00
Adam Roben
fd54c435a9 Fix cpplint errors in default_web_contents_delegate.h 2013-11-17 18:18:22 -05:00
Adam Roben
7bada78519 Fix cpplint errors in browser_main_parts.h 2013-11-17 18:17:23 -05:00
Adam Roben
a6ecd039e2 Fix typos 2013-11-17 18:16:41 -05:00
Adam Roben
24fbf6e2ef Build before running cpplint
Let's make sure things build before we check coding style. If it doesn't
even build, who cares about the style?
2013-11-17 18:15:45 -05:00
Adam Roben
991133b8e9 Fix cpplint errors in browser_context.h 2013-11-17 18:15:10 -05:00
Adam Roben
74661c342f Fix cpplint errors in browser_client.h 2013-11-17 18:13:10 -05:00
Adam Roben
80dab9d862 Fix cpplint errors in web_ui_controller_factory.cc 2013-11-17 18:12:05 -05:00
Adam Roben
57ae05b636 Fix cpplint errors in url_request_context_getter.cc 2013-11-17 18:11:47 -05:00
Adam Roben
843b21a3e8 Fix cpplint errors in network_delegate.cc 2013-11-17 18:09:21 -05:00
Adam Roben
784e270a4f Fix cpplint errors in inspectable_web_contents_impl.cc 2013-11-17 18:08:34 -05:00
Adam Roben
c97a22ef8d Fix cpplint errors in inspectable_web_contents.cc 2013-11-17 17:54:14 -05:00
Adam Roben
ef5992b0eb Fix cpplint errors in devtools_ui.cc 2013-11-17 17:53:38 -05:00
Adam Roben
dfb8a809ee Fix cpplint errors in default_web_contents_delegate.cc 2013-11-17 17:52:24 -05:00
Adam Roben
0c13adb134 Don't require all files to have a copyright/license header
The LICENSE file at the root of the repository is enough.
2013-11-17 17:52:05 -05:00
Adam Roben
a35a57c3c4 Fix cpplint errors in browser_main_parts.cc 2013-11-17 17:51:19 -05:00
Adam Roben
cc4aeb995b Fix cpplint errors in browser_context.cc 2013-11-17 17:42:56 -05:00
Adam Roben
101a7bfa21 Fix cpplint errors in browser_client.cc 2013-11-17 17:39:01 -05:00
Adam Roben
43f3d0acdc Run cpplint as part of our CI build
This will help ensure a consistent C++ coding style.
2013-11-17 17:38:09 -05:00
Adam Roben
904cb1a564 Merge pull request #33 from brightray/linux
builds on Linux
2013-11-17 14:03:56 -08:00
Patrick Reynolds
ceb8113ca6 current libchromiumcontent 2013-11-16 01:14:51 -06:00
Patrick Reynolds
5ae0b3094c current libchromiumcontent 2013-11-16 00:49:53 -06:00
Patrick Reynolds
c0543d9b46 current libchromiumcontent 2013-11-15 23:04:02 -06:00
Patrick Reynolds
a18842de1a give member variables trailing _
- also, reorder member variables to come after methods
2013-11-15 22:22:25 -06:00
Patrick Reynolds
7e1a4003df don't force all applications to link libencryptor.a 2013-11-15 22:18:59 -06:00
Patrick Reynolds
282639a79a implement dev tools 2013-11-15 14:23:52 -06:00
Patrick Reynolds
85a86a9621 current libchromiumcontent 2013-11-13 23:50:23 -06:00
Patrick Reynolds
3b3d6b2938 current libchromiumcontent 2013-11-13 23:48:06 -06:00
Patrick Reynolds
cbb00f77c2 current libchromiumcontent 2013-11-13 23:22:50 -06:00
Patrick Reynolds
616cb8212d current libchromiumcontent 2013-11-13 22:17:02 -06:00
Patrick Reynolds
236e993ac5 use linux branch of libchromiumcontent 2013-11-13 01:45:08 -06:00
Patrick Reynolds
e6cdeead3e link libencryptor 2013-11-13 00:42:14 -06:00
Patrick Reynolds
5e7359bc5a don't build Linux sources on other platforms 2013-11-12 11:51:25 -06:00
Patrick Reynolds
80cdf77a77 use merged master of libchromiumcontent 2013-11-12 11:43:29 -06:00
Patrick Reynolds
f6784a1801 move gtk dependency to brightray 2013-11-12 10:19:42 -06:00
Patrick Reynolds
72b41ed31b pick up chrome_sandbox changes 2013-11-11 18:15:22 -06:00
Patrick Reynolds
7ebb19b9b1 use linux branch of libchromiumcontent 2013-11-11 16:34:27 -06:00
Patrick Reynolds
90db457258 move -fno-rtti into brightray.gypi target_defaults 2013-11-09 01:03:46 -06:00
Patrick Reynolds
6053911bd2 Merge branch 'master' into linux 2013-11-08 20:53:43 -06:00
Patrick Reynolds
c6ce51863a implement GetNativeView 2013-11-07 23:42:15 -06:00
Patrick Reynolds
90e619a6d9 fix typo 2013-11-07 17:25:51 -06:00
Patrick Reynolds
04b9bd21f8 WIP: builds (but displys nothing) on Linux 2013-11-07 14:02:35 -06:00
Adam Roben
bd02203151 Merge pull request #32 from brightray/appcache-hang
Fix a hang on quit when application cache is used
2013-10-23 09:17:39 -07:00
Adam Roben
ae1e26bddd Fix a hang on quit when application cache is used
If you navigated to a page that used the HTML Application Cache, you'd see a
hang on quit with a backtrace like so:

+     2825 content::ContentMain(int, char const**, content::ContentMainDelegate*)  (in libchromiumcontent.dylib) + 64  [0xb33190]
+       2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x96b261  [0xb34261]
+         2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x96a409  [0xb33409]
+           2825 content::BrowserMain(content::MainFunctionParams const&)  (in libchromiumcontent.dylib) + 200  [0x14290b8]
+             2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x1265426  [0x142e426]
+               2825 content::BrowserMainLoop::~BrowserMainLoop()  (in libchromiumcontent.dylib) + 17  [0x14294a1]
+                 2825 content::BrowserMainLoop::~BrowserMainLoop()  (in libchromiumcontent.dylib) + 357  [0x1429625]
+                     2825 brightray::BrowserMainParts::~BrowserMainParts()  (in ) + 70  [0x68df6]
+                       2825 scoped_ptr<brightray::BrowserContext, base::DefaultDeleter<brightray::BrowserContext> >::~scoped_ptr()  (in ) + 23  [0x68ff7]
+                         2825 scoped_ptr<brightray::BrowserContext, base::DefaultDeleter<brightray::BrowserContext> >::~scoped_ptr()  (in ) + 23  [0x69297]
+                           2825 base::internal::scoped_ptr_impl<brightray::BrowserContext, base::DefaultDeleter<brightray::BrowserContext> >::~scoped_ptr_impl()  (in ) + 23  [0x692b7]
+                             2825 base::internal::scoped_ptr_impl<brightray::BrowserContext, base::DefaultDeleter<brightray::BrowserContext> >::~scoped_ptr_impl()  (in ) + 50  [0x692f2]
+                               2825 base::DefaultDeleter<brightray::BrowserContext>::operator()(brightray::BrowserContext*) const  (in ) + 46  [0x6916e]
+                                   2825 brightray::BrowserContext::~BrowserContext()  (in ) + 127  [0x672bf]
+                                     2825 base::SupportsUserData::~SupportsUserData()  (in libchromiumcontent.dylib) + 57  [0xccc019]
+                                       2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0xb03230  [0xccc230]
+                                         2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0xb0324e  [0xccc24e]
+                                           2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x14c4239  [0x168d239]
+                                             2825 content::StoragePartitionImpl::~StoragePartitionImpl()  (in libchromiumcontent.dylib) + 17  [0x16899a1]
+                                               2825 content::StoragePartitionImpl::~StoragePartitionImpl()  (in libchromiumcontent.dylib) + 491  [0x1689bab]
+                                                 2825 content::ChromeAppCacheService::DeleteOnCorrectThread() const  (in libchromiumcontent.dylib) + 66  [0x1424f32]
+                                                   2825 content::ChromeAppCacheService::~ChromeAppCacheService()  (in libchromiumcontent.dylib) + 50  [0x1424e32]
+                                                     2825 appcache::AppCacheService::~AppCacheService()  (in libchromiumcontent.dylib) + 301  [0x2b8ad2d]
+                                                       2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x29c9b81  [0x2b92b81]
+                                                         2825 ???  (in libchromiumcontent.dylib)  load address 0x1c9000 + 0x29c9da4  [0x2b92da4]
+                                                           2825 appcache::AppCacheDiskCache::~AppCacheDiskCache()  (in libchromiumcontent.dylib) + 17  [0x2b78c71]
+                                                             2825 appcache::AppCacheDiskCache::~AppCacheDiskCache()  (in libchromiumcontent.dylib) + 135  [0x2b78d17]
+                                                               2825 disk_cache::BackendImpl::~BackendImpl()  (in libchromiumcontent.dylib) + 17  [0x25979a1]
+                                                                 2825 disk_cache::BackendImpl::~BackendImpl()  (in libchromiumcontent.dylib) + 305  [0x2597af1]
+                                                                   2825 base::WaitableEvent::Wait()  (in libchromiumcontent.dylib) + 50  [0xccd942]
+                                                                     2825 base::WaitableEvent::TimedWait(base::TimeDelta const&)  (in libchromiumcontent.dylib) + 347  [0xccdb3b]
+                                                                       2825 base::ConditionVariable::Wait()  (in libchromiumcontent.dylib) + 35  [0xcccbb3]
+                                                                         2825 pthread_cond_wait$UNIX2003  (in libsystem_c.dylib) + 71  [0x964d3089]
+                                                                           2825 _pthread_cond_wait  (in libsystem_c.dylib) + 833  [0x9644d280]
+                                                                             2825 __psynch_cvwait  (in libsystem_kernel.dylib) + 10  [0x94b8e8e2]

BackendImpl was waiting on BrowserThread::CACHE, but that thread had already
been stopped. The solution is to destroy the BrowserContext before threads have
been stopped. We now do this in BrowserMainParts::PostMainMessageLoopRun, which
matches content_shell.
2013-10-23 12:16:25 -04:00
Adam Roben
8ff43b034c Merge pull request #13 from brightray/devtools-scheme
Use "chrome-devtools://" scheme for devtools
2013-10-11 07:29:27 -07:00
Cheng Zhao
f623ddf7fc Cleanup unused headers, data members and functions. 2013-10-11 07:17:53 -04:00
Cheng Zhao
2cd6dd791e Setup devtools in the correct phase.
* RegisterDevToolsClientHostFor should be called right after the agent_host and
  the frontend host are created.
* SetupDevToolsFrontendClient should be called before the devtools window is
  going to start navigation.
2013-10-11 07:17:03 -04:00
Cheng Zhao
9d29c8eb7c Use the "chrome-devtools://" scheme to open devtools. 2013-10-10 16:56:52 -04:00
Adam Roben
c949fd931c Merge pull request #31 from brightray/less-flashing
Fix flashing in devtools views
2013-10-10 13:29:14 -07:00
Adam Roben
6b9e61c65d Fix flashing in WebContents we create
If the embedding app creates them it's up to them to fix this.
2013-10-10 16:24:22 -04:00
Adam Roben
8ae459e9fa Work around http://crbug.com/279472 for devtools views 2013-10-10 14:17:30 -04:00
Adam Roben
c0e744db78 Update libchromiumcontent to use Xcode's clang
* vendor/libchromiumcontent 759a8d0...21d99bd (1):
  > Merge pull request #28 from brightray/xcode-clang
2013-10-09 12:58:36 -04:00
Adam Roben
d06ac20947 Update to latest libchromiumcontent
* vendor/libchromiumcontent bfb2d7b...759a8d0 (1):
  > Remove googleurl/ from the distribution
2013-10-08 13:20:43 -04:00
Adam Roben
1f1f93465b Make MediaStreamDevicesController::Accept/Deny public again
Clients rely on this.
2013-10-07 17:04:40 -04:00
Adam Roben
b3b4ab2c70 Update ICU header include path
I should have done this as part of #30.
2013-10-07 17:02:35 -04:00
Adam Roben
4e5f6a10f9 Merge pull request #30 from brightray/chrome-30
Update to Chrome 30
2013-10-07 13:36:23 -07:00
Adam Roben
9165424348 Update ResourceContext for Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=215991.
2013-10-07 16:31:58 -04:00
Adam Roben
4d6ee2c416 URLRequestContextStorage::set_http_server_properties takes a scoped_ptr in Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=212466.
2013-10-07 16:31:58 -04:00
Adam Roben
d1623535e8 Update browser/media/* for Chrome 30
I took the latest versions of these files from chrome/browser/media,
then pared them down to remove all Chrome-isms and uses of UI to prompt
the user about allowing access to devices.
2013-10-07 16:31:58 -04:00
Adam Roben
aa4f991659 Add DevToolsFrontendHostDelegate indexing methods from Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=215622.
2013-10-07 16:31:57 -04:00
Adam Roben
4d59060657 BrowserContext::RequestMIDISysExPermission was added in Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=211437.
2013-10-07 16:31:57 -04:00
Adam Roben
c1c4344879 BrowserContext::GetSpeechRecognitionPreferences is gone in Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=210616.
2013-10-07 16:31:57 -04:00
Adam Roben
eb446fc707 content::BrowserContext::GetPath is a const member function in Chrome 30
See http://src.chromium.org/viewvc/chrome?view=revision&revision=211931.
2013-10-07 16:31:57 -04:00
Adam Roben
64a5ce6e15 Update for move of scoped_nsobject header and namespace
See http://src.chromium.org/viewvc/chrome?view=revision&revision=207616.
2013-10-07 16:31:57 -04:00
Adam Roben
1e99ec9aed Update #includes for moves of string-related headers
See http://src.chromium.org/viewvc/chrome?view=revision&revision=205050.
2013-10-07 16:31:57 -04:00
Adam Roben
0575987343 Update to Chrome 30
* vendor/libchromiumcontent a56056d...bfb2d7b (1):
  > Merge pull request #27 from brightray/chrome-30
2013-10-07 16:31:42 -04:00
Adam Roben
8c7de2259b Update to latest libchromiumcontent
* vendor/libchromiumcontent ccec3a4...a56056d (1):
  > Stop exporting GURL symbols from test_support_chromiumcontent
2013-08-23 17:30:53 -04:00
Adam Roben
345bc3fc6b Merge pull request #29 from brightray/chrome-29
Update to Chrome 29
2013-08-23 14:03:13 -07:00
Adam Roben
b24d7d7c76 Update utf_string_conversions.h path in another place 2013-08-23 17:01:18 -04:00
Adam Roben
2c030a419d Update for webkit header moves 2013-08-23 16:56:53 -04:00
Adam Roben
7d3f371b51 Update for move of MessageLoop into base namespace 2013-08-23 16:56:41 -04:00
Adam Roben
4946ec9081 Update for utf_string_conversions.h move in Chrome 29 2013-08-23 16:56:30 -04:00
Adam Roben
7dd1b8195f Update libchromiumcontent to Chrome 29
* vendor/libchromiumcontent 5ffcb39...ccec3a4 (2):
  > Merge pull request #25 from brightray/29.0.1547.57
  > Switch back to using s3put on Linux
2013-08-23 16:56:05 -04:00
Adam Roben
79a1731921 Merge pull request #28 from brightray/vendor-gyp
Include gyp as a submodule
2013-08-23 04:52:20 -07:00
Adam Roben
f17f9d932c Include gyp as a submodule
This makes it so you don't have to install gyp on your system before you
can build.
2013-08-23 07:48:37 -04:00
Adam Roben
710d0fc6c5 Make overriding BrowserContext::RegisterPrefs actually work
We were calling it before derived classes' vtables were set up. Now we wait to
call it until the BrowserContext is fully constructed.
2013-08-15 16:07:14 -04:00
Adam Roben
1161da6527 Mention that Clang 3.0 is needed on Linux 2013-08-14 08:17:52 -04:00
Adam Roben
3df85640a6 Merge pull request #26 from brightray/linux
Get a basic Linux build working
2013-08-14 05:16:15 -07:00
Adam Roben
9638e3956f Don't use base::DIR_APP_DATA on Linux
It doesn't exist. Instead, match content_shell by putting
application-specific data in $XDG_CONFIG_HOME or ~/.config.
2013-08-14 08:14:54 -04:00
Adam Roben
22ea2073df Compile as C++11 on Linux 2013-08-14 08:14:54 -04:00
Adam Roben
7f3afbaf3d Force building with Clang on Linux to get C++11 support 2013-08-14 08:14:54 -04:00
Adam Roben
d27a984378 Define USE_X11 on Linux 2013-08-06 17:29:08 -04:00
Adam Roben
3076781c8a Build using make on Linux 2013-08-06 17:25:07 -04:00
Adam Roben
b596adc237 Start teaching script/build about Linux 2013-08-06 16:49:59 -04:00
Adam Roben
efad174995 Update libchromiumcontent to get better Linux support
* vendor/libchromiumcontent be71317...5ffcb39 (2):
  > Delete commented-out code in script/download
  > Teach script/download about Linux
2013-08-06 16:43:21 -04:00
Adam Roben
af20c55519 Spew less when script/cibuild fails 2013-08-06 16:42:21 -04:00
Adam Roben
6841801538 Spew less when script/bootstrap fails 2013-08-06 16:39:11 -04:00
Adam Roben
a61fa01c5d Update libchromiumcontent to get basic Linux support
* vendor/libchromiumcontent 33472d4...be71317 (4):
  > Merge pull request #24 from brightray/linux
  > Fix gyp syntax
  > Fix Release linker error on Linux
  > Make sure we always apply patches in alphabetical order
2013-07-31 16:27:00 -07:00
Adam Roben
53ac82b6c1 Merge pull request #25 from brightray/getusermedia
Enable navigator.webkitGetUserMedia()
2013-07-31 11:52:51 -07:00
Adam Roben
c2623d2bdc Fix typos 2013-07-31 11:52:21 -07:00
Adam Roben
2595335045 Enable navigator.webkitGetUserMedia()
The code came from chrome/browser/media, but was simplified to remove
dependencies on other parts of chrome/ and to always allow the media stream
request.
2013-07-31 11:08:45 -07:00
Adam Roben
bd648ce58f Put ICU headers on the include path for embedders 2013-07-25 12:31:41 -04:00
Adam Roben
d32a2fbc97 Update libchromiumcontent to get ICU headers
* vendor/libchromiumcontent ee4cea0...33472d4 (5):
  > Export ICU headers
  > When `gclient sync` fails, revert all local changes and try again
  > Merge pull request #23 from brightray/chromiumviews_pdb
  > Merge pull request #22 from brightray/cygwin2
  > Update to Chrome 28.0.1500.71
2013-07-25 12:22:58 -04:00
Adam Roben
56b904947b Avoid a crash when starting a download by disallowing downloads
Chromium crashes when starting a download if a content::DownloadManagerDelegate
is not provided. We now provide a default implementation of
content::DownloadManagerDelegate which disallows all downloads.
2013-07-24 07:56:55 -04:00
Adam Roben
bacf11d53f Rename the Helper process to Renderer/Plug-In Host/Utility as appropriate
This matches Chrome.
2013-07-17 11:04:45 -04:00
Adam Roben
33b574b434 Allow clients to supply their own NetworkDelegate implementation 2013-07-17 10:21:33 -04:00
Adam Roben
09efd19d2f Update to latest libchromiumcontent
* vendor/libchromiumcontent 929f9c9...ee4cea0 (2):
  > Merge pull request #21 from brightray/ui_views
  > Include all headers from testing/
2013-07-09 07:48:17 -04:00
Adam Roben
29237e21ce Always build 32-bit in Xcode
libchromiumcontent is 32-bit-only, so we need to match.
2013-07-08 12:17:48 -04:00
Adam Roben
a77a170cab Merge pull request #24 from brightray/skmatrix
Some headers are including SkMtrix.h, fix compilation errors for them.
2013-07-08 05:54:10 -07:00
Cheng Zhao
8e0f5624dd Some headers are including SkMtrix.h, fix compilation errors for them. 2013-07-05 12:18:34 +08:00
Adam Roben
b17e63d13c Update libchromiumcontent to be based on Chrome 28
* vendor/libchromiumcontent f4f8a7e...929f9c9 (3):
  > Merge pull request #19 from brightray/chrome-28
  > Merge pull request #18 from brightray/encryptor
  > Merge pull request #17 from brightray/cygwin
2013-07-02 10:11:28 -04:00
Adam Roben
6b68847a0d Merge pull request #23 from brightray/ninja
Fix building with ninja
2013-07-02 07:03:26 -07:00
Cheng Zhao
5e807cffc8 Use abusolute path when linking to external libraries. Fixes #22.
The ninja generator of gyp behaves strangely on the 'libraries' field of link
settings, for example, specifying path to an external library works well on
both xcodebuild and msvc generators, but the ninja generator would link to
the wrong path (it can neither translate relative path correctly, nor convert
the command line parameter to the '-lxxx' form).

The only way to make all generators work on all platforms is to use abusolute
paths for external libraries.
2013-07-02 15:24:24 +08:00
Adam Roben
3d00cded27 Update to latest libchromiumcontent
* vendor/libchromiumcontent fc02d93...f4f8a7e (4):
  > Include encryptor.lib and its symbols and headers in the distribution
  > Build encryptor.lib on Windows
  > Revert all changes before building if any unexpected files are modified
  > Export headers from cc/
2013-06-06 18:50:55 -04:00
Adam Roben
496b246405 Give BrowserContext subclasses access to GetPath() 2013-06-06 18:50:37 -04:00
Adam Roben
57066d414c Merge pull request #20 from brightray/windows-dev-tools
Implement undocked dev tools on Windows
2013-06-04 11:36:41 -07:00
Adam Roben
9ad77c4a38 Implement undocked dev tools on Windows
DevToolsWindow represents a vanilla top-level window that shows the dev tools.
It uses ui::WindowImpl to implement window functionality, which requires a
newer libchromiumcontent which contains the necessary headers for using that
class, and requires some modifications to brightray.gypi to make WTL's  headers
available.

* vendor/libchromiumcontent 2f53a96...fc02d93 (4):
  > Export third_party/wtl/include headers
  > Export test_support_base.pdb and test_support_content.pdb
  > Fix linker errors with test_support_base on Windows
  > Fix linker errors with base_prefs_test_support on Windows
2013-06-04 14:33:29 -04:00
Adam Roben
4c9870e753 Fix debug assertion about performing IO on the UI thread
We were querying the application's FILEVERSIONINFO every time we needed to
figure out the path for storing BrowserContext data. Now we cache the path the
first time we need it, which is during application initialization and before IO
prohibitions begin.
2013-06-04 14:17:16 -04:00
Adam Roben
14edfc7f7c Merge pull request #19 from brightray/file-protocol-handler
Set file and data protocol handler.
2013-06-03 06:27:14 -07:00
Cheng Zhao
27d55031f4 Set file and data protocol handler. 2013-06-02 00:25:04 +08:00
Adam Roben
3d12cb2c64 Don't crash when HTML notifications are used on Windows
Eventually we'll implement real support for this, but for now not crashing is
more important.
2013-05-31 08:05:14 -04:00
Adam Roben
2582e8561c Update to Chromium r202921
* vendor/libchromiumcontent 0d02a8d...2f53a96 (1):
  > Merge pull request #14 from brightray/latest-chromium
2013-05-30 15:07:32 -04:00
Adam Roben
f88634fea5 Pull in libchromiumcontent's Windows test support
* vendor/libchromiumcontent 3cbc11e...0d02a8d (1):
  > Merge pull request #13 from brightray/windows-test-support
2013-05-29 13:15:29 -04:00
Adam Roben
a24c390318 Use the user-visible version number in our user agent string
I.e., use CFBundleShortVersionString instead of CFBundleVersion on OS X and
ProductVersion instead of FileVersion on Windows.

This is generally more useful (although slightly lower granularity) than the
machine-readable version number.
2013-05-28 15:42:52 -04:00
Adam Roben
54419bbbb1 Set the user agent string correctly on Windows
We use the main executable's ProductName and FileVersion resources to build the
user agent string.
2013-05-28 15:24:55 -04:00
Adam Roben
70af1f351f Automatically exclude platform-specific files for all targets
This way embedding applications don't have to do this themselves, as long as
they follow our naming conventions.
2013-05-28 14:27:57 -04:00
Adam Roben
3070c6a723 Merge pull request #18 from brightray/better-windows-defaults
Improve Windows default build settings
2013-05-28 09:01:25 -07:00
Adam Roben
427ba96062 Set up linker defaults for Windows
These match Chromium's defaults.
2013-05-28 11:56:50 -04:00
Adam Roben
3f40456161 Make our Windows build settings actually take effect
We need to put them inside the target_defaults dictionary. Now that these
settings are turned on, we need to ignore some warnings that Chromium ignores.
2013-05-28 11:56:17 -04:00
Adam Roben
37d847c416 Fix linker errors about __imp___CrtDbgReportW
We were linking against the release CRT but defining _DEBUG, which should only
be defined when using the debug CRT.
2013-05-28 11:55:25 -04:00
Adam Roben
51cb56e604 Get libchromiumcontent back on master 2013-05-22 16:58:59 -04:00
Adam Roben
cf14f09228 Stub out InspectableWebContentsViewWin
This class doesn't implement any devtools behavior yet. Right now it's just a
glorified wrapper around a content::WebContents. But it's enough to show web
content on screen on Windows!
2013-05-22 16:57:32 -04:00
Adam Roben
b970e9d5c3 Only compile HandleKeyboardEvent on Mac 2013-05-22 16:08:40 -04:00
Adam Roben
f2ff1fb406 Merge pull request #17 from brightray/windows-brightray_example
Changes needed for building brightray_example on Windows
2013-05-22 12:08:13 -07:00
Adam Roben
d54f4e2bdd Update libchromiumcontent to get icudt.dll
* vendor/libchromiumcontent 31efc77...e436974 (2):
  > Export icudt.dll for Windows clients
  > Export libGLESv2.dll on Windows
2013-05-22 14:04:28 -04:00
Adam Roben
f2909b0d90 Set up the resource bundle on Windows 2013-05-22 14:00:43 -04:00
Adam Roben
3713ea6403 Exclude platform-specific files from other platforms 2013-05-22 14:00:43 -04:00
Adam Roben
1ec7280663 Link against the DLL version of the CRT
* vendor/libchromiumcontent 04ccdd8...31efc77 (3):
  > Use the DLL version of the CRT
  > Generate libchromiumcontent-symbols.zip on Windows
  > Fix exporting of WebKit symbols
2013-05-22 14:00:31 -04:00
Adam Roben
18b64f375c Link client apps against base_static.lib
This is required to get base::win::PEImage, which is required by sandboxing
code.

* vendor/libchromiumcontent c973a7c...04ccdd8 (1):
  > Export base_static.lib for Windows clients
2013-05-22 13:55:56 -04:00
Adam Roben
6a8ee865f4 Fix linker errors about missing Win32 APIs 2013-05-22 13:55:56 -04:00
Adam Roben
7e03f93dcd Add a stub application_info_win.cc 2013-05-22 13:55:56 -04:00
Adam Roben
12d01e4fd5 ifdef out a bunch of Mac-specific code
This is a hacky solution but helps us deal with other compiler/linker errors.
2013-05-22 13:55:56 -04:00
Adam Roben
12773cff6e Fix linker errors about missing registry APIs 2013-05-22 13:55:54 -04:00
Adam Roben
2813bef741 Link against sandbox_static.lib
* vendor/libchromiumcontent 15ada44...c973a7c (3):
  > Create and export sandbox_static.lib for Windows clients
  > Export content/app/startup_helper_win.cc to clients
  > Rename dist/include to dist/src
2013-05-22 13:55:12 -04:00
Adam Roben
7f463b8962 Give clients access to libchromiumcontent's src directory
* vendor/libchromiumcontent 15ada44...65b85bf (2):
  > Export content/app/startup_helper_win.cc to clients
  > Rename dist/include to dist/src
2013-05-22 13:55:12 -04:00
Adam Roben
4c0765b413 Use __declspec(dllimport) for functions from chromiumcontent.dll 2013-05-22 13:55:11 -04:00
Adam Roben
7b65fe4948 Link against chromiumcontent.dll
* vendor/libchromiumcontent 4aae27b...15ada44 (3):
  > Include chromiumcontent.dll's import library
  > Export sandbox/ headers
  > Mention that Python is required to build
2013-05-22 13:55:11 -04:00
Adam Roben
35f4dfe4b0 Add some more default build settings for Windows 2013-05-22 13:55:02 -04:00
Adam Roben
3cf6e5eda2 Make sure dependents can #include "brightray/foo.h" 2013-05-22 13:54:07 -04:00
Adam Roben
f387535eae Beef up .gitignore 2013-05-22 13:54:07 -04:00
Adam Roben
d6b4e430f8 Update links after move to brightray org 2013-05-21 14:57:52 -04:00
Adam Roben
df24a0a816 Merge pull request #16 from brightray/windows-build
Get a basic Windows build working
2013-05-16 06:22:23 -07:00
Adam Roben
e531f46a4b Ignore files created by Visual Studio 2013-05-16 09:16:29 -04:00
Adam Roben
d07c45080d Don't use range-based for loops
VS2010 doesn't support them :-(
2013-05-16 09:15:57 -04:00
Adam Roben
5fa005d5da Fix Windows build error about passing std::string to base::FilePath::Append 2013-05-16 09:15:56 -04:00
Adam Roben
a6c5cb04f7 Use FILE_PATH_LITERAL to fix build errors 2013-05-16 09:15:56 -04:00
Adam Roben
35199ba31f MSVC doesn't allow override on destructors 2013-05-16 09:15:55 -04:00
Adam Roben
ae7331da82 Add some build defaults for Windows
These came from Chromium's build/common.gypi file.
2013-05-16 09:15:55 -04:00
Adam Roben
689496afb8 Make sure sk_stdint.h is in the include path 2013-05-16 09:15:54 -04:00
Adam Roben
a5b118ce34 Use MSBuild to build on Windows 2013-05-16 09:15:54 -04:00
Adam Roben
3d83416c04 Ignore .sln/.vcxproj files created by gyp 2013-05-16 09:15:47 -04:00
Adam Roben
fd6e43baf9 Make script/build actually run gyp on Windows
We don't yet build, but we're getting closer.
2013-05-16 09:15:05 -04:00
Adam Roben
0dfd5ec320 Ensure consistent line endings in all files 2013-05-16 09:15:05 -04:00
Adam Roben
39f0694cce Add prerequisites to the README 2013-05-16 09:15:04 -04:00
Adam Roben
90e1370d7f Update libchromiumcontent for Windows support
* vendor/libchromiumcontent e70a88f...4aae27b (2):
  > Merge pull request #11 from brightray/windows-build
  > Merge pull request #10 from brightray/windows-scripts
2013-05-16 08:54:01 -04:00
Adam Roben
586141f51f Merge pull request #15 from brightray/cibuild
Get brightray building in CI
2013-05-14 09:24:56 -07:00
Adam Roben
33d4b7398a Add script/cibuild
This just ensures that we can bootstrap and build.
2013-05-14 12:20:50 -04:00
Adam Roben
a922d8a529 Update for libchromiumcontent repo transfer 2013-05-14 09:26:40 -04:00
Adam Roben
de9b0a008b Fix script/bootstrap
* vendor/libchromiumcontent 588f368...e70a88f (1):
  > Make script/download work when we're a submodule
2013-05-14 08:31:10 -04:00
Adam Roben
ebabb0aef2 Merge pull request #12 from aroben/python
Rewrite scripts in Python
2013-05-14 05:04:47 -07:00
Adam Roben
46c887b62d Rewrite script/build in Python
The script is still Mac-specific, but this will make it easier to add
Windows support later.
2013-05-13 18:59:03 -04:00
Adam Roben
c29074ff94 Rewrite script/boostrap in Python
This is the first step toward supporting Windows.
2013-05-13 18:59:03 -04:00
Adam Roben
0526aa45e7 Update libchromiumcontent to get its Python scripts
* vendor/libchromiumcontent 3f6f01c...588f368 (17):
  > Merge pull request #8 from aroben/menu-controller
  > Merge pull request #6 from aroben/shell_dialogs
  > Fix typo in script/create-dist
  > Merge pull request #5 from aroben/python
  > Add libtest_support_chromiumcontent.a
  > Build and distribute libgtest.a
  > Stop trying to compile SQLitePersistentCookieStore separately
  > Update to latest Chromium trunk revision
  > Merge pull request #4 from aroben/atom
  > Actually compile the base/prefs code
  > Export symbols from base/prefs
  > Compile and export SQLitePersistentCookieStore
  > Export webkit/plugins headers
  > Export skia/ext headers
  > Export ui/surface headers, too
  > Export Skia symbols from libchromiumcontent
  > Update to match chrome/trunk
2013-05-13 18:58:44 -04:00
Adam Roben
57ed898128 Merge pull request #9 from aroben/frontend-host-crash
frontend_host_ should be destructed after devtools_web_contents_.
2013-05-01 07:50:39 -07:00
Cheng Zhao
082f88ed3c frontend_host_ should be destructed after devtools_web_contents_. 2013-05-01 22:00:20 +08:00
Adam Roben
676e92e322 Fix crashes when dragging links
Turns out we needed to implement ContentClient::GetNativeImageNamed, which is
called to get the default drag image.
2013-04-26 22:49:58 -04:00
Adam Roben
73d467d657 Turn off C++ exceptions
We weren't using them anyway, and don't intend to. This matches Chromium.
2013-04-26 14:13:45 -04:00
Adam Roben
6908eecd0c Allow embedders to specify extra .pak files 2013-04-26 11:04:51 -04:00
Adam Roben
3b879a6178 Allow embedders to provide their own ContentClient subclass 2013-04-24 18:30:47 -04:00
Adam Roben
c27ac79969 Update to latest libchromiumcontent
* vendor/libchromiumcontent 4ae397b...d5cef3b (1):
  > Add libtest_support_chromiumcontent.a
2013-04-24 15:56:43 -04:00
Adam Roben
94d7b383c5 Fix DCHECK() assertion in BrowserClient 2013-04-24 10:54:53 -04:00
Adam Roben
48878af0db Let embedders add their own protocol handlers 2013-04-23 15:50:17 -04:00
Adam Roben
67081a64b0 Pull in latest libchromiumcontent to get gtest
* vendor/libchromiumcontent 0d607ee...4ae397b (1):
  > Build and distribute libgtest.a
2013-04-23 13:27:29 -04:00
Adam Roben
7d9e271333 Merge pull request #8 from aroben/atom
InspectableWebContents should be able to accept existing WebContents.
2013-04-22 05:47:14 -07:00
Cheng Zhao
a5e1c46674 💄 2013-04-22 20:41:58 +08:00
Cheng Zhao
082aa61870 InspectableWebContents should be able to accept existing WebContents. 2013-04-20 13:24:45 +08:00
Adam Roben
80cb76355c Update to latest libchromiumcontent
* vendor/libchromiumcontent b6a0d85...0d607ee (3):
  > Stop trying to compile SQLitePersistentCookieStore separately
  > Update to latest Chromium trunk revision
  > Merge pull request #4 from aroben/atom
2013-04-17 23:27:53 -04:00
Adam Roben
0b5ab8e43d Size dev tools correctly when starting out docked to the right 2013-04-16 21:06:07 -04:00
Adam Roben
d9df9bcf47 Send focus/blur events when an InspectableWebContents's window gains/loses focus
We listen for key window chages and inform content::RenderWidgetHostView as
appropriate.
2013-04-09 15:11:16 -04:00
Adam Roben
3c513d6ae8 Remember where the dev tools were docked between launches 2013-04-08 13:53:53 -04:00
Adam Roben
a2a2cd1936 Add preferences support for embedding applications
Applications can use brightray::BrowserContext::prefs to get access to
preferences that are persisted between launches.
brightray::BrowserContext::RegisterPrefs must be used to register preferences
before they're accessed.

Updated libchromiumcontent to pull in preferences support.

* vendor/libchromiumcontent 3944c1c...b6a0d85 (2):
  > Actually compile the base/prefs code
  > Export symbols from base/prefs
2013-04-08 13:53:42 -04:00
Adam Roben
5db043f7d4 Strip whitespace from the application name in the user agent
Having whitespace in the application name makes the user agent hard to parse.
2013-04-08 12:42:50 -04:00
Adam Roben
d2c04779e4 Include the application's version number in the user agent string 2013-04-08 12:41:30 -04:00
Adam Roben
3cef0dd98c Allow embedders to provide their own BrowserContext implementation 2013-04-01 20:10:00 -04:00
Adam Roben
080d9f59e9 Implement Notification.close() 2013-03-29 09:36:07 -04:00
Adam Roben
dde3c3f78f Make NotificationID more useful 2013-03-29 09:23:10 -04:00
Adam Roben
e59c549e62 Fire a click event when a notification is clicked 2013-03-29 09:02:40 -04:00
Adam Roben
c1463f9799 Don't fire the show event until the notification is actually shown 2013-03-29 08:59:21 -04:00
Adam Roben
e592f3ffa1 Add CreateUserNotification helper function 2013-03-29 08:32:00 -04:00
Adam Roben
08f393437e Show notifications even when the app is focused
It's a little icky to be taking over global state (NSUserNotificationCenter's
delegate) like this, but until we have evidence that it gets in someone's way
it's the pragmatic thing to do.
2013-03-28 18:09:04 -04:00
Adam Roben
651ab18a21 Turn NotificationPresenter into an abstract base class
This will allow us to have Mac-specific member variables without a bunch of
ifdefs.
2013-03-28 18:03:58 -04:00
Adam Roben
3c41af84a1 Move notification-related code into a new NotificationPresenter class 2013-03-28 17:50:07 -04:00
Adam Roben
1328c85eef Fire a show event when a notification is shown 2013-03-28 17:50:07 -04:00
Adam Roben
0893253188 Add bare-bones HTML notifications support
Calling Notification.show() now works. But Notification.close() does nothing,
and none of the notification's events fire.
2013-03-28 17:50:07 -04:00
Adam Roben
1a1fecf423 Bump the base SDK and deployment target to 10.8
This required working around an incompatibility in base/mac/foundation_util.h.
2013-03-28 17:50:07 -04:00
Adam Roben
e4e4cb6ec4 Allow embedders to customize the deployment target and base SDK 2013-03-28 15:56:35 -04:00
Adam Roben
93d9b61215 Allow overriding MainDelegate::BasicStartupComplete 2013-03-28 12:34:49 -04:00
Adam Roben
fa9a1d7b35 Support undocking the devtools view into its own window 2013-03-27 12:35:01 -04:00
Adam Roben
c22d1cca79 Support docking the devtools on the right side of the window 2013-03-27 11:20:21 -04:00
Adam Roben
001d0197de Make the devtools close button work 2013-03-27 11:20:21 -04:00
Adam Roben
d20ecc0e2b Merge InspectableWebContentsImpl and DevToolsFrontend
While this prevents clients from easily implementing their own devtools
windows, it gives us much easier control over the devtools experience.
2013-03-27 11:20:15 -04:00
Adam Roben
881a203b57 Fix double-delete of BrowserMainParts
The caller of BrowserClient::CreateBrowserMainParts handles destroying the
BrowserMainParts instance we return.
2013-03-27 08:55:54 -04:00
Adam Roben
90691e394f Fix lifetime management of URLRequestContextGetter
I noticed this bug while adding persistent cookie storage.
2013-03-27 08:55:54 -04:00
Adam Roben
4fc0fed081 Persist cookies to disk
We use Chrome's SQLitePersistentCookieStore to save cookies to a file called
"Cookies" within the application support directory.

Fixes #5.
2013-03-27 08:55:38 -04:00
Adam Roben
115eef52a3 Update libchromiumcontent
* vendor/libchromiumcontent cf87e4d...3944c1c (1):
  > Compile and export SQLitePersistentCookieStore
2013-03-26 16:30:32 -04:00
Adam Roben
3d3b989806 Update libchromiumcontent to pull in more headers
* vendor/libchromiumcontent 9152595...cf87e4d (1):
  > Export webkit/plugins headers
2013-03-25 12:53:30 -04:00
Adam Roben
5120887571 Update libchromiumcontent to pull in more headers 2013-03-25 12:28:30 -04:00
Adam Roben
5c0323cf23 Allow overwriting vendor/download/libchromiumcontent when its version changes 2013-03-25 12:23:37 -04:00
Adam Roben
3cda49b894 Update to latest libchromiumcontent 2013-03-21 15:18:25 -04:00
Adam Roben
909b3cd18f Stop disabling the sandbox
Now that we have the resources bundle hooked up correctly, the sandbox
functions just fine.

Fixes #4.
2013-03-14 14:01:12 -04:00
Adam Roben
4ca59ba279 Make keyboard shortcuts work when the dev tools are focused
We just pass unhandled key events from dev tools along to the main
WebContentsDelegate.

Part of #2.
2013-03-14 13:50:21 -04:00
Adam Roben
be6d990a97 Make keyboard shortcuts work on Mac
When the renderer doesn't handle a key event, we pass it off to the main menu
to see if it can handle it.

Part of #2.
2013-03-14 13:50:15 -04:00
Adam Roben
561fc9a342 Fix a NSSplitView leak 2013-03-14 13:06:58 -04:00
Adam Roben
4bff7a592a Enforce better header hygiene
Apple recommends disabling ALWAYS_SEARCH_USER_PATHS, so we now do. And we also
disable USE_HEADER_MAP to match other platforms more closely.
2013-03-14 13:06:17 -04:00
Adam Roben
fe35a92de5 Get the linen background painting during elastic scrolling
We weren't setting the location of the resource bundle correctly in the
renderer process. It turns out base::mac::OuterBundle() returns the helper
app's bundle in the renderer process. So now we have MainApplicationBundle() to
give us the bundle of the main app.
2013-03-14 13:05:01 -04:00
Adam Roben
b2a79856ef Add InspectableWebContents
This class can be used to create a content::WebContents that can be inspected
by the Chrome Dev Tools. This requires embedding applications to copy
content_shell.pak into their resource bundle.

Right now the dev tools are always docked to the bottom of the view; we don't
yet support undocking or changing the docked side.

Fixes #1.
2013-03-14 09:05:42 -04:00
Adam Roben
e1b5e5e1bf Store the disk cache in an app-specific location
We deduce the name of the application from the CFBundleName of the .app bundle
and use a path based on that. Similar logic should be implementable for other
platforms.

Fixes #3.
2013-03-13 16:45:00 -04:00
Adam Roben
65dd011fa3 Use Google-style header guards everywhere 2013-03-13 15:42:16 -04:00
Adam Roben
e451d92121 Initial commit 2013-03-13 15:31:24 -04:00
843 changed files with 40013 additions and 8604 deletions

13
.gitignore vendored
View File

@@ -5,7 +5,11 @@
/dist/
/external_binaries/
/out/
/vendor/brightray/vendor/download/
/vendor/download/
/vendor/debian_jessie_amd64-sysroot/
/vendor/debian_jessie_arm-sysroot/
/vendor/debian_jessie_arm64-sysroot/
/vendor/debian_jessie_i386-sysroot/
/vendor/debian_wheezy_amd64-sysroot/
/vendor/debian_wheezy_arm-sysroot/
/vendor/debian_wheezy_i386-sysroot/
@@ -27,3 +31,10 @@ node_modules/
*.vcxproj.filters
*.sln
*.log
/brightray/brightray.opensdf
/brightray/brightray.sdf
/brightray/brightray.sln
/brightray/brightray.vcxproj*
/brightray/brightray.suo
/brightray/brightray.v12.suo
/brightray/brightray.xcodeproj/

12
.gitmodules vendored
View File

@@ -1,6 +1,3 @@
[submodule "vendor/brightray"]
path = vendor/brightray
url = https://github.com/electron/brightray.git
[submodule "vendor/node"]
path = vendor/node
url = https://github.com/electron/node.git
@@ -22,3 +19,12 @@
[submodule "vendor/boto"]
path = vendor/boto
url = https://github.com/boto/boto.git
[submodule "vendor/pdf_viewer"]
path = vendor/pdf_viewer
url = https://github.com/electron/pdf-viewer.git
[submodule "vendor/gyp"]
path = vendor/gyp
url = https://github.com/electron/gyp
[submodule "vendor/libchromiumcontent"]
path = vendor/libchromiumcontent
url = https://github.com/electron/libchromiumcontent

View File

@@ -1 +1 @@
v7.4.0
v7.9.0

View File

@@ -20,4 +20,16 @@ Thanks for opening an issue! A few things to keep in mind:
### How to reproduce
<!-- For bugs, provide sample code or a repo URL that demos the problem -->
<!--
Your best chance of getting this bug looked at quickly is to provide a REPOSITORY that can be cloned and run.
You can fork https://github.com/electron/electron-quick-start and include a link to the branch with your changes.
If you provide a URL, please list the commands required to clone/setup/run your repo e.g.
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
-->

View File

@@ -1,16 +1,16 @@
[![Electron Logo](http://electron.atom.io/images/electron-logo.svg)](http://electron.atom.io/)
[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://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/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/bc56v83355fi3369/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron/branch/master)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev)
[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/)
: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) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md)
: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) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md) | [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es/project/README.md) | [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR/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 by the [Atom
editor](https://github.com/atom/atom) and many other [apps](http://electron.atom.io/apps).
editor](https://github.com/atom/atom) and many other [apps](https://electron.atom.io/apps).
Follow [@ElectronJS](https://twitter.com/electronjs) on Twitter for important
announcements.
@@ -54,9 +54,11 @@ contains documents describing how to build and contribute to Electron.
- [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)
- [Thai](https://github.com/electron/electron/tree/master/docs-translations/th-TH)
- [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)
- [Indonesian](https://github.com/electron/electron/tree/master/docs-translations/id)
## Quick Start
@@ -71,10 +73,11 @@ locations:
forums
- `#atom-shell` channel on Freenode
- [`Atom`](http://atom-slack.herokuapp.com/) channel on Slack
- [`electron-ru`](https://telegram.me/electron_ru) *(Russian)*
- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)*
- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)*
- [`electron-jp`](https://electron-jp.slack.com) *(Japanese)*
- [`electron-tr`](http://www.meetup.com/Electron-JS-Istanbul/) *(Turkish)*
- [`electron-tr`](http://electron-tr.herokuapp.com) *(Turkish)*
- [`electron-id`](https://electron-id.slack.com) *(Indonesia)*
Check out [awesome-electron](https://github.com/sindresorhus/awesome-electron)

9
SECURITY.md Normal file
View File

@@ -0,0 +1,9 @@
# Reporting Security Issues
The Electron team and community take security bugs in Electron seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
To report a security issue, email [electron@github.com](mailto:electron@github.com) and include the word "SECURITY" in the subject line.
The Electron team will send a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
Report security bugs in third-party modules to the person or team maintaining the module. You can also report a vulnerability through the [Node Security Project](https://nodesecurity.io/report).

View File

@@ -7,6 +7,7 @@
#include <string>
#include <vector>
#include "atom/common/atom_constants.h"
#include "atom/common/atom_version.h"
#include "atom/common/chrome_version.h"
#include "atom/common/options_switches.h"
@@ -18,12 +19,13 @@
#include "content/public/common/content_constants.h"
#include "content/public/common/pepper_plugin_info.h"
#include "content/public/common/user_agent.h"
#include "pdf/pdf.h"
#include "ppapi/shared_impl/ppapi_permissions.h"
#include "third_party/widevine/cdm/stub/widevine_cdm_version.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/url_constants.h"
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
#include "chrome/common/widevine_cdm_constants.h"
#endif
@@ -42,7 +44,7 @@ content::PepperPluginInfo CreatePepperFlashInfo(const base::FilePath& path,
std::vector<std::string> flash_version_numbers = base::SplitString(
version, ".", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
if (flash_version_numbers.size() < 1)
if (flash_version_numbers.empty())
flash_version_numbers.push_back("11");
// |SplitString()| puts in an empty string given an empty string. :(
else if (flash_version_numbers[0].empty())
@@ -71,7 +73,7 @@ content::PepperPluginInfo CreatePepperFlashInfo(const base::FilePath& path,
return plugin;
}
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
content::PepperPluginInfo CreateWidevineCdmInfo(const base::FilePath& path,
const std::string& version) {
content::PepperPluginInfo widevine_cdm;
@@ -91,9 +93,9 @@ content::PepperPluginInfo CreateWidevineCdmInfo(const base::FilePath& path,
std::vector<std::string> codecs;
codecs.push_back(kCdmSupportedCodecVp8);
codecs.push_back(kCdmSupportedCodecVp9);
#if defined(USE_PROPRIETARY_CODECS)
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
codecs.push_back(kCdmSupportedCodecAvc1);
#endif // defined(USE_PROPRIETARY_CODECS)
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
std::string codec_string = base::JoinString(
codecs, std::string(1, kCdmSupportedCodecsValueDelimiter));
widevine_cdm_mime_type.additional_param_names.push_back(
@@ -108,6 +110,25 @@ content::PepperPluginInfo CreateWidevineCdmInfo(const base::FilePath& path,
}
#endif
void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) {
content::PepperPluginInfo pdf_info;
pdf_info.is_internal = true;
pdf_info.is_out_of_process = true;
pdf_info.name = "Chromium PDF Viewer";
pdf_info.description = "Portable Document Format";
pdf_info.path = base::FilePath::FromUTF8Unsafe(kPdfPluginPath);
content::WebPluginMimeType pdf_mime_type(kPdfPluginMimeType, "pdf",
"Portable Document Format");
pdf_info.mime_types.push_back(pdf_mime_type);
pdf_info.internal_entry_points.get_interface = chrome_pdf::PPP_GetInterface;
pdf_info.internal_entry_points.initialize_module =
chrome_pdf::PPP_InitializeModule;
pdf_info.internal_entry_points.shutdown_module =
chrome_pdf::PPP_ShutdownModule;
pdf_info.permissions = ppapi::PERMISSION_PRIVATE | ppapi::PERMISSION_DEV;
plugins->push_back(pdf_info);
}
void ConvertStringWithSeparatorToVector(std::vector<std::string>* vec,
const char* separator,
const char* cmd_switch) {
@@ -135,7 +156,7 @@ void AddPepperFlashFromCommandLine(
plugins->push_back(CreatePepperFlashInfo(flash_path, flash_version));
}
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
void AddWidevineCdmFromCommandLine(
std::vector<content::PepperPluginInfo>* plugins) {
auto command_line = base::CommandLine::ForCurrentProcess();
@@ -177,40 +198,28 @@ base::string16 AtomContentClient::GetLocalizedString(int message_id) const {
return l10n_util::GetStringUTF16(message_id);
}
void AtomContentClient::AddAdditionalSchemes(
std::vector<url::SchemeWithType>* standard_schemes,
std::vector<url::SchemeWithType>* referrer_schemes,
std::vector<std::string>* savable_schemes) {
standard_schemes->push_back({"chrome-extension", url::SCHEME_WITHOUT_PORT});
void AtomContentClient::AddAdditionalSchemes(Schemes* schemes) {
schemes->standard_schemes.push_back("chrome-extension");
std::vector<std::string> splited;
ConvertStringWithSeparatorToVector(&splited, ",",
switches::kRegisterServiceWorkerSchemes);
for (const std::string& scheme : splited)
schemes->service_worker_schemes.push_back(scheme);
schemes->service_worker_schemes.push_back(url::kFileScheme);
ConvertStringWithSeparatorToVector(&splited, ",", switches::kSecureSchemes);
for (const std::string& scheme : splited)
schemes->secure_schemes.push_back(scheme);
}
void AtomContentClient::AddPepperPlugins(
std::vector<content::PepperPluginInfo>* plugins) {
AddPepperFlashFromCommandLine(plugins);
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
AddWidevineCdmFromCommandLine(plugins);
#endif
ComputeBuiltInPlugins(plugins);
}
void AtomContentClient::AddServiceWorkerSchemes(
std::set<std::string>* service_worker_schemes) {
std::vector<std::string> schemes;
ConvertStringWithSeparatorToVector(&schemes, ",",
switches::kRegisterServiceWorkerSchemes);
for (const std::string& scheme : schemes)
service_worker_schemes->insert(scheme);
service_worker_schemes->insert(url::kFileScheme);
}
void AtomContentClient::AddSecureSchemesAndOrigins(
std::set<std::string>* secure_schemes,
std::set<GURL>* secure_origins) {
std::vector<std::string> schemes;
ConvertStringWithSeparatorToVector(&schemes, ",", switches::kSecureSchemes);
for (const std::string& scheme : schemes)
secure_schemes->insert(scheme);
}
} // namespace atom

View File

@@ -23,17 +23,9 @@ class AtomContentClient : public brightray::ContentClient {
std::string GetProduct() const override;
std::string GetUserAgent() const override;
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 AddAdditionalSchemes(Schemes* schemes) override;
void AddPepperPlugins(
std::vector<content::PepperPluginInfo>* plugins) override;
void AddServiceWorkerSchemes(
std::set<std::string>* service_worker_schemes) override;
void AddSecureSchemesAndOrigins(
std::set<std::string>* secure_schemes,
std::set<GURL>* secure_origins) override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomContentClient);

View File

@@ -102,6 +102,9 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
#if defined(OS_WIN)
// Ignore invalid parameter errors.
_set_invalid_parameter_handler(InvalidParameterHandler);
// Disable the ActiveVerifier, which is used by Chrome to track possible
// bugs, but no use in Electron.
base::win::DisableHandleVerifier();
#endif
return brightray::MainDelegate::BasicStartupComplete(exit_code);

View File

@@ -6,19 +6,16 @@
#include "atom/app/uv_task_runner.h"
#include "atom/browser/javascript_environment.h"
#include "atom/browser/node_debugger.h"
#include "atom/common/api/atom_bindings.h"
#include "atom/common/crash_reporter/crash_reporter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "base/command_line.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"
#if defined(OS_WIN)
#include "atom/common/api/atom_bindings.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "native_mate/dictionary.h"
#endif
#include "atom/common/node_includes.h"
@@ -53,15 +50,16 @@ int NodeMain(int argc, char *argv[]) {
&isolate_data, gin_env.context(), argc, argv,
exec_argc, exec_argv);
// Start our custom debugger implementation.
NodeDebugger node_debugger(gin_env.isolate());
if (node_debugger.IsRunning())
env->AssignToContext(v8::Debug::GetDebugContext(gin_env.isolate()));
#if defined(OS_WIN)
mate::Dictionary process(gin_env.isolate(), env->process_object());
#if defined(OS_WIN)
process.SetMethod("log", &AtomBindings::Log);
#endif
process.SetMethod("crash", &AtomBindings::Crash);
// Setup process.crashReporter.start in child node processes
auto reporter = mate::Dictionary::CreateEmpty(gin_env.isolate());
reporter.SetMethod("start", &crash_reporter::CrashReporter::StartInstance);
process.Set("crashReporter", reporter);
node::LoadEnvironment(env);

View File

@@ -12,7 +12,6 @@
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/atom_browser_context.h"
#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"
@@ -30,15 +29,20 @@
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "base/strings/string_util.h"
#include "base/sys_info.h"
#include "brightray/browser/brightray_paths.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/common/chrome_paths.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/public/browser/browser_accessibility_state.h"
#include "content/public/browser/browser_child_process_host.h"
#include "content/public/browser/child_process_data.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"
#include "content/public/common/content_switches.h"
#include "media/audio/audio_manager.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "ui/base/l10n/l10n_util.h"
@@ -298,6 +302,8 @@ struct Converter<Browser::LoginItemSettings> {
dict.Get("openAtLogin", &(out->open_at_login));
dict.Get("openAsHidden", &(out->open_as_hidden));
dict.Get("path", &(out->path));
dict.Get("args", &(out->args));
return true;
}
@@ -334,6 +340,26 @@ namespace api {
namespace {
class AppIdProcessIterator : public base::ProcessIterator {
public:
AppIdProcessIterator() : base::ProcessIterator(nullptr) {}
protected:
bool IncludeEntry() override {
return (entry().parent_pid() == base::GetCurrentProcId() ||
entry().pid() == base::GetCurrentProcId());
}
};
IconLoader::IconSize GetIconSizeByString(const std::string& size) {
if (size == "small") {
return IconLoader::IconSize::SMALL;
} else if (size == "large") {
return IconLoader::IconSize::LARGE;
}
return IconLoader::IconSize::NORMAL;
}
// Return the path constant from string.
int GetPathConstant(const std::string& name) {
if (name == "appData")
@@ -415,7 +441,7 @@ void OnClientCertificateSelected(
auto certs = net::X509Certificate::CreateCertificateListFromBytes(
data.c_str(), data.length(), net::X509Certificate::FORMAT_AUTO);
if (certs.size() > 0)
if (!certs.empty())
delegate->ContinueWithCertificate(certs[0].get());
}
@@ -441,8 +467,8 @@ int ImportIntoCertStore(
if (!cert_path.empty()) {
if (base::ReadFileToString(base::FilePath(cert_path), &file_data)) {
auto module = model->cert_db()->GetPublicModule();
rv = model->ImportFromPKCS12(module,
auto module = model->cert_db()->GetPrivateSlot();
rv = model->ImportFromPKCS12(module.get(),
file_data,
password,
true,
@@ -461,12 +487,35 @@ int ImportIntoCertStore(
}
#endif
void OnIconDataAvailable(v8::Isolate* isolate,
const App::FileIconCallback& callback,
gfx::Image* icon) {
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (icon && !icon->IsEmpty()) {
callback.Run(v8::Null(isolate), *icon);
} else {
v8::Local<v8::String> error_message =
v8::String::NewFromUtf8(isolate, "Failed to get file icon.");
callback.Run(v8::Exception::Error(error_message), gfx::Image());
}
}
} // namespace
App::App(v8::Isolate* isolate) {
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(this);
Browser::Get()->AddObserver(this);
content::GpuDataManager::GetInstance()->AddObserver(this);
content::BrowserChildProcessObserver::Add(this);
base::ProcessId pid = base::GetCurrentProcId();
std::unique_ptr<atom::ProcessMetric> process_metric(
new atom::ProcessMetric(
content::PROCESS_TYPE_BROWSER,
pid,
base::ProcessMetrics::CreateCurrentProcessMetrics()));
app_metrics_[pid] = std::move(process_metric);
Init(isolate);
}
@@ -475,6 +524,7 @@ App::~App() {
nullptr);
Browser::Get()->RemoveObserver(this);
content::GpuDataManager::GetInstance()->RemoveObserver(this);
content::BrowserChildProcessObserver::Remove(this);
}
void App::OnBeforeQuit(bool* prevent_default) {
@@ -493,7 +543,7 @@ void App::OnQuit() {
int exitCode = AtomBrowserMainParts::Get()->GetExitCode();
Emit("quit", exitCode);
if (process_singleton_.get()) {
if (process_singleton_) {
process_singleton_->Cleanup();
process_singleton_.reset();
}
@@ -557,7 +607,7 @@ void App::OnCreateWindow(
const GURL& target_url,
const std::string& frame_name,
WindowOpenDisposition disposition,
const std::vector<base::string16>& features,
const std::vector<std::string>& features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body,
int render_process_id,
int render_frame_id) {
@@ -628,6 +678,62 @@ void App::OnGpuProcessCrashed(base::TerminationStatus status) {
status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
}
void App::BrowserChildProcessLaunchedAndConnected(
const content::ChildProcessData& data) {
ChildProcessLaunched(data.process_type, data.handle);
}
void App::BrowserChildProcessHostDisconnected(
const content::ChildProcessData& data) {
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::BrowserChildProcessCrashed(const content::ChildProcessData& data,
int exit_code) {
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::BrowserChildProcessKilled(const content::ChildProcessData& data,
int exit_code) {
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::RenderProcessReady(content::RenderProcessHost* host) {
ChildProcessLaunched(content::PROCESS_TYPE_RENDERER, host->GetHandle());
}
void App::RenderProcessDisconnected(base::ProcessId host_pid) {
ChildProcessDisconnected(host_pid);
}
void App::ChildProcessLaunched(int process_type, base::ProcessHandle handle) {
auto pid = base::GetProcId(handle);
#if defined(OS_MACOSX)
std::unique_ptr<base::ProcessMetrics> metrics(
base::ProcessMetrics::CreateProcessMetrics(
handle, content::BrowserChildProcessHost::GetPortProvider()));
#else
std::unique_ptr<base::ProcessMetrics> metrics(
base::ProcessMetrics::CreateProcessMetrics(handle));
#endif
std::unique_ptr<atom::ProcessMetric> process_metric(
new atom::ProcessMetric(process_type, pid, std::move(metrics)));
app_metrics_[pid] = std::move(process_metric);
}
void App::ChildProcessDisconnected(base::ProcessId pid) {
app_metrics_.erase(pid);
}
base::FilePath App::GetAppPath() const {
return app_path_;
}
void App::SetAppPath(const base::FilePath& app_path) {
app_path_ = app_path;
}
base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
bool succeed = false;
base::FilePath path;
@@ -668,7 +774,7 @@ std::string App::GetLocale() {
bool App::MakeSingleInstance(
const ProcessSingleton::NotificationCallback& callback) {
if (process_singleton_.get())
if (process_singleton_)
return false;
base::FilePath user_dir;
@@ -689,7 +795,7 @@ bool App::MakeSingleInstance(
}
void App::ReleaseSingleInstance() {
if (process_singleton_.get()) {
if (process_singleton_) {
process_singleton_->Cleanup();
process_singleton_.reset();
}
@@ -746,6 +852,12 @@ bool App::IsAccessibilitySupportEnabled() {
return ax_state->IsAccessibleBrowser();
}
Browser::LoginItemSettings App::GetLoginItemSettings(mate::Arguments* args) {
Browser::LoginItemSettings options;
args->GetNext(&options);
return Browser::Get()->GetLoginItemSettings(options);
}
#if defined(USE_NSS_CERTS)
void App::ImportCertificate(
const base::DictionaryValue& options,
@@ -834,6 +946,88 @@ JumpListResult App::SetJumpList(v8::Local<v8::Value> val,
}
#endif // defined(OS_WIN)
void App::GetFileIcon(const base::FilePath& path,
mate::Arguments* args) {
mate::Dictionary options;
IconLoader::IconSize icon_size;
FileIconCallback callback;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
base::FilePath normalized_path = path.NormalizePathSeparators();
if (!args->GetNext(&options)) {
icon_size = IconLoader::IconSize::NORMAL;
} else {
std::string icon_size_string;
options.Get("size", &icon_size_string);
icon_size = GetIconSizeByString(icon_size_string);
}
if (!args->GetNext(&callback)) {
args->ThrowError("Missing required callback function");
return;
}
auto icon_manager = g_browser_process->GetIconManager();
gfx::Image* icon =
icon_manager->LookupIconFromFilepath(normalized_path, icon_size);
if (icon) {
callback.Run(v8::Null(isolate()), *icon);
} else {
icon_manager->LoadIcon(
normalized_path, icon_size,
base::Bind(&OnIconDataAvailable, isolate(), callback),
&cancelable_task_tracker_);
}
}
std::vector<mate::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {
std::vector<mate::Dictionary> result;
int processor_count = base::SysInfo::NumberOfProcessors();
for (const auto& process_metric : app_metrics_) {
mate::Dictionary pid_dict = mate::Dictionary::CreateEmpty(isolate);
mate::Dictionary memory_dict = mate::Dictionary::CreateEmpty(isolate);
mate::Dictionary cpu_dict = mate::Dictionary::CreateEmpty(isolate);
memory_dict.Set("workingSetSize",
static_cast<double>(
process_metric.second->metrics->GetWorkingSetSize() >> 10));
memory_dict.Set("peakWorkingSetSize",
static_cast<double>(
process_metric.second->metrics->GetPeakWorkingSetSize() >> 10));
size_t private_bytes, shared_bytes;
if (process_metric.second->metrics->GetMemoryBytes(&private_bytes,
&shared_bytes)) {
memory_dict.Set("privateBytes", static_cast<double>(private_bytes >> 10));
memory_dict.Set("sharedBytes", static_cast<double>(shared_bytes >> 10));
}
pid_dict.Set("memory", memory_dict);
cpu_dict.Set("percentCPUUsage",
process_metric.second->metrics->GetPlatformIndependentCPUUsage()
/ processor_count);
cpu_dict.Set("idleWakeupsPerSecond",
process_metric.second->metrics->GetIdleWakeupsPerSecond());
pid_dict.Set("cpu", cpu_dict);
pid_dict.Set("pid", process_metric.second->pid);
pid_dict.Set("type",
content::GetProcessTypeNameInEnglish(process_metric.second->type));
result.push_back(pid_dict);
}
return result;
}
v8::Local<v8::Value> App::GetGPUFeatureStatus(v8::Isolate* isolate) {
auto status = content::GetFeatureStatus();
return mate::ConvertToV8(isolate,
status ? *status : base::DictionaryValue());
}
// static
mate::Handle<App> App::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new App(isolate));
@@ -867,8 +1061,7 @@ void App::BuildPrototype(
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("getLoginItemSettings", &App::GetLoginItemSettings)
.SetMethod("setLoginItemSettings",
base::Bind(&Browser::SetLoginItemSettings, browser))
#if defined(OS_MACOSX)
@@ -890,6 +1083,8 @@ void App::BuildPrototype(
.SetMethod("isUnityRunning",
base::Bind(&Browser::IsUnityRunning, browser))
#endif
.SetMethod("setAppPath", &App::SetAppPath)
.SetMethod("getAppPath", &App::GetAppPath)
.SetMethod("setPath", &App::SetPath)
.SetMethod("getPath", &App::GetPath)
.SetMethod("setDesktopName", &App::SetDesktopName)
@@ -903,7 +1098,12 @@ void App::BuildPrototype(
.SetMethod("isAccessibilitySupportEnabled",
&App::IsAccessibilitySupportEnabled)
.SetMethod("disableHardwareAcceleration",
&App::DisableHardwareAcceleration);
&App::DisableHardwareAcceleration)
.SetMethod("getFileIcon", &App::GetFileIcon)
.SetMethod("getAppMetrics", &App::GetAppMetrics)
.SetMethod("getGPUFeatureStatus", &App::GetGPUFeatureStatus)
// TODO(juturu): Remove in 2.0, deprecate before then with warnings
.SetMethod("getAppMemoryInfo", &App::GetAppMetrics);
}
} // namespace api

View File

@@ -5,15 +5,24 @@
#ifndef ATOM_BROWSER_API_ATOM_API_APP_H_
#define ATOM_BROWSER_API_ATOM_API_APP_H_
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "atom/browser/api/event_emitter.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/browser.h"
#include "atom/browser/browser_observer.h"
#include "atom/common/native_mate_converters/callback.h"
#include "base/process/process_iterator.h"
#include "base/task/cancelable_task_tracker.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/browser/process_singleton.h"
#include "content/public/browser/browser_child_process_observer.h"
#include "content/public/browser/gpu_data_manager_observer.h"
#include "content/public/browser/render_process_host.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "net/base/completion_callback.h"
@@ -35,13 +44,31 @@ namespace atom {
enum class JumpListResult : int;
#endif
struct ProcessMetric {
int type;
base::ProcessId pid;
std::unique_ptr<base::ProcessMetrics> metrics;
ProcessMetric(int type,
base::ProcessId pid,
std::unique_ptr<base::ProcessMetrics> metrics) {
this->type = type;
this->pid = pid;
this->metrics = std::move(metrics);
}
};
namespace api {
class App : public AtomBrowserClient::Delegate,
public mate::EventEmitter<App>,
public BrowserObserver,
public content::GpuDataManagerObserver {
public content::GpuDataManagerObserver,
public content::BrowserChildProcessObserver {
public:
using FileIconCallback = base::Callback<void(v8::Local<v8::Value>,
const gfx::Image&)>;
static mate::Handle<App> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
@@ -52,7 +79,7 @@ class App : public AtomBrowserClient::Delegate,
const GURL& target_url,
const std::string& frame_name,
WindowOpenDisposition disposition,
const std::vector<base::string16>& features,
const std::vector<std::string>& features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body,
int render_process_id,
int render_frame_id);
@@ -64,6 +91,10 @@ class App : public AtomBrowserClient::Delegate,
std::unique_ptr<CertificateManagerModel> model);
#endif
base::FilePath GetAppPath() const;
void RenderProcessReady(content::RenderProcessHost* host);
void RenderProcessDisconnected(base::ProcessId host_pid);
protected:
explicit App(v8::Isolate* isolate);
~App() override;
@@ -108,7 +139,21 @@ class App : public AtomBrowserClient::Delegate,
// content::GpuDataManagerObserver:
void OnGpuProcessCrashed(base::TerminationStatus status) override;
// content::BrowserChildProcessObserver:
void BrowserChildProcessLaunchedAndConnected(
const content::ChildProcessData& data) override;
void BrowserChildProcessHostDisconnected(
const content::ChildProcessData& data) override;
void BrowserChildProcessCrashed(
const content::ChildProcessData& data, int exit_code) override;
void BrowserChildProcessKilled(
const content::ChildProcessData& data, int exit_code) override;
private:
void SetAppPath(const base::FilePath& app_path);
void ChildProcessLaunched(int process_type, base::ProcessHandle handle);
void ChildProcessDisconnected(base::ProcessId pid);
// Get/Set the pre-defined path in PathService.
base::FilePath GetPath(mate::Arguments* args, const std::string& name);
void SetPath(mate::Arguments* args,
@@ -123,10 +168,16 @@ class App : public AtomBrowserClient::Delegate,
bool Relaunch(mate::Arguments* args);
void DisableHardwareAcceleration(mate::Arguments* args);
bool IsAccessibilitySupportEnabled();
Browser::LoginItemSettings GetLoginItemSettings(mate::Arguments* args);
#if defined(USE_NSS_CERTS)
void ImportCertificate(const base::DictionaryValue& options,
const net::CompletionCallback& callback);
#endif
void GetFileIcon(const base::FilePath& path,
mate::Arguments* args);
std::vector<mate::Dictionary> GetAppMetrics(v8::Isolate* isolate);
v8::Local<v8::Value> GetGPUFeatureStatus(v8::Isolate* isolate);
#if defined(OS_WIN)
// Get the current Jump List settings.
@@ -142,6 +193,16 @@ class App : public AtomBrowserClient::Delegate,
std::unique_ptr<CertificateManagerModel> certificate_manager_model_;
#endif
// Tracks tasks requesting file icons.
base::CancelableTaskTracker cancelable_task_tracker_;
base::FilePath app_path_;
using ProcessMetricMap =
std::unordered_map<base::ProcessId,
std::unique_ptr<atom::ProcessMetric>>;
ProcessMetricMap app_metrics_;
DISALLOW_COPY_AND_ASSIGN(App);
};

View File

@@ -7,6 +7,7 @@
#include "atom/browser/browser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/window_list.h"
#include "atom/common/api/event_emitter_caller.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/node_includes.h"
#include "base/time/time.h"
@@ -47,7 +48,9 @@ void AutoUpdater::OnError(const std::string& message) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto error = v8::Exception::Error(mate::StringToV8(isolate(), message));
EmitCustomEvent(
mate::EmitEvent(
isolate(),
GetWrapper(),
"error",
error->ToObject(isolate()->GetCurrentContext()).ToLocalChecked(),
// Message is also emitted to keep compatibility with old code.
@@ -87,16 +90,14 @@ void AutoUpdater::SetFeedURL(const std::string& url, mate::Arguments* args) {
void AutoUpdater::QuitAndInstall() {
// If we don't have any window then quitAndInstall immediately.
WindowList* window_list = WindowList::GetInstance();
if (window_list->size() == 0) {
if (WindowList::IsEmpty()) {
auto_updater::AutoUpdater::QuitAndInstall();
return;
}
// Otherwise do the restart after all windows have been closed.
window_list->AddObserver(this);
for (NativeWindow* window : *window_list)
window->Close();
WindowList::AddObserver(this);
WindowList::CloseAllWindows();
}
// static

View File

@@ -0,0 +1,162 @@
// Copyright (c) 2017 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_browser_view.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/browser.h"
#include "atom/browser/native_browser_view.h"
#include "atom/common/color_util.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "atom/common/options_switches.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "ui/gfx/geometry/rect.h"
namespace mate {
template <>
struct Converter<atom::AutoResizeFlags> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
atom::AutoResizeFlags* auto_resize_flags) {
mate::Dictionary params;
if (!ConvertFromV8(isolate, val, &params)) {
return false;
}
uint8_t flags = 0;
bool width = false;
if (params.Get("width", &width) && width) {
flags |= atom::kAutoResizeWidth;
}
bool height = false;
if (params.Get("height", &height) && height) {
flags |= atom::kAutoResizeHeight;
}
*auto_resize_flags = static_cast<atom::AutoResizeFlags>(flags);
return true;
}
};
} // namespace mate
namespace atom {
namespace api {
BrowserView::BrowserView(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options)
: api_web_contents_(nullptr) {
Init(isolate, wrapper, options);
}
void BrowserView::Init(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options) {
mate::Dictionary web_preferences = mate::Dictionary::CreateEmpty(isolate);
options.Get(options::kWebPreferences, &web_preferences);
web_preferences.Set("isBrowserView", true);
mate::Handle<class WebContents> web_contents =
WebContents::Create(isolate, web_preferences);
web_contents_.Reset(isolate, web_contents.ToV8());
api_web_contents_ = web_contents.get();
view_.reset(NativeBrowserView::Create(
api_web_contents_->managed_web_contents()->GetView()));
InitWith(isolate, wrapper);
}
BrowserView::~BrowserView() {
api_web_contents_->DestroyWebContents(true /* async */);
}
// static
mate::WrappableBase* BrowserView::New(mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
args->ThrowError("Cannot create BrowserView before app is ready");
return nullptr;
}
if (args->Length() > 1) {
args->ThrowError("Too many arguments");
return nullptr;
}
mate::Dictionary options;
if (!(args->Length() == 1 && args->GetNext(&options))) {
options = mate::Dictionary::CreateEmpty(args->isolate());
}
return new BrowserView(args->isolate(), args->GetThis(), options);
}
int32_t BrowserView::ID() const {
return weak_map_id();
}
void BrowserView::SetAutoResize(AutoResizeFlags flags) {
view_->SetAutoResizeFlags(flags);
}
void BrowserView::SetBounds(const gfx::Rect& bounds) {
view_->SetBounds(bounds);
}
void BrowserView::SetBackgroundColor(const std::string& color_name) {
view_->SetBackgroundColor(ParseHexColor(color_name));
}
v8::Local<v8::Value> BrowserView::WebContents() {
if (web_contents_.IsEmpty()) {
return v8::Null(isolate());
}
return v8::Local<v8::Value>::New(isolate(), web_contents_);
}
// static
void BrowserView::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "BrowserView"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("setAutoResize", &BrowserView::SetAutoResize)
.SetMethod("setBounds", &BrowserView::SetBounds)
.SetMethod("setBackgroundColor", &BrowserView::SetBackgroundColor)
.SetProperty("webContents", &BrowserView::WebContents)
.SetProperty("id", &BrowserView::ID);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::BrowserView;
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
BrowserView::SetConstructor(isolate, base::Bind(&BrowserView::New));
mate::Dictionary browser_view(
isolate, BrowserView::GetConstructor(isolate)->GetFunction());
mate::Dictionary dict(isolate, exports);
dict.Set("BrowserView", browser_view);
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_browser_view, Initialize)

View File

@@ -0,0 +1,72 @@
// Copyright (c) 2017 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_BROWSER_VIEW_H_
#define ATOM_BROWSER_API_ATOM_API_BROWSER_VIEW_H_
#include <memory>
#include <string>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/native_browser_view.h"
#include "native_mate/handle.h"
namespace gfx {
class Rect;
}
namespace mate {
class Arguments;
class Dictionary;
} // namespace mate
namespace atom {
class NativeBrowserView;
namespace api {
class WebContents;
class BrowserView : public mate::TrackableObject<BrowserView> {
public:
static mate::WrappableBase* New(mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
NativeBrowserView* view() const { return view_.get(); }
int32_t ID() const;
protected:
BrowserView(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options);
~BrowserView() override;
private:
void Init(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options);
void SetAutoResize(AutoResizeFlags flags);
void SetBounds(const gfx::Rect& bounds);
void SetBackgroundColor(const std::string& color_name);
v8::Local<v8::Value> WebContents();
v8::Global<v8::Value> web_contents_;
class WebContents* api_web_contents_;
std::unique_ptr<NativeBrowserView> view_;
DISALLOW_COPY_AND_ASSIGN(BrowserView);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_BROWSER_VIEW_H_

View File

@@ -69,10 +69,6 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
dict.SetMethod("stopRecording", &StopRecording);
dict.SetMethod("getTraceBufferUsage", base::Bind(
&TracingController::GetTraceBufferUsage, controller));
dict.SetMethod("setWatchEvent", base::Bind(
&TracingController::SetWatchEvent, controller));
dict.SetMethod("cancelWatchEvent", base::Bind(
&TracingController::CancelWatchEvent, controller));
}
} // namespace

View File

@@ -56,19 +56,24 @@ struct Converter<net::CanonicalCookie> {
};
template<>
struct Converter<AtomCookieDelegate::ChangeCause> {
struct Converter<net::CookieStore::ChangeCause> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const AtomCookieDelegate::ChangeCause& val) {
const net::CookieStore::ChangeCause& val) {
switch (val) {
case AtomCookieDelegate::ChangeCause::CHANGE_COOKIE_EXPLICIT:
case net::CookieStore::ChangeCause::INSERTED:
case net::CookieStore::ChangeCause::EXPLICIT:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_BETWEEN:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_PREDICATE:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_SINGLE:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_CANONICAL:
return mate::StringToV8(isolate, "explicit");
case AtomCookieDelegate::ChangeCause::CHANGE_COOKIE_OVERWRITE:
case net::CookieStore::ChangeCause::OVERWRITE:
return mate::StringToV8(isolate, "overwrite");
case AtomCookieDelegate::ChangeCause::CHANGE_COOKIE_EXPIRED:
case net::CookieStore::ChangeCause::EXPIRED:
return mate::StringToV8(isolate, "expired");
case AtomCookieDelegate::ChangeCause::CHANGE_COOKIE_EVICTED:
case net::CookieStore::ChangeCause::EVICTED:
return mate::StringToV8(isolate, "evicted");
case AtomCookieDelegate::ChangeCause::CHANGE_COOKIE_EXPIRED_OVERWRITE:
case net::CookieStore::ChangeCause::EXPIRED_OVERWRITE:
return mate::StringToV8(isolate, "expired-overwrite");
default:
return mate::StringToV8(isolate, "unknown");
@@ -178,6 +183,13 @@ void OnSetCookie(const Cookies::SetCallback& callback, bool success) {
base::Bind(callback, success ? Cookies::SUCCESS : Cookies::FAILED));
}
// Flushes cookie store in IO thread.
void FlushCookieStoreOnIOThread(
scoped_refptr<net::URLRequestContextGetter> getter,
const base::Closure& callback) {
GetCookieStore(getter)->FlushStore(base::Bind(RunCallbackInUI, callback));
}
// Sets cookie with |details| in IO thread.
void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
std::unique_ptr<base::DictionaryValue> details,
@@ -220,8 +232,8 @@ void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
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));
net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT,
base::Bind(OnSetCookie, callback));
}
} // namespace
@@ -264,9 +276,16 @@ void Cookies::Set(const base::DictionaryValue& details,
base::Bind(SetCookieOnIO, getter, Passed(&copied), callback));
}
void Cookies::FlushStore(const base::Closure& callback) {
auto getter = make_scoped_refptr(request_context_getter_);
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(FlushCookieStoreOnIOThread, getter, callback));
}
void Cookies::OnCookieChanged(const net::CanonicalCookie& cookie,
bool removed,
AtomCookieDelegate::ChangeCause cause) {
net::CookieStore::ChangeCause cause) {
Emit("changed", cookie, cause, removed);
}
@@ -285,7 +304,8 @@ void Cookies::BuildPrototype(v8::Isolate* isolate,
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("get", &Cookies::Get)
.SetMethod("remove", &Cookies::Remove)
.SetMethod("set", &Cookies::Set);
.SetMethod("set", &Cookies::Set)
.SetMethod("flushStore", &Cookies::FlushStore);
}
} // namespace api

View File

@@ -53,11 +53,12 @@ class Cookies : public mate::TrackableObject<Cookies>,
void Remove(const GURL& url, const std::string& name,
const base::Closure& callback);
void Set(const base::DictionaryValue& details, const SetCallback& callback);
void FlushStore(const base::Closure& callback);
// AtomCookieDelegate::Observer:
void OnCookieChanged(const net::CanonicalCookie& cookie,
bool removed,
AtomCookieDelegate::ChangeCause cause) override;
net::CookieStore::ChangeCause cause) override;
private:
net::URLRequestContextGetter* request_context_getter_;

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 "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/web_contents.h"
@@ -45,12 +44,23 @@ void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
const std::string& message) {
DCHECK(agent_host == agent_host_.get());
std::unique_ptr<base::Value> parsed_message(base::JSONReader::Read(message));
if (!parsed_message->IsType(base::Value::TYPE_DICTIONARY))
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::String> local_message =
v8::String::NewFromUtf8(isolate(), message.data());
v8::MaybeLocal<v8::Value> parsed_message = v8::JSON::Parse(
isolate()->GetCurrentContext(), local_message);
if (parsed_message.IsEmpty()) {
return;
}
std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
if (!mate::ConvertFromV8(isolate(), parsed_message.ToLocalChecked(),
dict.get())) {
return;
}
base::DictionaryValue* dict =
static_cast<base::DictionaryValue*>(parsed_message.get());
int id;
if (!dict->GetInteger("id", &id)) {
std::string method;

View File

@@ -4,14 +4,15 @@
#include "atom/browser/api/atom_api_desktop_capturer.h"
using base::PlatformThreadRef;
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media/desktop_media_list.h"
#include "native_mate/dictionary.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
#include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
#include "third_party/webrtc/modules/desktop_capture/window_capturer.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
#include "atom/common/node_includes.h"
@@ -61,10 +62,12 @@ void DesktopCapturer::StartHandling(bool capture_window,
options.set_disable_effects(false);
#endif
std::unique_ptr<webrtc::ScreenCapturer> screen_capturer(
capture_screen ? webrtc::ScreenCapturer::Create(options) : nullptr);
std::unique_ptr<webrtc::WindowCapturer> window_capturer(
capture_window ? webrtc::WindowCapturer::Create(options) : nullptr);
std::unique_ptr<webrtc::DesktopCapturer> screen_capturer(
capture_screen ? webrtc::DesktopCapturer::CreateScreenCapturer(options)
: nullptr);
std::unique_ptr<webrtc::DesktopCapturer> window_capturer(
capture_window ? webrtc::DesktopCapturer::CreateWindowCapturer(options)
: nullptr);
media_list_.reset(new NativeDesktopMediaList(
std::move(screen_capturer), std::move(window_capturer)));

View File

@@ -8,11 +8,13 @@
#include "atom/browser/api/atom_api_window.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/certificate_trust.h"
#include "atom/browser/ui/file_dialog.h"
#include "atom/browser/ui/message_box.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/image_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
@@ -35,6 +37,27 @@ struct Converter<file_dialog::Filter> {
}
};
template<>
struct Converter<file_dialog::DialogSettings> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
file_dialog::DialogSettings* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
dict.Get("window", &(out->parent_window));
dict.Get("title", &(out->title));
dict.Get("message", &(out->message));
dict.Get("buttonLabel", &(out->button_label));
dict.Get("nameFieldLabel", &(out->name_field_label));
dict.Get("defaultPath", &(out->default_path));
dict.Get("filters", &(out->filters));
dict.Get("properties", &(out->properties));
dict.Get("showsTagField", &(out->shows_tag_field));
return true;
}
};
} // namespace mate
namespace {
@@ -47,6 +70,8 @@ void ShowMessageBox(int type,
const std::string& title,
const std::string& message,
const std::string& detail,
const std::string& checkbox_label,
bool checkbox_checked,
const gfx::ImageSkia& icon,
atom::NativeWindow* window,
mate::Arguments* args) {
@@ -55,56 +80,44 @@ void ShowMessageBox(int type,
if (mate::Converter<atom::MessageBoxCallback>::FromV8(args->isolate(),
peek,
&callback)) {
atom::ShowMessageBox(window, (atom::MessageBoxType)type, buttons,
default_id, cancel_id, options, title,
message, detail, icon, callback);
atom::ShowMessageBox(window, static_cast<atom::MessageBoxType>(type),
buttons, default_id, cancel_id, options, title,
message, detail, checkbox_label, checkbox_checked,
icon, callback);
} else {
int chosen = atom::ShowMessageBox(window, (atom::MessageBoxType)type,
buttons, default_id, cancel_id,
options, title, message, detail, icon);
int chosen = atom::ShowMessageBox(
window, static_cast<atom::MessageBoxType>(type), buttons, default_id,
cancel_id, options, title, message, detail, icon);
args->Return(chosen);
}
}
void ShowOpenDialog(const std::string& title,
const std::string& button_label,
const base::FilePath& default_path,
const file_dialog::Filters& filters,
int properties,
atom::NativeWindow* window,
void ShowOpenDialog(const file_dialog::DialogSettings& settings,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
file_dialog::OpenDialogCallback callback;
if (mate::Converter<file_dialog::OpenDialogCallback>::FromV8(args->isolate(),
peek,
&callback)) {
file_dialog::ShowOpenDialog(window, title, button_label, default_path,
filters, properties, callback);
file_dialog::ShowOpenDialog(settings, callback);
} else {
std::vector<base::FilePath> paths;
if (file_dialog::ShowOpenDialog(window, title, button_label, default_path,
filters, properties, &paths))
if (file_dialog::ShowOpenDialog(settings, &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,
void ShowSaveDialog(const file_dialog::DialogSettings& settings,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
file_dialog::SaveDialogCallback callback;
if (mate::Converter<file_dialog::SaveDialogCallback>::FromV8(args->isolate(),
peek,
&callback)) {
file_dialog::ShowSaveDialog(window, title, button_label, default_path,
filters, callback);
file_dialog::ShowSaveDialog(settings, callback);
} else {
base::FilePath path;
if (file_dialog::ShowSaveDialog(window, title, button_label, default_path,
filters, &path))
if (file_dialog::ShowSaveDialog(settings, &path))
args->Return(path);
}
}
@@ -116,6 +129,10 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
dict.SetMethod("showErrorBox", &atom::ShowErrorBox);
dict.SetMethod("showOpenDialog", &ShowOpenDialog);
dict.SetMethod("showSaveDialog", &ShowSaveDialog);
#if defined(OS_MACOSX) || defined(OS_WIN)
dict.SetMethod("showCertificateTrustDialog",
&certificate_trust::ShowCertificateTrust);
#endif
}
} // namespace

View File

@@ -78,7 +78,6 @@ DownloadItem::~DownloadItem() {
void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
if (download_item_->IsDone()) {
Emit("done", item->GetState());
// Destroy the item once item is downloaded.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, GetDestroyClosure());
@@ -111,7 +110,6 @@ bool DownloadItem::CanResume() const {
void DownloadItem::Cancel() {
download_item_->Cancel(true);
download_item_->Remove();
}
int64_t DownloadItem::GetReceivedBytes() const {

View File

@@ -176,7 +176,8 @@ void Menu::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isItemCheckedAt", &Menu::IsItemCheckedAt)
.SetMethod("isEnabledAt", &Menu::IsEnabledAt)
.SetMethod("isVisibleAt", &Menu::IsVisibleAt)
.SetMethod("popupAt", &Menu::PopupAt);
.SetMethod("popupAt", &Menu::PopupAt)
.SetMethod("closePopupAt", &Menu::ClosePopupAt);
}
} // namespace api

View File

@@ -53,9 +53,9 @@ class Menu : public mate::TrackableObject<Menu>,
void ExecuteCommand(int command_id, int event_flags) override;
void MenuWillShow(ui::SimpleMenuModel* source) override;
virtual void PopupAt(Window* window,
int x = -1, int y = -1,
int positioning_item = 0) = 0;
virtual void PopupAt(
Window* window, int x, int y, int positioning_item, bool async) = 0;
virtual void ClosePopupAt(int32_t window_id) = 0;
std::unique_ptr<AtomMenuModel> model_;
Menu* parent_;

View File

@@ -7,10 +7,13 @@
#include "atom/browser/api/atom_api_menu.h"
#include <map>
#include <string>
#import "atom/browser/ui/cocoa/atom_menu_controller.h"
using base::scoped_nsobject;
namespace atom {
namespace api {
@@ -19,15 +22,25 @@ class MenuMac : public Menu {
protected:
MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
void PopupAt(Window* window, int x, int y, int positioning_item) override;
base::scoped_nsobject<AtomMenuController> menu_controller_;
void PopupAt(
Window* window, int x, int y, int positioning_item, bool async) override;
void PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
int32_t window_id, int x, int y, int positioning_item,
bool async);
void ClosePopupAt(int32_t window_id) override;
private:
friend class Menu;
static void SendActionToFirstResponder(const std::string& action);
scoped_nsobject<AtomMenuController> menu_controller_;
// window ID -> open context menu
std::map<int32_t, scoped_nsobject<AtomMenuController>> popup_controllers_;
base::WeakPtrFactory<MenuMac> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(MenuMac);
};

View File

@@ -6,35 +6,58 @@
#include "atom/browser/native_window.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "base/mac/scoped_sending_event.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/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "atom/common/node_includes.h"
using content::BrowserThread;
namespace atom {
namespace api {
MenuMac::MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper) {
: Menu(isolate, wrapper),
weak_factory_(this) {
}
void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item) {
void MenuMac::PopupAt(
Window* window, int x, int y, int positioning_item, bool async) {
NativeWindow* native_window = window->window();
if (!native_window)
return;
auto popup = base::Bind(&MenuMac::PopupOnUI, weak_factory_.GetWeakPtr(),
native_window->GetWeakPtr(), window->ID(), x, y,
positioning_item, async);
if (async)
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, popup);
else
popup.Run();
}
void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
int32_t window_id, int x, int y, int positioning_item,
bool async) {
if (!native_window)
return;
brightray::InspectableWebContents* web_contents =
native_window->inspectable_web_contents();
if (!web_contents)
return;
base::scoped_nsobject<AtomMenuController> menu_controller(
[[AtomMenuController alloc] initWithModel:model_.get()
auto close_callback = base::Bind(&MenuMac::ClosePopupAt,
weak_factory_.GetWeakPtr(), window_id);
popup_controllers_[window_id] = base::scoped_nsobject<AtomMenuController>(
[[AtomMenuController alloc] initWithModel:model()
useDefaultAccelerator:NO]);
NSMenu* menu = [menu_controller menu];
NSMenu* menu = [popup_controllers_[window_id] menu];
NSView* view = web_contents->GetView()->GetNativeView();
// Which menu item to show.
@@ -69,11 +92,33 @@ void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item) {
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];
if (async) {
[popup_controllers_[window_id] setCloseCallback:close_callback];
// Make sure events can be pumped while the menu is up.
base::MessageLoop::ScopedNestableTaskAllower allow(
base::MessageLoop::current());
// One of the events that could be pumped is |window.close()|.
// User-initiated event-tracking loops protect against this by
// setting flags in -[CrApplication sendEvent:], but since
// web-content menus are initiated by IPC message the setup has to
// be done manually.
base::mac::ScopedSendingEvent sendingEventScoper;
// Don't emit unresponsive event when showing menu.
atom::UnresponsiveSuppressor suppressor;
[menu popUpMenuPositioningItem:item atLocation:position inView:view];
} else {
// Don't emit unresponsive event when showing menu.
atom::UnresponsiveSuppressor suppressor;
[menu popUpMenuPositioningItem:item atLocation:position inView:view];
close_callback.Run();
}
}
void MenuMac::ClosePopupAt(int32_t window_id) {
popup_controllers_.erase(window_id);
}
// static

View File

@@ -8,17 +8,20 @@
#include "atom/browser/unresponsive_suppressor.h"
#include "content/public/browser/render_widget_host_view.h"
#include "ui/display/screen.h"
#include "ui/views/controls/menu/menu_runner.h"
using views::MenuRunner;
namespace atom {
namespace api {
MenuViews::MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper) {
: Menu(isolate, wrapper),
weak_factory_(this) {
}
void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
void MenuViews::PopupAt(
Window* window, int x, int y, int positioning_item, bool async) {
NativeWindow* native_window = static_cast<NativeWindow*>(window->window());
if (!native_window)
return;
@@ -38,14 +41,20 @@ void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
location = gfx::Point(origin.x() + x, origin.y() + y);
}
int flags = MenuRunner::CONTEXT_MENU | MenuRunner::HAS_MNEMONICS;
if (async)
flags |= MenuRunner::ASYNC;
// Don't emit unresponsive event when showing menu.
atom::UnresponsiveSuppressor suppressor;
// Show the menu.
views::MenuRunner menu_runner(
model(),
views::MenuRunner::CONTEXT_MENU | views::MenuRunner::HAS_MNEMONICS);
ignore_result(menu_runner.RunMenuAt(
int32_t window_id = window->ID();
auto close_callback = base::Bind(
&MenuViews::ClosePopupAt, weak_factory_.GetWeakPtr(), window_id);
menu_runners_[window_id] = std::unique_ptr<MenuRunner>(new MenuRunner(
model(), flags, close_callback));
ignore_result(menu_runners_[window_id]->RunMenuAt(
static_cast<NativeWindowViews*>(window->window())->widget(),
NULL,
gfx::Rect(location, gfx::Size()),
@@ -53,6 +62,10 @@ void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item) {
ui::MENU_SOURCE_MOUSE));
}
void MenuViews::ClosePopupAt(int32_t window_id) {
menu_runners_.erase(window_id);
}
// static
mate::WrappableBase* Menu::New(mate::Arguments* args) {
return new MenuViews(args->isolate(), args->GetThis());

View File

@@ -5,8 +5,12 @@
#ifndef ATOM_BROWSER_API_ATOM_API_MENU_VIEWS_H_
#define ATOM_BROWSER_API_ATOM_API_MENU_VIEWS_H_
#include <map>
#include "atom/browser/api/atom_api_menu.h"
#include "base/memory/weak_ptr.h"
#include "ui/display/screen.h"
#include "ui/views/controls/menu/menu_runner.h"
namespace atom {
@@ -17,9 +21,16 @@ class MenuViews : public Menu {
MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
protected:
void PopupAt(Window* window, int x, int y, int positioning_item) override;
void PopupAt(
Window* window, int x, int y, int positioning_item, bool async) override;
void ClosePopupAt(int32_t window_id) override;
private:
// window ID -> open context menu
std::map<int32_t, std::unique_ptr<views::MenuRunner>> menu_runners_;
base::WeakPtrFactory<MenuViews> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(MenuViews);
};

View File

@@ -0,0 +1,174 @@
// 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_notification.h"
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/browser.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 "base/strings/utf_string_conversions.h"
#include "brightray/browser/browser_client.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "url/gurl.h"
namespace atom {
namespace api {
Notification::Notification(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
mate::Arguments* args) {
InitWith(isolate, wrapper);
presenter_ = brightray::BrowserClient::Get()->GetNotificationPresenter();
mate::Dictionary opts;
if (args->GetNext(&opts)) {
opts.Get("title", &title_);
opts.Get("body", &body_);
has_icon_ = opts.Get("icon", &icon_);
if (has_icon_) {
opts.Get("icon", &icon_path_);
}
opts.Get("silent", &silent_);
opts.Get("replyPlaceholder", &reply_placeholder_);
opts.Get("hasReply", &has_reply_);
}
}
Notification::~Notification() {
if (notification_)
notification_->set_delegate(nullptr);
}
// static
mate::WrappableBase* Notification::New(mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
args->ThrowError("Cannot create Notification before app is ready");
return nullptr;
}
return new Notification(args->isolate(), args->GetThis(), args);
}
// Getters
base::string16 Notification::GetTitle() {
return title_;
}
base::string16 Notification::GetBody() {
return body_;
}
bool Notification::GetSilent() {
return silent_;
}
base::string16 Notification::GetReplyPlaceholder() {
return reply_placeholder_;
}
bool Notification::GetHasReply() {
return has_reply_;
}
// Setters
void Notification::SetTitle(const base::string16& new_title) {
title_ = new_title;
}
void Notification::SetBody(const base::string16& new_body) {
body_ = new_body;
}
void Notification::SetSilent(bool new_silent) {
silent_ = new_silent;
}
void Notification::SetReplyPlaceholder(const base::string16& new_placeholder) {
reply_placeholder_ = new_placeholder;
}
void Notification::SetHasReply(bool new_has_reply) {
has_reply_ = new_has_reply;
}
void Notification::NotificationClick() {
Emit("click");
}
void Notification::NotificationReplied(const std::string& reply) {
Emit("reply", reply);
}
void Notification::NotificationDisplayed() {
Emit("show");
}
void Notification::NotificationDestroyed() {
Emit("close");
}
void Notification::NotificationClosed() {
}
// Showing notifications
void Notification::Show() {
if (presenter_) {
notification_ = presenter_->CreateNotification(this);
if (notification_) {
notification_->Show(title_, body_, "", GURL(), icon_.AsBitmap(), silent_,
has_reply_, reply_placeholder_);
}
}
}
bool Notification::IsSupported() {
return !!brightray::BrowserClient::Get()->GetNotificationPresenter();
}
// static
void Notification::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Notification"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("show", &Notification::Show)
.SetProperty("title", &Notification::GetTitle, &Notification::SetTitle)
.SetProperty("body", &Notification::GetBody, &Notification::SetBody)
.SetProperty("silent", &Notification::GetSilent, &Notification::SetSilent)
.SetProperty("replyPlaceholder", &Notification::GetReplyPlaceholder,
&Notification::SetReplyPlaceholder)
.SetProperty("hasReply", &Notification::GetHasReply,
&Notification::SetHasReply);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::Notification;
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
Notification::SetConstructor(isolate, base::Bind(&Notification::New));
mate::Dictionary dict(isolate, exports);
dict.Set("Notification",
Notification::GetConstructor(isolate)->GetFunction());
dict.SetMethod("isSupported", &Notification::IsSupported);
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_notification, Initialize)

View File

@@ -0,0 +1,83 @@
// Copyright (c) 2014 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_NOTIFICATION_H_
#define ATOM_BROWSER_API_ATOM_API_NOTIFICATION_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/api/trackable_object.h"
#include "base/strings/utf_string_conversions.h"
#include "brightray/browser/notification.h"
#include "brightray/browser/notification_delegate.h"
#include "brightray/browser/notification_presenter.h"
#include "native_mate/handle.h"
#include "ui/gfx/image/image.h"
namespace atom {
namespace api {
class Notification : public mate::TrackableObject<Notification>,
public brightray::NotificationDelegate {
public:
static mate::WrappableBase* New(mate::Arguments* args);
static bool IsSupported();
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// NotificationDelegate:
void NotificationClick() override;
void NotificationReplied(const std::string& reply) override;
void NotificationDisplayed() override;
void NotificationDestroyed() override;
void NotificationClosed() override;
protected:
Notification(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
mate::Arguments* args);
~Notification() override;
void Show();
// Prop Getters
base::string16 GetTitle();
base::string16 GetBody();
bool GetSilent();
base::string16 GetReplyPlaceholder();
bool GetHasReply();
// Prop Setters
void SetTitle(const base::string16& new_title);
void SetBody(const base::string16& new_body);
void SetSilent(bool new_silent);
void SetReplyPlaceholder(const base::string16& new_reply_placeholder);
void SetHasReply(bool new_has_reply);
private:
base::string16 title_;
base::string16 body_;
gfx::Image icon_;
base::string16 icon_path_;
bool has_icon_ = false;
bool silent_ = false;
base::string16 reply_placeholder_;
bool has_reply_ = false;
brightray::NotificationPresenter* presenter_;
base::WeakPtr<brightray::Notification> notification_;
DISALLOW_COPY_AND_ASSIGN(Notification);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_NOTIFICATION_H_

View File

@@ -50,20 +50,25 @@ void RegisterStandardSchemes(const std::vector<std::string>& schemes,
mate::Arguments* args) {
g_standard_schemes = schemes;
mate::Dictionary opts;
bool secure = false;
args->GetNext(&opts) && opts.Get("secure", &secure);
// Dynamically register the schemes.
auto* policy = content::ChildProcessSecurityPolicy::GetInstance();
for (const std::string& scheme : schemes) {
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
if (secure) {
url::AddSecureScheme(scheme.c_str());
}
policy->RegisterWebSafeScheme(scheme);
}
// add switches to register as standard
// Add the schemes to command line switches, so child processes can also
// register them.
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kStandardSchemes, base::JoinString(schemes, ","));
mate::Dictionary opts;
bool secure = false;
if (args->GetNext(&opts) && opts.Get("secure", &secure) && secure) {
// add switches to register as secure
if (secure) {
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kSecureSchemes, base::JoinString(schemes, ","));
}

View File

@@ -120,6 +120,9 @@ void Screen::BuildPrototype(
.SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
.SetMethod("getAllDisplays", &Screen::GetAllDisplays)
.SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
#if defined(OS_MACOSX)
.SetMethod("getMenuBarHeight", &Screen::getMenuBarHeight)
#endif
.SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
}

View File

@@ -40,6 +40,10 @@ class Screen : public mate::EventEmitter<Screen>,
display::Display GetDisplayNearestPoint(const gfx::Point& point);
display::Display GetDisplayMatching(const gfx::Rect& match_rect);
#if defined(OS_MACOSX)
int getMenuBarHeight();
#endif
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;

View File

@@ -0,0 +1,18 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#import "atom/browser/api/atom_api_screen.h"
#import <Cocoa/Cocoa.h>
namespace atom {
namespace api {
int Screen::getMenuBarHeight() {
return [[NSApp mainMenu] menuBarHeight];
}
}// namespace api
}// namespace atom

View File

@@ -204,6 +204,18 @@ struct Converter<net::ProxyConfig> {
}
};
template<>
struct Converter<atom::VerifyRequestParams> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::VerifyRequestParams val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("hostname", val.hostname);
dict.Set("certificate", val.certificate);
dict.Set("verificationResult", val.default_result);
return dict.GetHandle();
}
};
} // namespace mate
namespace atom {
@@ -221,7 +233,7 @@ class ResolveProxyHelper {
public:
ResolveProxyHelper(AtomBrowserContext* browser_context,
const GURL& url,
Session::ResolveProxyCallback callback)
const Session::ResolveProxyCallback& callback)
: callback_(callback),
original_thread_(base::ThreadTaskRunnerHandle::Get()) {
scoped_refptr<net::URLRequestContextGetter> context_getter =
@@ -255,7 +267,7 @@ class ResolveProxyHelper {
// Start the request.
int result = proxy_service->ResolveProxy(
url, "GET", &proxy_info_, completion_callback, &pac_req_, nullptr,
net::BoundNetLog());
net::NetLogWithSource());
// Completed synchronously.
if (result != net::ERR_IO_PENDING)
@@ -271,6 +283,9 @@ class ResolveProxyHelper {
};
// Runs the callback in UI thread.
void RunCallbackInUI(const base::Callback<void()>& callback) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
}
template<typename ...T>
void RunCallbackInUI(const base::Callback<void(T...)>& callback, T... result) {
BrowserThread::PostTask(
@@ -371,7 +386,7 @@ void ClearAuthCacheInIO(
options.origin, options.realm, options.auth_scheme,
net::AuthCredentials(options.username, options.password));
} else {
auth_cache->Clear();
auth_cache->ClearEntriesAddedWithin(base::TimeDelta::Max());
}
} else if (options.type == "clientCertificate") {
auto client_auth_cache = network_session->ssl_client_auth_cache();
@@ -417,7 +432,8 @@ void DownloadIdCallback(content::DownloadManager* download_manager,
last_modified, offset, length, std::string(),
content::DownloadItem::INTERRUPTED,
content::DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, false);
content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, false,
std::vector<content::DownloadItem::ReceivedSlice>());
}
} // namespace
@@ -735,7 +751,7 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setDownloadPath", &Session::SetDownloadPath)
.SetMethod("enableNetworkEmulation", &Session::EnableNetworkEmulation)
.SetMethod("disableNetworkEmulation", &Session::DisableNetworkEmulation)
.SetMethod("setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("_setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)

View File

@@ -14,11 +14,7 @@ namespace atom {
namespace api {
SystemPreferences::SystemPreferences(v8::Isolate* isolate)
#if defined(OS_WIN)
: color_change_listener_(this)
#endif
{
SystemPreferences::SystemPreferences(v8::Isolate* isolate) {
Init(isolate);
#if defined(OS_WIN)
InitializeWindow();
@@ -26,6 +22,9 @@ SystemPreferences::SystemPreferences(v8::Isolate* isolate)
}
SystemPreferences::~SystemPreferences() {
#if defined(OS_WIN)
Browser::Get()->RemoveObserver(this);
#endif
}
#if !defined(OS_MACOSX)

View File

@@ -13,6 +13,8 @@
#include "native_mate/handle.h"
#if defined(OS_WIN)
#include "atom/browser/browser.h"
#include "atom/browser/browser_observer.h"
#include "ui/gfx/sys_color_change_listener.h"
#endif
@@ -26,6 +28,7 @@ namespace api {
class SystemPreferences : public mate::EventEmitter<SystemPreferences>
#if defined(OS_WIN)
, public BrowserObserver
, public gfx::SysColorChangeListener
#endif
{
@@ -51,6 +54,9 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
// gfx::SysColorChangeListener:
void OnSysColorChange() override;
// BrowserObserver:
void OnFinishLaunching(const base::DictionaryValue& launch_info) override;
#elif defined(OS_MACOSX)
using NotificationCallback = base::Callback<
void(const std::string&, const base::DictionaryValue&)>;
@@ -111,7 +117,7 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
bool invertered_color_scheme_;
gfx::ScopedSysColorChangeListener color_change_listener_;
std::unique_ptr<gfx::ScopedSysColorChangeListener> color_change_listener_;
#endif
DISALLOW_COPY_AND_ASSIGN(SystemPreferences);
};

View File

@@ -117,6 +117,14 @@ std::string SystemPreferences::GetColor(const std::string& color,
void SystemPreferences::InitializeWindow() {
invertered_color_scheme_ = IsInvertedColorScheme();
// Wait until app is ready before creating sys color listener
// Creating this listener before the app is ready causes global shortcuts
// to not fire
if (Browser::Get()->is_ready())
color_change_listener_.reset(new gfx::ScopedSysColorChangeListener(this));
else
Browser::Get()->AddObserver(this);
WNDCLASSEX window_class;
base::win::InitializeWindowClass(
kSystemPreferencesWindowClass,
@@ -172,6 +180,11 @@ void SystemPreferences::OnSysColorChange() {
Emit("color-changed");
}
void SystemPreferences::OnFinishLaunching(
const base::DictionaryValue& launch_info) {
color_change_listener_.reset(new gfx::ScopedSysColorChangeListener(this));
}
} // namespace api
} // namespace atom

View File

@@ -8,6 +8,7 @@
#include "atom/browser/net/atom_url_request.h"
#include "atom/common/api/event_emitter_caller.h"
#include "atom/common/native_mate_converters/callback.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/string16_converter.h"
#include "atom/common/node_includes.h"
@@ -145,6 +146,8 @@ mate::WrappableBase* URLRequest::New(mate::Arguments* args) {
dict.Get("method", &method);
std::string url;
dict.Get("url", &url);
std::string redirect_policy;
dict.Get("redirect", &redirect_policy);
std::string partition;
mate::Handle<api::Session> session;
if (dict.Get("session", &session)) {
@@ -156,8 +159,8 @@ mate::WrappableBase* URLRequest::New(mate::Arguments* args) {
}
auto browser_context = session->browser_context();
auto api_url_request = new URLRequest(args->isolate(), args->GetThis());
auto atom_url_request =
AtomURLRequest::Create(browser_context, method, url, api_url_request);
auto atom_url_request = AtomURLRequest::Create(
browser_context, method, url, redirect_policy, api_url_request);
api_url_request->atom_request_ = atom_url_request;
@@ -176,6 +179,7 @@ void URLRequest::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setExtraHeader", &URLRequest::SetExtraHeader)
.SetMethod("removeExtraHeader", &URLRequest::RemoveExtraHeader)
.SetMethod("setChunkedUpload", &URLRequest::SetChunkedUpload)
.SetMethod("followRedirect", &URLRequest::FollowRedirect)
.SetMethod("_setLoadFlags", &URLRequest::SetLoadFlags)
.SetProperty("notStarted", &URLRequest::NotStarted)
.SetProperty("finished", &URLRequest::Finished)
@@ -246,6 +250,17 @@ void URLRequest::Cancel() {
Close();
}
void URLRequest::FollowRedirect() {
if (request_state_.Canceled() || request_state_.Closed()) {
return;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->FollowRedirect();
}
}
bool URLRequest::SetExtraHeader(const std::string& name,
const std::string& value) {
// Request state must be in the initial non started state.
@@ -305,6 +320,24 @@ void URLRequest::SetLoadFlags(int flags) {
}
}
void URLRequest::OnReceivedRedirect(
int status_code,
const std::string& method,
const GURL& url,
scoped_refptr<net::HttpResponseHeaders> response_headers) {
if (request_state_.Canceled() || request_state_.Closed()) {
return;
}
DCHECK(atom_request_);
if (!atom_request_) {
return;
}
EmitRequestEvent(false, "redirect", status_code, method, url,
response_headers.get());
}
void URLRequest::OnAuthenticationRequired(
scoped_refptr<const net::AuthChallengeInfo> auth_info) {
if (request_state_.Canceled() || request_state_.Closed()) {

View File

@@ -99,6 +99,11 @@ class URLRequest : public mate::EventEmitter<URLRequest> {
v8::Local<v8::FunctionTemplate> prototype);
// Methods for reporting events into JavaScript.
void OnReceivedRedirect(
int status_code,
const std::string& method,
const GURL& url,
scoped_refptr<net::HttpResponseHeaders> response_headers);
void OnAuthenticationRequired(
scoped_refptr<const net::AuthChallengeInfo> auth_info);
void OnResponseStarted(
@@ -170,6 +175,7 @@ class URLRequest : public mate::EventEmitter<URLRequest> {
bool Failed() const;
bool Write(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last);
void Cancel();
void FollowRedirect();
bool SetExtraHeader(const std::string& name, const std::string& value);
void RemoveExtraHeader(const std::string& name);
void SetChunkedUpload(bool is_chunked_upload);

View File

@@ -13,7 +13,8 @@
#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/atom_security_state_model_client.h"
#include "atom/browser/atom_javascript_dialog_manager.h"
#include "atom/browser/child_web_contents_tracker.h"
#include "atom/browser/lib/bluetooth_chooser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/net/atom_network_delegate.h"
@@ -23,6 +24,7 @@
#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_contents_zoom_controller.h"
#include "atom/browser/web_view_guest_delegate.h"
#include "atom/common/api/api_messages.h"
#include "atom/common/api/event_emitter_caller.h"
@@ -39,13 +41,17 @@
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/options_switches.h"
#include "base/process/process_handle.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/values.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "chrome/browser/printing/print_preview_message_handler.h"
#include "chrome/browser/printing/print_view_manager_basic.h"
#include "chrome/browser/ssl/security_state_tab_helper.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/view_messages.h"
#include "content/public/browser/favicon_status.h"
@@ -65,12 +71,14 @@
#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/converter.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/url_request/url_request_context.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
#include "third_party/WebKit/public/web/WebFindOptions.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
#include "ui/display/screen.h"
#include "ui/events/base_event_utils.h"
#if !defined(OS_MACOSX)
#include "ui/aura/window.h"
@@ -83,6 +91,7 @@ namespace {
struct PrintSettings {
bool silent;
bool print_background;
base::string16 device_name;
};
} // namespace
@@ -120,22 +129,49 @@ struct Converter<PrintSettings> {
return false;
dict.Get("silent", &(out->silent));
dict.Get("printBackground", &(out->print_background));
dict.Get("deviceName", &(out->device_name));
return true;
}
};
template<>
struct Converter<printing::PrinterBasicInfo> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const printing::PrinterBasicInfo& val) {
mate::Dictionary dict(isolate, v8::Object::New(isolate));
dict.Set("name", val.printer_name);
dict.Set("description", val.printer_description);
dict.Set("status", val.printer_status);
dict.Set("isDefault", val.is_default ? true : false);
dict.Set("options", val.options);
return dict.GetHandle();
}
};
template<>
struct Converter<WindowOpenDisposition> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
WindowOpenDisposition val) {
std::string disposition = "other";
switch (val) {
case CURRENT_TAB: disposition = "default"; break;
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;
case WindowOpenDisposition::CURRENT_TAB:
disposition = "default";
break;
case WindowOpenDisposition::NEW_FOREGROUND_TAB:
disposition = "foreground-tab";
break;
case WindowOpenDisposition::NEW_BACKGROUND_TAB:
disposition = "background-tab";
break;
case WindowOpenDisposition::NEW_POPUP:
case WindowOpenDisposition::NEW_WINDOW:
disposition = "new-window";
break;
case WindowOpenDisposition::SAVE_TO_DISK:
disposition = "save-to-disk";
break;
default:
break;
}
return mate::ConvertToV8(isolate, disposition);
}
@@ -171,6 +207,7 @@ struct Converter<atom::api::WebContents::Type> {
switch (val) {
case Type::BACKGROUND_PAGE: type = "backgroundPage"; break;
case Type::BROWSER_WINDOW: type = "window"; break;
case Type::BROWSER_VIEW: type = "browserView"; break;
case Type::REMOTE: type = "remote"; break;
case Type::WEB_VIEW: type = "webview"; break;
case Type::OFF_SCREEN: type = "offscreen"; break;
@@ -185,10 +222,12 @@ struct Converter<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") {
if (type == "backgroundPage") {
*out = Type::BACKGROUND_PAGE;
} else if (type == "browserView") {
*out = Type::BROWSER_VIEW;
} else if (type == "webview") {
*out = Type::WEB_VIEW;
} else if (type == "offscreen") {
*out = Type::OFF_SCREEN;
} else {
@@ -223,7 +262,7 @@ content::ServiceWorkerContext* GetServiceWorkerContext(
}
// Called when CapturePage is done.
void OnCapturePageDone(base::Callback<void(const gfx::Image&)> callback,
void OnCapturePageDone(const base::Callback<void(const gfx::Image&)>& callback,
const SkBitmap& bitmap,
content::ReadbackResponse response) {
callback.Run(gfx::Image::CreateFrom1xBitmap(bitmap));
@@ -236,11 +275,11 @@ WebContents::WebContents(v8::Isolate* isolate,
Type type)
: content::WebContentsObserver(web_contents),
embedder_(nullptr),
zoom_controller_(nullptr),
type_(type),
request_id_(0),
background_throttling_(true),
enable_devtools_(true) {
if (type == REMOTE) {
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
Init(isolate);
@@ -253,9 +292,9 @@ WebContents::WebContents(v8::Isolate* isolate,
}
}
WebContents::WebContents(v8::Isolate* isolate,
const mate::Dictionary& options)
WebContents::WebContents(v8::Isolate* isolate, const mate::Dictionary& options)
: embedder_(nullptr),
zoom_controller_(nullptr),
type_(BROWSER_WINDOW),
request_id_(0),
background_throttling_(true),
@@ -273,9 +312,14 @@ WebContents::WebContents(v8::Isolate* isolate,
type_ = WEB_VIEW;
else if (options.Get("isBackgroundPage", &b) && b)
type_ = BACKGROUND_PAGE;
else if (options.Get("isBrowserView", &b) && b)
type_ = BROWSER_VIEW;
else if (options.Get("offscreen", &b) && b)
type_ = OFF_SCREEN;
// Init embedder earlier
options.Get("embedder", &embedder_);
// Whether to enable DevTools.
options.Get("devTools", &enable_devtools_);
@@ -300,7 +344,18 @@ WebContents::WebContents(v8::Isolate* isolate,
session->browser_context(), site_instance);
guest_delegate_.reset(new WebViewGuestDelegate);
params.guest_delegate = guest_delegate_.get();
web_contents = content::WebContents::Create(params);
if (embedder_ && embedder_->IsOffScreen()) {
auto* view = new OffScreenWebContentsView(false,
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 {
web_contents = content::WebContents::Create(params);
}
} else if (IsOffScreen()) {
bool transparent = false;
options.Get("transparent", &transparent);
@@ -333,10 +388,16 @@ void WebContents::InitWithSessionAndOptions(v8::Isolate* isolate,
// Save the preferences in C++.
new WebContentsPreferences(web_contents, options);
// Intialize permission helper.
// Initialize permission helper.
WebContentsPermissionHelper::CreateForWebContents(web_contents);
// Intialize security state client.
AtomSecurityStateModelClient::CreateForWebContents(web_contents);
// Initialize security state client.
SecurityStateTabHelper::CreateForWebContents(web_contents);
// Initialize zoom controller.
WebContentsZoomController::CreateForWebContents(web_contents);
zoom_controller_ = WebContentsZoomController::FromWebContents(web_contents);
double zoom_factor;
if (options.Get(options::kZoomFactor, &zoom_factor))
zoom_controller_->SetDefaultZoomFactor(zoom_factor);
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
@@ -344,7 +405,7 @@ void WebContents::InitWithSessionAndOptions(v8::Isolate* isolate,
guest_delegate_->Initialize(this);
NativeWindow* owner_window = nullptr;
if (options.Get("embedder", &embedder_) && embedder_) {
if (embedder_) {
// New WebContents's owner_window is the embedder's owner_window.
auto relay =
NativeWindowRelay::FromWebContents(embedder_->web_contents());
@@ -367,19 +428,36 @@ WebContents::~WebContents() {
if (type_ == WEB_VIEW)
guest_delegate_->Destroy();
// The WebContentsDestroyed will not be called automatically because we
// unsubscribe from webContents before destroying it. So we have to manually
// call it here to make sure "destroyed" event is emitted.
RenderViewDeleted(web_contents()->GetRenderViewHost());
WebContentsDestroyed();
if (type_ == WEB_VIEW) {
DestroyWebContents(false /* async */);
} else {
if (type_ == BROWSER_WINDOW && owner_window()) {
owner_window()->CloseContents(nullptr);
} else {
DestroyWebContents(true /* async */);
}
// The WebContentsDestroyed will not be called automatically because we
// destroy the webContents in the next tick. So we have to manually
// call it here to make sure "destroyed" event is emitted.
WebContentsDestroyed();
}
}
}
bool WebContents::AddMessageToConsole(content::WebContents* source,
int32_t level,
const base::string16& message,
int32_t line_no,
const base::string16& source_id) {
void WebContents::DestroyWebContents(bool async) {
// This event is only for internal use, which is emitted when WebContents is
// being destroyed.
Emit("will-destroy");
ResetManagedWebContents(async);
}
bool WebContents::DidAddMessageToConsole(content::WebContents* source,
int32_t level,
const base::string16& message,
int32_t line_no,
const base::string16& source_id) {
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) {
return false;
} else {
@@ -392,7 +470,7 @@ void WebContents::OnCreateWindow(
const GURL& target_url,
const std::string& frame_name,
WindowOpenDisposition disposition,
const std::vector<base::string16>& features,
const std::vector<std::string>& features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body) {
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN)
Emit("-new-window", target_url, frame_name, disposition, features, body);
@@ -401,6 +479,7 @@ void WebContents::OnCreateWindow(
}
void WebContents::WebContentsCreated(content::WebContents* source_contents,
int opener_render_process_id,
int opener_render_frame_id,
const std::string& frame_name,
const GURL& target_url,
@@ -417,20 +496,21 @@ void WebContents::AddNewContents(content::WebContents* source,
const gfx::Rect& initial_rect,
bool user_gesture,
bool* was_blocked) {
new ChildWebContentsTracker(new_contents);
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto api_web_contents = CreateFrom(isolate(), new_contents);
if (Emit("-add-new-contents", api_web_contents, disposition, user_gesture,
initial_rect.x(), initial_rect.y(), initial_rect.width(),
initial_rect.height())) {
api_web_contents->DestroyWebContents();
api_web_contents->DestroyWebContents(true /* async */);
}
}
content::WebContents* WebContents::OpenURLFromTab(
content::WebContents* source,
const content::OpenURLParams& params) {
if (params.disposition != CURRENT_TAB) {
if (params.disposition != WindowOpenDisposition::CURRENT_TAB) {
if (type_ == BROWSER_WINDOW || type_ == OFF_SCREEN)
Emit("-new-window", params.url, "", params.disposition);
else
@@ -500,8 +580,8 @@ bool WebContents::PreHandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event,
bool* is_keyboard_shortcut) {
if (event.type == blink::WebInputEvent::Type::RawKeyDown
|| event.type == blink::WebInputEvent::Type::KeyUp)
if (event.type() == blink::WebInputEvent::Type::RawKeyDown ||
event.type() == blink::WebInputEvent::Type::KeyUp)
return Emit("before-input-event", event);
else
return false;
@@ -530,7 +610,9 @@ void WebContents::ExitFullscreenModeForTab(content::WebContents* source) {
Emit("leave-html-full-screen");
}
void WebContents::RendererUnresponsive(content::WebContents* source) {
void WebContents::RendererUnresponsive(
content::WebContents* source,
const content::WebContentsUnresponsiveState& unresponsive_state) {
Emit("unresponsive");
if ((type_ == BROWSER_WINDOW || type_ == OFF_SCREEN) && owner_window())
owner_window()->RendererUnresponsive(source);
@@ -611,6 +693,15 @@ std::unique_ptr<content::BluetoothChooser> WebContents::RunBluetoothChooser(
return std::move(bluetooth_chooser);
}
content::JavaScriptDialogManager*
WebContents::GetJavaScriptDialogManager(
content::WebContents* source) {
if (!dialog_manager_)
dialog_manager_.reset(new AtomJavaScriptDialogManager(this));
return dialog_manager_.get();
}
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.
@@ -640,11 +731,13 @@ void WebContents::PluginCrashed(const base::FilePath& plugin_path,
Emit("plugin-crashed", info.name, info.version);
}
void WebContents::MediaStartedPlaying(const MediaPlayerId& id) {
void WebContents::MediaStartedPlaying(const MediaPlayerInfo& video_type,
const MediaPlayerId& id) {
Emit("media-started-playing");
}
void WebContents::MediaStoppedPlaying(const MediaPlayerId& id) {
void WebContents::MediaStoppedPlaying(const MediaPlayerInfo& video_type,
const MediaPlayerId& id) {
Emit("media-paused");
}
@@ -698,7 +791,6 @@ void WebContents::DidGetResourceResponseStart(
}
void WebContents::DidGetRedirectForResourceRequest(
content::RenderFrameHost* render_frame_host,
const content::ResourceRedirectDetails& details) {
Emit("did-get-redirect-request",
details.url,
@@ -735,10 +827,8 @@ void WebContents::DidFinishNavigation(
void WebContents::TitleWasSet(content::NavigationEntry* entry,
bool explicit_set) {
if (entry)
Emit("-page-title-updated", entry->GetTitle(), explicit_set);
else
Emit("-page-title-updated", "", explicit_set);
auto title = entry ? entry->GetTitle() : base::string16();
Emit("page-title-updated", title, explicit_set);
}
void WebContents::DidUpdateFaviconURL(
@@ -770,7 +860,7 @@ void WebContents::DevToolsOpened() {
devtools_web_contents_.Reset(isolate(), handle.ToV8());
// Set inspected tabID.
base::FundamentalValue tab_id(ID());
base::Value tab_id(ID());
managed_web_contents()->CallClientFunction(
"DevToolsAPI.setInspectedTabId", &tab_id, nullptr, nullptr);
@@ -796,6 +886,10 @@ bool WebContents::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(AtomViewHostMsg_Message, OnRendererMessage)
IPC_MESSAGE_HANDLER_DELAY_REPLY(AtomViewHostMsg_Message_Sync,
OnRendererMessageSync)
IPC_MESSAGE_HANDLER_DELAY_REPLY(AtomViewHostMsg_SetTemporaryZoomLevel,
OnSetTemporaryZoomLevel)
IPC_MESSAGE_HANDLER_DELAY_REPLY(AtomViewHostMsg_GetZoomLevel,
OnGetZoomLevel)
IPC_MESSAGE_HANDLER_CODE(ViewHostMsg_SetCursor, OnCursorChange,
handled = false)
IPC_MESSAGE_UNHANDLED(handled = false)
@@ -804,6 +898,23 @@ bool WebContents::OnMessageReceived(const IPC::Message& message) {
return handled;
}
bool WebContents::OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* frame_host) {
bool handled = true;
auto relay = NativeWindowRelay::FromWebContents(web_contents());
if (!relay)
return false;
IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(NativeWindow, message, frame_host)
IPC_MESSAGE_FORWARD(AtomAutofillFrameHostMsg_ShowPopup,
relay->window.get(), NativeWindow::ShowAutofillPopup)
IPC_MESSAGE_FORWARD(AtomAutofillFrameHostMsg_HidePopup,
relay->window.get(), NativeWindow::HideAutofillPopup)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
// There are three ways of destroying a webContents:
// 1. call webContents.destroy();
// 2. garbage collection;
@@ -817,10 +928,6 @@ bool WebContents::OnMessageReceived(const IPC::Message& message) {
// be destroyed on close, and WebContentsDestroyed would be called for it, so
// we need to make sure the api::WebContents is also deleted.
void WebContents::WebContentsDestroyed() {
// This event is only for internal use, which is emitted when WebContents is
// being destroyed.
Emit("will-destroy");
// Cleanup relationships with other parts.
RemoveFromWeakMap();
@@ -843,7 +950,7 @@ void WebContents::NavigationEntryCommitted(
int64_t WebContents::GetID() const {
int64_t process_id = web_contents()->GetRenderProcessHost()->GetID();
int64_t routing_id = web_contents()->GetRoutingID();
int64_t routing_id = web_contents()->GetRenderViewHost()->GetRoutingID();
int64_t rv = (process_id << 32) + routing_id;
return rv;
}
@@ -852,6 +959,11 @@ int WebContents::GetProcessID() const {
return web_contents()->GetRenderProcessHost()->GetID();
}
base::ProcessId WebContents::GetOSProcessID() const {
auto process_handle = web_contents()->GetRenderProcessHost()->GetHandle();
return base::GetProcId(process_handle);
}
WebContents::Type WebContents::GetType() const {
return type_;
}
@@ -861,7 +973,7 @@ bool WebContents::Equal(const WebContents* web_contents) const {
}
void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
if (!url.is_valid()) {
if (!url.is_valid() || url.spec().size() > url::kMaxURLChars) {
Emit("did-fail-load",
static_cast<int>(net::ERR_INVALID_URL),
net::ErrorToShortString(net::ERR_INVALID_URL),
@@ -891,6 +1003,12 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
params.load_type = content::NavigationController::LOAD_TYPE_HTTP_POST;
}
GURL base_url_for_data_url;
if (options.Get("baseURLForDataURL", &base_url_for_data_url)) {
params.base_url_for_data_url = base_url_for_data_url;
params.load_type = content::NavigationController::LOAD_TYPE_DATA;
}
params.transition_type = ui::PAGE_TRANSITION_TYPED;
params.should_clear_history_list = true;
params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
@@ -900,14 +1018,16 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
// We have to call it right after LoadURL because the RenderViewHost is only
// created after loading a page.
const auto view = web_contents()->GetRenderWidgetHostView();
WebContentsPreferences* web_preferences =
WebContentsPreferences::FromWebContents(web_contents());
std::string color_name;
if (web_preferences->web_preferences()->GetString(options::kBackgroundColor,
&color_name)) {
view->SetBackgroundColor(ParseHexColor(color_name));
} else {
view->SetBackgroundColor(SK_ColorTRANSPARENT);
if (view) {
WebContentsPreferences* web_preferences =
WebContentsPreferences::FromWebContents(web_contents());
std::string color_name;
if (web_preferences->web_preferences()->GetString(options::kBackgroundColor,
&color_name)) {
view->SetBackgroundColor(ParseHexColor(color_name));
} else {
view->SetBackgroundColor(SK_ColorTRANSPARENT);
}
}
}
@@ -964,6 +1084,23 @@ void WebContents::GoToOffset(int offset) {
web_contents()->GetController().GoToOffset(offset);
}
const std::string WebContents::GetWebRTCIPHandlingPolicy() const {
return web_contents()->
GetMutableRendererPrefs()->webrtc_ip_handling_policy;
}
void WebContents::SetWebRTCIPHandlingPolicy(
const std::string& webrtc_ip_handling_policy) {
if (GetWebRTCIPHandlingPolicy() == webrtc_ip_handling_policy)
return;
web_contents()->GetMutableRendererPrefs()->webrtc_ip_handling_policy =
webrtc_ip_handling_policy;
content::RenderViewHost* host = web_contents()->GetRenderViewHost();
if (host)
host->SyncRendererPrefs();
}
bool WebContents::IsCrashed() const {
return web_contents()->IsCrashed();
}
@@ -1074,7 +1211,7 @@ void WebContents::InspectServiceWorker() {
for (const auto& agent_host : content::DevToolsAgentHost::GetOrCreateAll()) {
if (agent_host->GetType() ==
content::DevToolsAgentHost::TYPE_SERVICE_WORKER) {
content::DevToolsAgentHost::kTypeServiceWorker) {
OpenDevTools(nullptr);
managed_web_contents()->AttachTo(agent_host);
break;
@@ -1112,14 +1249,24 @@ bool WebContents::IsAudioMuted() {
}
void WebContents::Print(mate::Arguments* args) {
PrintSettings settings = { false, false };
PrintSettings settings = { false, false, base::string16() };
if (args->Length() == 1 && !args->GetNext(&settings)) {
args->ThrowError();
return;
}
printing::PrintViewManagerBasic::FromWebContents(web_contents())->
PrintNow(settings.silent, settings.print_background);
PrintNow(web_contents()->GetMainFrame(),
settings.silent,
settings.print_background,
settings.device_name);
}
std::vector<printing::PrinterBasicInfo> WebContents::GetPrinterList() {
std::vector<printing::PrinterBasicInfo> printers;
auto print_backend = printing::PrintBackend::CreateInstance(nullptr);
print_backend->EnumeratePrinters(&printers);
return printers;
}
void WebContents::PrintToPDF(const base::DictionaryValue& setting,
@@ -1179,7 +1326,7 @@ void WebContents::SelectAll() {
}
void WebContents::Unselect() {
web_contents()->Unselect();
web_contents()->CollapseSelection();
}
void WebContents::Replace(const base::string16& word) {
@@ -1254,30 +1401,31 @@ bool WebContents::SendIPCMessage(bool all_frames,
void WebContents::SendInputEvent(v8::Isolate* isolate,
v8::Local<v8::Value> input_event) {
const auto view = web_contents()->GetRenderWidgetHostView();
const auto view = static_cast<content::RenderWidgetHostViewBase*>(
web_contents()->GetRenderWidgetHostView());
if (!view)
return;
const auto host = view->GetRenderWidgetHost();
if (!host)
return;
int type = mate::GetWebInputEventType(isolate, input_event);
if (blink::WebInputEvent::isMouseEventType(type)) {
blink::WebMouseEvent mouse_event;
if (mate::ConvertFromV8(isolate, input_event, &mouse_event)) {
host->ForwardMouseEvent(mouse_event);
view->ProcessMouseEvent(mouse_event, ui::LatencyInfo());
return;
}
} else if (blink::WebInputEvent::isKeyboardEventType(type)) {
content::NativeWebKeyboardEvent keyboard_event;
content::NativeWebKeyboardEvent keyboard_event(
blink::WebKeyboardEvent::RawKeyDown,
blink::WebInputEvent::NoModifiers,
ui::EventTimeForNow());
if (mate::ConvertFromV8(isolate, input_event, &keyboard_event)) {
host->ForwardKeyboardEvent(keyboard_event);
view->ProcessKeyboardEvent(keyboard_event);
return;
}
} else if (type == blink::WebInputEvent::MouseWheel) {
blink::WebMouseWheelEvent mouse_wheel_event;
if (mate::ConvertFromV8(isolate, input_event, &mouse_wheel_event)) {
host->ForwardWheelEvent(mouse_wheel_event);
view->ProcessMouseWheelEvent(mouse_wheel_event, ui::LatencyInfo());
return;
}
}
@@ -1325,17 +1473,25 @@ void WebContents::StartDrag(const mate::Dictionary& item,
// Error checking.
if (icon.IsEmpty()) {
args->ThrowError("icon must be set");
args->ThrowError("Must specify 'icon' option");
return;
}
#if defined(OS_MACOSX)
// NSWindow.dragImage requires a non-empty NSImage
if (icon->image().IsEmpty()) {
args->ThrowError("Must specify non-empty 'icon' option");
return;
}
#endif
// 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");
args->ThrowError("Must specify either 'file' or 'files' option");
}
}
@@ -1351,8 +1507,7 @@ void WebContents::CapturePage(mate::Arguments* args) {
}
const auto view = web_contents()->GetRenderWidgetHostView();
const auto host = view ? view->GetRenderWidgetHost() : nullptr;
if (!view || !host) {
if (!view) {
callback.Run(gfx::Image());
return;
}
@@ -1372,10 +1527,10 @@ void WebContents::CapturePage(mate::Arguments* args) {
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);
view->CopyFromSurface(gfx::Rect(rect.origin(), view_size),
bitmap_size,
base::Bind(&OnCapturePageDone, callback),
kBGRA_8888_SkColorType);
}
void WebContents::OnCursorChange(const content::WebCursor& cursor) {
@@ -1406,10 +1561,12 @@ bool WebContents::IsOffScreen() const {
return type_ == OFF_SCREEN;
}
bool WebContents::IsOffScreenOrEmbedderOffscreen() const {
return IsOffScreen() || (embedder_ && embedder_->IsOffScreen());
}
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);
Emit("paint", dirty_rect, gfx::Image::CreateFrom1xBitmap(bitmap));
}
void WebContents::StartPainting() {
@@ -1461,13 +1618,59 @@ int WebContents::GetFrameRate() const {
}
void WebContents::Invalidate() {
if (!IsOffScreen())
return;
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
if (IsOffScreen()) {
auto* osr_rwhv = static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
if (osr_rwhv)
osr_rwhv->Invalidate();
if (osr_rwhv)
osr_rwhv->Invalidate();
} else {
const auto window = owner_window();
if (window)
window->Invalidate();
}
}
gfx::Size WebContents::GetSizeForNewRenderView(
content::WebContents* wc) const {
if (IsOffScreen() && wc == web_contents()) {
auto relay = NativeWindowRelay::FromWebContents(web_contents());
if (relay) {
return relay->window->GetSize();
}
}
return gfx::Size();
}
void WebContents::SetZoomLevel(double level) {
zoom_controller_->SetZoomLevel(level);
}
double WebContents::GetZoomLevel() {
return zoom_controller_->GetZoomLevel();
}
void WebContents::SetZoomFactor(double factor) {
auto level = content::ZoomFactorToZoomLevel(factor);
SetZoomLevel(level);
}
double WebContents::GetZoomFactor() {
auto level = GetZoomLevel();
return content::ZoomLevelToZoomFactor(level);
}
void WebContents::OnSetTemporaryZoomLevel(double level,
IPC::Message* reply_msg) {
zoom_controller_->SetTemporaryZoomLevel(level);
double new_level = zoom_controller_->GetZoomLevel();
AtomViewHostMsg_SetTemporaryZoomLevel::WriteReplyParams(reply_msg, new_level);
Send(reply_msg);
}
void WebContents::OnGetZoomLevel(IPC::Message* reply_msg) {
AtomViewHostMsg_GetZoomLevel::WriteReplyParams(reply_msg, GetZoomLevel());
Send(reply_msg);
}
v8::Local<v8::Value> WebContents::GetWebPreferences(v8::Isolate* isolate) {
@@ -1539,6 +1742,7 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.MakeDestroyable()
.SetMethod("getId", &WebContents::GetID)
.SetMethod("getProcessId", &WebContents::GetProcessID)
.SetMethod("getOSProcessId", &WebContents::GetOSProcessID)
.SetMethod("equal", &WebContents::Equal)
.SetMethod("_loadURL", &WebContents::LoadURL)
.SetMethod("downloadURL", &WebContents::DownloadURL)
@@ -1598,6 +1802,10 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setFrameRate", &WebContents::SetFrameRate)
.SetMethod("getFrameRate", &WebContents::GetFrameRate)
.SetMethod("invalidate", &WebContents::Invalidate)
.SetMethod("setZoomLevel", &WebContents::SetZoomLevel)
.SetMethod("_getZoomLevel", &WebContents::GetZoomLevel)
.SetMethod("setZoomFactor", &WebContents::SetZoomFactor)
.SetMethod("_getZoomFactor", &WebContents::GetZoomFactor)
.SetMethod("getType", &WebContents::GetType)
.SetMethod("getWebPreferences", &WebContents::GetWebPreferences)
.SetMethod("getOwnerBrowserWindow", &WebContents::GetOwnerBrowserWindow)
@@ -1606,6 +1814,7 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
&WebContents::UnregisterServiceWorker)
.SetMethod("inspectServiceWorker", &WebContents::InspectServiceWorker)
.SetMethod("print", &WebContents::Print)
.SetMethod("getPrinters", &WebContents::GetPrinterList)
.SetMethod("_printToPDF", &WebContents::PrintToPDF)
.SetMethod("addWorkSpace", &WebContents::AddWorkSpace)
.SetMethod("removeWorkSpace", &WebContents::RemoveWorkSpace)
@@ -1614,6 +1823,10 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("copyImageAt", &WebContents::CopyImageAt)
.SetMethod("capturePage", &WebContents::CapturePage)
.SetMethod("setEmbedder", &WebContents::SetEmbedder)
.SetMethod("setWebRTCIPHandlingPolicy",
&WebContents::SetWebRTCIPHandlingPolicy)
.SetMethod("getWebRTCIPHandlingPolicy",
&WebContents::GetWebRTCIPHandlingPolicy)
.SetProperty("id", &WebContents::ID)
.SetProperty("session", &WebContents::Session)
.SetProperty("hostWebContents", &WebContents::HostWebContents)

View File

@@ -12,10 +12,12 @@
#include "atom/browser/api/save_page_handler.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/common_web_contents_delegate.h"
#include "atom/browser/ui/autofill_popup.h"
#include "content/common/cursors/webcursor.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/favicon_url.h"
#include "native_mate/handle.h"
#include "printing/backend/print_backend.h"
#include "ui/gfx/image/image.h"
namespace blink {
@@ -39,6 +41,8 @@ namespace atom {
struct SetSizeParams;
class AtomBrowserContext;
class AtomJavaScriptDialogManager;
class WebContentsZoomController;
class WebViewGuestDelegate;
namespace api {
@@ -49,10 +53,11 @@ class WebContents : public mate::TrackableObject<WebContents>,
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
BROWSER_WINDOW, // Used by BrowserWindow.
BROWSER_VIEW, // Used by BrowserView.
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)
@@ -72,8 +77,12 @@ class WebContents : public mate::TrackableObject<WebContents>,
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Notifies to destroy any guest web contents before destroying self.
void DestroyWebContents(bool async);
int64_t GetID() const;
int GetProcessID() const;
base::ProcessId GetOSProcessID() const;
Type GetType() const;
bool Equal(const WebContents* web_contents) const;
void LoadURL(const GURL& url, const mate::Dictionary& options);
@@ -88,6 +97,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
void GoBack();
void GoForward();
void GoToOffset(int offset);
const std::string GetWebRTCIPHandlingPolicy() const;
void SetWebRTCIPHandlingPolicy(const std::string& webrtc_ip_handling_policy);
bool IsCrashed() const;
void SetUserAgent(const std::string& user_agent, mate::Arguments* args);
std::string GetUserAgent();
@@ -109,6 +120,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
void SetAudioMuted(bool muted);
bool IsAudioMuted();
void Print(mate::Arguments* args);
std::vector<printing::PrinterBasicInfo> GetPrinterList();
void SetEmbedder(const WebContents* embedder);
// Print current page as PDF.
@@ -166,6 +178,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
// Methods for offscreen rendering
bool IsOffScreen() const;
bool IsOffScreenOrEmbedderOffscreen() const;
void OnPaint(const gfx::Rect& dirty_rect, const SkBitmap& bitmap);
void StartPainting();
void StopPainting();
@@ -173,6 +186,13 @@ class WebContents : public mate::TrackableObject<WebContents>,
void SetFrameRate(int frame_rate);
int GetFrameRate() const;
void Invalidate();
gfx::Size GetSizeForNewRenderView(content::WebContents*) const override;
// Methods for zoom handling.
void SetZoomLevel(double level);
double GetZoomLevel();
void SetZoomFactor(double factor);
double GetZoomFactor();
// Callback triggered on permission response.
void OnEnterFullscreenModeForTab(content::WebContents* source,
@@ -184,7 +204,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
const GURL& target_url,
const std::string& frame_name,
WindowOpenDisposition disposition,
const std::vector<base::string16>& features,
const std::vector<std::string>& features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body);
// Returns the web preferences of current WebContents.
@@ -200,6 +220,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
v8::Local<v8::Value> DevToolsWebContents(v8::Isolate* isolate);
v8::Local<v8::Value> Debugger(v8::Isolate* isolate);
WebContentsZoomController* GetZoomController() { return zoom_controller_; }
protected:
WebContents(v8::Isolate* isolate,
content::WebContents* web_contents,
@@ -213,12 +235,13 @@ class WebContents : public mate::TrackableObject<WebContents>,
const mate::Dictionary& options);
// content::WebContentsDelegate:
bool AddMessageToConsole(content::WebContents* source,
int32_t level,
const base::string16& message,
int32_t line_no,
const base::string16& source_id) override;
bool DidAddMessageToConsole(content::WebContents* source,
int32_t level,
const base::string16& message,
int32_t line_no,
const base::string16& source_id) override;
void WebContentsCreated(content::WebContents* source_contents,
int opener_render_process_id,
int opener_render_frame_id,
const std::string& frame_name,
const GURL& target_url,
@@ -250,7 +273,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
void EnterFullscreenModeForTab(content::WebContents* source,
const GURL& origin) override;
void ExitFullscreenModeForTab(content::WebContents* source) override;
void RendererUnresponsive(content::WebContents* source) override;
void RendererUnresponsive(
content::WebContents* source,
const content::WebContentsUnresponsiveState& unresponsive_state) override;
void RendererResponsive(content::WebContents* source) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
bool OnGoToEntryOffset(int offset) override;
@@ -275,6 +300,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
std::unique_ptr<content::BluetoothChooser> RunBluetoothChooser(
content::RenderFrameHost* frame,
const content::BluetoothChooser::EventHandler& handler) override;
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
content::WebContents* source) override;
// content::WebContentsObserver:
void BeforeUnloadFired(const base::TimeTicks& proceed_time) override;
@@ -295,11 +322,12 @@ class WebContents : public mate::TrackableObject<WebContents>,
void DidGetResourceResponseStart(
const content::ResourceRequestDetails& details) override;
void DidGetRedirectForResourceRequest(
content::RenderFrameHost* render_frame_host,
const content::ResourceRedirectDetails& details) override;
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override;
bool OnMessageReceived(const IPC::Message& message) override;
bool OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* frame_host) override;
void WebContentsDestroyed() override;
void NavigationEntryCommitted(
const content::LoadCommittedDetails& load_details) override;
@@ -308,8 +336,10 @@ class WebContents : public mate::TrackableObject<WebContents>,
const std::vector<content::FaviconURL>& urls) override;
void PluginCrashed(const base::FilePath& plugin_path,
base::ProcessId plugin_pid) override;
void MediaStartedPlaying(const MediaPlayerId& id) override;
void MediaStoppedPlaying(const MediaPlayerId& id) override;
void MediaStartedPlaying(const MediaPlayerInfo& video_type,
const MediaPlayerId& id) override;
void MediaStoppedPlaying(const MediaPlayerInfo& video_type,
const MediaPlayerId& id) override;
void DidChangeThemeColor(SkColor theme_color) override;
// brightray::InspectableWebContentsDelegate:
@@ -339,15 +369,27 @@ class WebContents : public mate::TrackableObject<WebContents>,
const base::ListValue& args,
IPC::Message* message);
// Called when received a synchronous message from renderer to
// set temporary zoom level.
void OnSetTemporaryZoomLevel(double level, IPC::Message* reply_msg);
// Called when received a synchronous message from renderer to
// get the zoom level.
void OnGetZoomLevel(IPC::Message* reply_msg);
v8::Global<v8::Value> session_;
v8::Global<v8::Value> devtools_web_contents_;
v8::Global<v8::Value> debugger_;
std::unique_ptr<AtomJavaScriptDialogManager> dialog_manager_;
std::unique_ptr<WebViewGuestDelegate> guest_delegate_;
// The host webcontents that may contain this webcontents.
WebContents* embedder_;
// The zoom controller for this webContents.
WebContentsZoomController* zoom_controller_;
// The type of current WebContents.
Type type_;

View File

@@ -20,13 +20,14 @@ using content::BrowserThread;
namespace mate {
template<>
struct Converter<extensions::URLPattern> {
struct Converter<URLPattern> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
extensions::URLPattern* out) {
URLPattern* out) {
std::string pattern;
if (!ConvertFromV8(isolate, val, &pattern))
return false;
return out->Parse(pattern) == extensions::URLPattern::PARSE_SUCCESS;
*out = URLPattern(URLPattern::SCHEME_ALL);
return out->Parse(pattern) == URLPattern::PARSE_SUCCESS;
}
};

View File

@@ -3,10 +3,12 @@
// found in the LICENSE file.
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/web_contents_zoom_controller.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 "atom/common/options_switches.h"
#include "content/public/browser/browser_context.h"
#include "native_mate/dictionary.h"
@@ -24,6 +26,12 @@ void AddGuest(int guest_instance_id,
manager->AddGuest(guest_instance_id, element_instance_id, embedder,
guest_web_contents);
double zoom_factor;
if (options.GetDouble(atom::options::kZoomFactor, &zoom_factor)) {
atom::WebContentsZoomController::FromWebContents(guest_web_contents)
->SetDefaultZoomFactor(zoom_factor);
}
WebContentsPreferences::FromWebContents(guest_web_contents)->Merge(options);
}

View File

@@ -5,6 +5,7 @@
#include "atom/browser/api/atom_api_window.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/browser/api/atom_api_browser_view.h"
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/browser.h"
@@ -172,7 +173,7 @@ void Window::WillDestroyNativeObject() {
}
void Window::OnWindowClosed() {
api_web_contents_->DestroyWebContents();
api_web_contents_->DestroyWebContents(true /* async */);
RemoveFromWeakMap();
window_->RemoveObserver(this);
@@ -190,6 +191,10 @@ void Window::OnWindowClosed() {
FROM_HERE, GetDestroyClosure());
}
void Window::OnWindowEndSession() {
Emit("session-end");
}
void Window::OnWindowBlur() {
Emit("blur");
}
@@ -262,6 +267,14 @@ void Window::OnWindowSwipe(const std::string& direction) {
Emit("swipe", direction);
}
void Window::OnWindowSheetBegin() {
Emit("sheet-begin");
}
void Window::OnWindowSheetEnd() {
Emit("sheet-end");
}
void Window::OnWindowEnterHtmlFullScreen() {
Emit("enter-html-full-screen");
}
@@ -282,6 +295,11 @@ void Window::OnExecuteWindowsCommand(const std::string& command_name) {
Emit("app-command", command_name);
}
void Window::OnTouchBarItemResult(const std::string& item_id,
const base::DictionaryValue& details) {
Emit("-touch-bar-interaction", item_id, details);
}
#if defined(OS_WIN)
void Window::OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) {
if (IsWindowMessageHooked(message)) {
@@ -512,8 +530,17 @@ bool Window::IsClosable() {
void Window::SetAlwaysOnTop(bool top, mate::Arguments* args) {
std::string level = "floating";
int relativeLevel = 0;
std::string error;
args->GetNext(&level);
window_->SetAlwaysOnTop(top, level);
args->GetNext(&relativeLevel);
window_->SetAlwaysOnTop(top, level, relativeLevel, &error);
if (!error.empty()) {
args->ThrowError(error);
}
}
bool Window::IsAlwaysOnTop() {
@@ -802,6 +829,25 @@ std::vector<v8::Local<v8::Object>> Window::GetChildWindows() const {
return child_windows_.Values(isolate());
}
v8::Local<v8::Value> Window::GetBrowserView() const {
if (browser_view_.IsEmpty()) {
return v8::Null(isolate());
}
return v8::Local<v8::Value>::New(isolate(), browser_view_);
}
void Window::SetBrowserView(v8::Local<v8::Value> value) {
mate::Handle<BrowserView> browser_view;
if (value->IsNull()) {
window_->SetBrowserView(nullptr);
browser_view_.Reset();
} else if (mate::ConvertFromV8(isolate(), value, &browser_view)) {
window_->SetBrowserView(browser_view->view());
browser_view_.Reset(isolate(), value);
}
}
bool Window::IsModal() const {
return window_->is_modal();
}
@@ -831,15 +877,28 @@ void Window::SetVibrancy(mate::Arguments* args) {
window_->SetVibrancy(type);
}
void Window::SetTouchBar(const std::vector<mate::PersistentDictionary>& items) {
window_->SetTouchBar(items);
}
void Window::RefreshTouchBarItem(const std::string& item_id) {
window_->RefreshTouchBarItem(item_id);
}
void Window::SetEscapeTouchBarItem(const mate::PersistentDictionary& item) {
window_->SetEscapeTouchBarItem(item);
}
int32_t Window::ID() const {
return weak_map_id();
}
v8::Local<v8::Value> Window::WebContents(v8::Isolate* isolate) {
if (web_contents_.IsEmpty())
if (web_contents_.IsEmpty()) {
return v8::Null(isolate);
else
return v8::Local<v8::Value>::New(isolate, web_contents_);
}
return v8::Local<v8::Value>::New(isolate, web_contents_);
}
void Window::RemoveFromParentChildWindows() {
@@ -884,6 +943,8 @@ void Window::BuildPrototype(v8::Isolate* isolate,
#endif
.SetMethod("getParentWindow", &Window::GetParentWindow)
.SetMethod("getChildWindows", &Window::GetChildWindows)
.SetMethod("getBrowserView", &Window::GetBrowserView)
.SetMethod("setBrowserView", &Window::SetBrowserView)
.SetMethod("isModal", &Window::IsModal)
.SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
.SetMethod("getBounds", &Window::GetBounds)
@@ -951,6 +1012,9 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setAutoHideCursor", &Window::SetAutoHideCursor)
#endif
.SetMethod("setVibrancy", &Window::SetVibrancy)
.SetMethod("_setTouchBarItems", &Window::SetTouchBar)
.SetMethod("_refreshTouchBarItem", &Window::RefreshTouchBarItem)
.SetMethod("_setEscapeTouchBarItem", &Window::SetEscapeTouchBarItem)
#if defined(OS_WIN)
.SetMethod("hookWindowMessage", &Window::HookWindowMessage)
.SetMethod("isWindowMessageHooked", &Window::IsWindowMessageHooked)

View File

@@ -16,6 +16,7 @@
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/key_weak_map.h"
#include "native_mate/handle.h"
#include "native_mate/persistent_dictionary.h"
#include "ui/gfx/image/image.h"
class GURL;
@@ -51,6 +52,8 @@ class Window : public mate::TrackableObject<Window>,
NativeWindow* window() const { return window_.get(); }
int32_t ID() const;
protected:
Window(v8::Isolate* isolate, v8::Local<v8::Object> wrapper,
const mate::Dictionary& options);
@@ -60,6 +63,7 @@ class Window : public mate::TrackableObject<Window>,
void WillCloseWindow(bool* prevent_default) override;
void WillDestroyNativeObject() override;
void OnWindowClosed() override;
void OnWindowEndSession() override;
void OnWindowBlur() override;
void OnWindowFocus() override;
void OnWindowShow() override;
@@ -76,6 +80,8 @@ class Window : public mate::TrackableObject<Window>,
void OnWindowScrollTouchEnd() override;
void OnWindowScrollTouchEdge() override;
void OnWindowSwipe(const std::string& direction) override;
void OnWindowSheetBegin() override;
void OnWindowSheetEnd() override;
void OnWindowEnterFullScreen() override;
void OnWindowLeaveFullScreen() override;
void OnWindowEnterHtmlFullScreen() override;
@@ -83,6 +89,8 @@ class Window : public mate::TrackableObject<Window>,
void OnRendererUnresponsive() override;
void OnRendererResponsive() override;
void OnExecuteWindowsCommand(const std::string& command_name) override;
void OnTouchBarItemResult(const std::string& item_id,
const base::DictionaryValue& details) override;
#if defined(OS_WIN)
void OnWindowMessage(UINT message, WPARAM w_param, LPARAM l_param) override;
@@ -175,6 +183,8 @@ class Window : public mate::TrackableObject<Window>,
void SetParentWindow(v8::Local<v8::Value> value, mate::Arguments* args);
v8::Local<v8::Value> GetParentWindow() const;
std::vector<v8::Local<v8::Object>> GetChildWindows() const;
v8::Local<v8::Value> GetBrowserView() const;
void SetBrowserView(v8::Local<v8::Value> value);
bool IsModal() const;
v8::Local<v8::Value> GetNativeWindowHandle();
@@ -201,8 +211,10 @@ class Window : public mate::TrackableObject<Window>,
void SetAutoHideCursor(bool auto_hide);
void SetVibrancy(mate::Arguments* args);
void SetTouchBar(const std::vector<mate::PersistentDictionary>& items);
void RefreshTouchBarItem(const std::string& item_id);
void SetEscapeTouchBarItem(const mate::PersistentDictionary& item);
int32_t ID() const;
v8::Local<v8::Value> WebContents(v8::Isolate* isolate);
// Remove this window from parent window's |child_windows_|.
@@ -213,6 +225,7 @@ class Window : public mate::TrackableObject<Window>,
MessageCallbackMap messages_callback_map_;
#endif
v8::Global<v8::Value> browser_view_;
v8::Global<v8::Value> web_contents_;
v8::Global<v8::Value> menu_;
v8::Global<v8::Value> parent_window_;

View File

@@ -24,6 +24,7 @@ FrameSubscriber::FrameSubscriber(v8::Isolate* isolate,
view_(view),
callback_(callback),
only_dirty_(only_dirty),
source_id_for_copy_request_(base::UnguessableToken::Create()),
weak_factory_(this) {
}
@@ -32,8 +33,7 @@ bool FrameSubscriber::ShouldCaptureFrame(
base::TimeTicks present_time,
scoped_refptr<media::VideoFrame>* storage,
DeliverFrameCallback* callback) {
const auto host = view_ ? view_->GetRenderWidgetHost() : nullptr;
if (!view_ || !host)
if (!view_)
return false;
if (dirty_rect.IsEmpty())
@@ -54,7 +54,7 @@ bool FrameSubscriber::ShouldCaptureFrame(
rect = gfx::Rect(rect.origin(), bitmap_size);
host->CopyFromBackingStore(
view_->CopyFromSurface(
rect,
rect.size(),
base::Bind(&FrameSubscriber::OnFrameDelivered,
@@ -64,6 +64,10 @@ bool FrameSubscriber::ShouldCaptureFrame(
return false;
}
const base::UnguessableToken& FrameSubscriber::GetSourceIdForCopyRequest() {
return source_id_for_copy_request_;
}
void FrameSubscriber::OnFrameDelivered(const FrameCaptureCallback& callback,
const gfx::Rect& damage_rect,
const SkBitmap& bitmap,

View File

@@ -7,9 +7,9 @@
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "content/browser/renderer_host/render_widget_host_view_frame_subscriber.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 "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/geometry/size.h"
#include "v8/include/v8.h"
@@ -32,6 +32,7 @@ class FrameSubscriber : public content::RenderWidgetHostViewFrameSubscriber {
base::TimeTicks present_time,
scoped_refptr<media::VideoFrame>* storage,
DeliverFrameCallback* callback) override;
const base::UnguessableToken& GetSourceIdForCopyRequest() override;
private:
void OnFrameDelivered(const FrameCaptureCallback& callback,
@@ -44,6 +45,8 @@ class FrameSubscriber : public content::RenderWidgetHostViewFrameSubscriber {
FrameCaptureCallback callback_;
bool only_dirty_;
base::UnguessableToken source_id_for_copy_request_;
base::WeakPtrFactory<FrameSubscriber> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(FrameSubscriber);

View File

@@ -7,11 +7,13 @@
#include <string>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/common/google_api_key.h"
#include "base/environment.h"
#include "content/public/browser/browser_thread.h"
#include "device/geolocation/geolocation_provider.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
#include "net/url_request/url_request_context_getter.h"
using content::BrowserThread;
@@ -19,51 +21,40 @@ namespace atom {
namespace internal {
// 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> {
class GeoURLRequestContextGetter : public net::URLRequestContextGetter {
public:
explicit TokenLoadingJob(
const device::AccessTokenStore::LoadAccessTokensCallback& callback)
: callback_(callback), request_context_getter_(nullptr) {}
net::URLRequestContext* GetURLRequestContext() override {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!url_request_context_.get()) {
net::URLRequestContextBuilder builder;
builder.set_proxy_config_service(
net::ProxyService::CreateSystemProxyConfigService(
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
url_request_context_ = builder.Build();
}
return url_request_context_.get();
}
void Run(AtomBrowserContext* browser_context) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
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;
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&TokenLoadingJob::RespondOnIOThread, this));
scoped_refptr<base::SingleThreadTaskRunner> GetNetworkTaskRunner()
const override {
return BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
}
private:
friend class base::RefCountedThreadSafe<TokenLoadingJob>;
friend class atom::AtomAccessTokenStore;
~TokenLoadingJob() {}
GeoURLRequestContextGetter() {}
~GeoURLRequestContextGetter() override {}
void RespondOnIOThread() {
// 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.
device::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_);
}
device::AccessTokenStore::LoadAccessTokensCallback callback_;
net::URLRequestContextGetter* request_context_getter_;
std::string api_key_;
std::unique_ptr<net::URLRequestContext> url_request_context_;
DISALLOW_COPY_AND_ASSIGN(GeoURLRequestContextGetter);
};
} // namespace internal
AtomAccessTokenStore::AtomAccessTokenStore() {
browser_context_ = AtomBrowserContext::From("", false);
AtomAccessTokenStore::AtomAccessTokenStore()
: request_context_getter_(new internal::GeoURLRequestContextGetter) {
device::GeolocationProvider::GetInstance()->UserDidOptIntoLocationServices();
}
@@ -72,16 +63,19 @@ AtomAccessTokenStore::~AtomAccessTokenStore() {
void AtomAccessTokenStore::LoadAccessTokens(
const LoadAccessTokensCallback& callback) {
scoped_refptr<internal::TokenLoadingJob> job(
new internal::TokenLoadingJob(callback));
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(&AtomAccessTokenStore::RunTokenLoadingJob,
this, base::RetainedRef(job)));
}
std::unique_ptr<base::Environment> env(base::Environment::Create());
std::string api_key;
if (!env->GetVar("GOOGLE_API_KEY", &api_key))
api_key = GOOGLEAPIS_API_KEY;
// 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.
device::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);
void AtomAccessTokenStore::RunTokenLoadingJob(
scoped_refptr<internal::TokenLoadingJob> job) {
job->Run(browser_context_.get());
callback.Run(access_token_map, request_context_getter_.get());
}
void AtomAccessTokenStore::SaveAccessToken(const GURL& server_url,

View File

@@ -9,10 +9,8 @@
namespace atom {
class AtomBrowserContext;
namespace internal {
class TokenLoadingJob;
class GeoURLRequestContextGetter;
}
class AtomAccessTokenStore : public device::AccessTokenStore {
@@ -27,9 +25,7 @@ class AtomAccessTokenStore : public device::AccessTokenStore {
const base::string16& access_token) override;
private:
void RunTokenLoadingJob(scoped_refptr<internal::TokenLoadingJob> job);
scoped_refptr<AtomBrowserContext> browser_context_;
scoped_refptr<internal::GeoURLRequestContextGetter> request_context_getter_;
DISALLOW_COPY_AND_ASSIGN(AtomAccessTokenStore);
};

View File

@@ -15,6 +15,7 @@
#include "atom/browser/atom_quota_permission_context.h"
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_speech_recognition_manager_delegate.h"
#include "atom/browser/child_web_contents_tracker.h"
#include "atom/browser/native_window.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
@@ -87,17 +88,31 @@ content::WebContents* AtomBrowserClient::GetWebContentsFromProcessID(
}
bool AtomBrowserClient::ShouldCreateNewSiteInstance(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& url) {
if (url.SchemeIs(url::kJavaScriptScheme))
// "javacript:" scheme should always use same SiteInstance
return false;
if (!IsRendererSandboxed(current_instance->GetProcess()->GetID()))
// non-sandboxed renderers should always create a new SiteInstance
return true;
int process_id = current_instance->GetProcess()->GetID();
if (!IsRendererSandboxed(process_id)) {
if (!RendererUsesNativeWindowOpen(process_id)) {
// non-sandboxed renderers without native window.open should always create
// a new SiteInstance
return true;
}
auto web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
if (!ChildWebContentsTracker::IsChildWebContents(web_contents)) {
// Root WebContents should always create new process to make sure
// native addons are loaded correctly after reload / navigation.
// (Non-root WebContents opened by window.open() should try to
// reuse process to allow synchronous cross-window scripting.)
return true;
}
}
// Create new a SiteInstance if navigating to a different site.
auto src_url = current_instance->GetSiteURL();
@@ -109,19 +124,33 @@ bool AtomBrowserClient::ShouldCreateNewSiteInstance(
content::SiteInstance::GetSiteForURL(browser_context, url) != src_url;
}
void AtomBrowserClient::AddSandboxedRendererId(int process_id) {
base::AutoLock auto_lock(sandboxed_renderers_lock_);
sandboxed_renderers_.insert(process_id);
void AtomBrowserClient::AddProcessPreferences(
int process_id, AtomBrowserClient::ProcessPreferences prefs) {
base::AutoLock auto_lock(process_preferences_lock_);
process_preferences_[process_id] = prefs;
}
void AtomBrowserClient::RemoveSandboxedRendererId(int process_id) {
base::AutoLock auto_lock(sandboxed_renderers_lock_);
sandboxed_renderers_.erase(process_id);
void AtomBrowserClient::RemoveProcessPreferences(int process_id) {
base::AutoLock auto_lock(process_preferences_lock_);
process_preferences_.erase(process_id);
}
bool AtomBrowserClient::IsRendererSandboxed(int process_id) {
base::AutoLock auto_lock(sandboxed_renderers_lock_);
return sandboxed_renderers_.count(process_id);
base::AutoLock auto_lock(process_preferences_lock_);
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.sandbox;
}
bool AtomBrowserClient::RendererUsesNativeWindowOpen(int process_id) {
base::AutoLock auto_lock(process_preferences_lock_);
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.native_window_open;
}
bool AtomBrowserClient::RendererDisablesPopups(int process_id) {
base::AutoLock auto_lock(process_preferences_lock_);
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.disable_popups;
}
void AtomBrowserClient::RenderProcessWillLaunch(
@@ -133,11 +162,15 @@ void AtomBrowserClient::RenderProcessWillLaunch(
new WidevineCdmMessageFilter(process_id, host->GetBrowserContext()));
content::WebContents* web_contents = GetWebContentsFromProcessID(process_id);
if (WebContentsPreferences::IsSandboxed(web_contents)) {
AddSandboxedRendererId(host->GetID());
// ensure the sandboxed renderer id is removed later
host->AddObserver(this);
}
ProcessPreferences process_prefs;
process_prefs.sandbox = WebContentsPreferences::IsSandboxed(web_contents);
process_prefs.native_window_open
= WebContentsPreferences::UsesNativeWindowOpen(web_contents);
process_prefs.disable_popups
= WebContentsPreferences::DisablePopups(web_contents);
AddProcessPreferences(host->GetID(), process_prefs);
// ensure the ProcessPreferences is removed later
host->AddObserver(this);
}
content::SpeechRecognitionManagerDelegate*
@@ -160,7 +193,6 @@ void AtomBrowserClient::OverrideWebkitPrefs(
prefs->allow_universal_access_from_file_urls = true;
prefs->allow_file_access_from_file_urls = true;
prefs->experimental_webgl_enabled = true;
prefs->allow_displaying_insecure_content = false;
prefs->allow_running_insecure_content = false;
// Custom preferences of guest page.
@@ -173,6 +205,7 @@ std::string AtomBrowserClient::GetApplicationLocale() {
}
void AtomBrowserClient::OverrideSiteInstanceForNavigation(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& url,
@@ -182,7 +215,8 @@ void AtomBrowserClient::OverrideSiteInstanceForNavigation(
return;
}
if (!ShouldCreateNewSiteInstance(browser_context, current_instance, url))
if (!ShouldCreateNewSiteInstance(render_frame_host, browser_context,
current_instance, url))
return;
scoped_refptr<content::SiteInstance> site_instance =
@@ -235,6 +269,11 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
}
#endif
if (delegate_) {
auto app_path = static_cast<api::App*>(delegate_)->GetAppPath();
command_line->AppendSwitchPath(switches::kAppPath, app_path);
}
content::WebContents* web_contents = GetWebContentsFromProcessID(process_id);
if (!web_contents)
return;
@@ -291,31 +330,41 @@ void AtomBrowserClient::ResourceDispatcherHostCreated() {
}
bool AtomBrowserClient::CanCreateWindow(
int opener_render_process_id,
int opener_render_frame_id,
const GURL& opener_url,
const GURL& opener_top_level_frame_url,
const GURL& source_origin,
WindowContainerType container_type,
content::mojom::WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::WebWindowFeatures& features,
const std::vector<base::string16>& additional_features,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body,
bool user_gesture,
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
int opener_render_view_id,
int opener_render_frame_id,
bool* no_javascript_access) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (IsRendererSandboxed(render_process_id)) {
if (IsRendererSandboxed(opener_render_process_id)) {
*no_javascript_access = false;
return true;
}
if (RendererUsesNativeWindowOpen(opener_render_process_id)) {
if (RendererDisablesPopups(opener_render_process_id)) {
// <webview> without allowpopups attribute should return
// null from window.open calls
return false;
} else {
*no_javascript_access = false;
return true;
}
}
if (delegate_) {
content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
base::Bind(&api::App::OnCreateWindow,
@@ -325,7 +374,7 @@ bool AtomBrowserClient::CanCreateWindow(
disposition,
additional_features,
body,
render_process_id,
opener_render_process_id,
opener_render_frame_id));
}
@@ -376,7 +425,27 @@ void AtomBrowserClient::RenderProcessHostDestroyed(
break;
}
}
RemoveSandboxedRendererId(process_id);
RemoveProcessPreferences(process_id);
}
void AtomBrowserClient::RenderProcessReady(content::RenderProcessHost* host) {
render_process_host_pids_[host->GetID()] = base::GetProcId(host->GetHandle());
if (delegate_) {
static_cast<api::App*>(delegate_)->RenderProcessReady(host);
}
}
void AtomBrowserClient::RenderProcessExited(content::RenderProcessHost* host,
base::TerminationStatus status,
int exit_code) {
auto host_pid = render_process_host_pids_.find(host->GetID());
if (host_pid != render_process_host_pids_.end()) {
if (delegate_) {
static_cast<api::App*>(delegate_)->RenderProcessDisconnected(
host_pid->second);
}
render_process_host_pids_.erase(host_pid);
}
}
} // namespace atom

View File

@@ -54,6 +54,7 @@ class AtomBrowserClient : public brightray::BrowserClient,
content::WebPreferences* prefs) override;
std::string GetApplicationLocale() override;
void OverrideSiteInstanceForNavigation(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& dest_url,
@@ -79,23 +80,22 @@ class AtomBrowserClient : public brightray::BrowserClient,
std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
void ResourceDispatcherHostCreated() override;
bool CanCreateWindow(
int opener_render_process_id,
int opener_render_frame_id,
const GURL& opener_url,
const GURL& opener_top_level_frame_url,
const GURL& source_origin,
WindowContainerType container_type,
content::mojom::WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::WebWindowFeatures& features,
const std::vector<base::string16>& additional_features,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<content::ResourceRequestBodyImpl>& body,
bool user_gesture,
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
int opener_render_view_id,
int opener_render_frame_id,
bool* no_javascript_access) override;
void GetAdditionalAllowedSchemesForFileSystem(
std::vector<std::string>* schemes) override;
@@ -109,21 +109,33 @@ class AtomBrowserClient : public brightray::BrowserClient,
// content::RenderProcessHostObserver:
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
void RenderProcessReady(content::RenderProcessHost* host) override;
void RenderProcessExited(content::RenderProcessHost* host,
base::TerminationStatus status,
int exit_code) override;
private:
bool ShouldCreateNewSiteInstance(content::BrowserContext* browser_context,
bool ShouldCreateNewSiteInstance(content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& dest_url);
// Add/remove a process id to `sandboxed_renderers_`.
void AddSandboxedRendererId(int process_id);
void RemoveSandboxedRendererId(int process_id);
struct ProcessPreferences {
bool sandbox;
bool native_window_open;
bool disable_popups;
};
void AddProcessPreferences(int process_id, ProcessPreferences prefs);
void RemoveProcessPreferences(int process_id);
bool IsRendererSandboxed(int process_id);
bool RendererUsesNativeWindowOpen(int process_id);
bool RendererDisablesPopups(int process_id);
// pending_render_process => current_render_process.
std::map<int, int> pending_processes_;
// Set that contains the process ids of all sandboxed renderers
std::set<int> sandboxed_renderers_;
base::Lock sandboxed_renderers_lock_;
std::map<int, ProcessPreferences> process_preferences_;
std::map<int, base::ProcessId> render_process_host_pids_;
base::Lock process_preferences_lock_;
std::unique_ptr<AtomResourceDispatcherHostDelegate>
resource_dispatcher_host_delegate_;

View File

@@ -15,7 +15,6 @@
#include "atom/browser/net/atom_cert_verifier.h"
#include "atom/browser/net/atom_ct_delegate.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/http_protocol_handler.h"
#include "atom/browser/web_view_manager.h"
@@ -156,8 +155,7 @@ AtomBrowserContext::CreateURLRequestJobFactory(
url_request_context_getter()->GetURLRequestContext()->host_resolver();
job_factory->SetProtocolHandler(
url::kFtpScheme,
base::WrapUnique(new net::FtpProtocolHandler(
new net::FtpNetworkLayer(host_resolver))));
net::FtpProtocolHandler::Create(host_resolver));
return std::move(job_factory);
}
@@ -198,10 +196,6 @@ std::unique_ptr<net::CertVerifier> AtomBrowserContext::CreateCertVerifier() {
return base::WrapUnique(new AtomCertVerifier(ct_delegate_.get()));
}
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();

View File

@@ -41,7 +41,6 @@ class AtomBrowserContext : public brightray::BrowserContext {
net::HttpCache::BackendFactory* CreateHttpCacheBackendFactory(
const base::FilePath& base_path) override;
std::unique_ptr<net::CertVerifier> CreateCertVerifier() override;
net::SSLConfigService* CreateSSLConfigService() override;
std::vector<std::string> GetCookieableSchemes() override;
net::TransportSecurityState::RequireCTDelegate* GetRequireCTDelegate()
override;

View File

@@ -8,11 +8,13 @@
#include "atom/browser/atom_access_token_store.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_web_ui_controller_factory.h"
#include "atom/browser/bridge_task_runner.h"
#include "atom/browser/browser.h"
#include "atom/browser/javascript_environment.h"
#include "atom/browser/node_debugger.h"
#include "atom/common/api/atom_bindings.h"
#include "atom/common/asar/asar_util.h"
#include "atom/common/node_bindings.h"
#include "atom/common/node_includes.h"
#include "base/command_line.h"
@@ -24,7 +26,7 @@
#include "v8/include/v8-debug.h"
#if defined(USE_X11)
#include "chrome/browser/ui/libgtk2ui/gtk2_util.h"
#include "chrome/browser/ui/libgtkui/gtk_util.h"
#include "ui/events/devices/x11/touch_factory_x11.h"
#endif
@@ -59,8 +61,8 @@ AtomBrowserMainParts::AtomBrowserMainParts()
: fake_browser_process_(new BrowserProcess),
exit_code_(nullptr),
browser_(new Browser),
node_bindings_(NodeBindings::Create(true)),
atom_bindings_(new AtomBindings),
node_bindings_(NodeBindings::Create(NodeBindings::BROWSER)),
atom_bindings_(new AtomBindings(uv_default_loop())),
gc_timer_(true, true) {
DCHECK(!self_) << "Cannot have two AtomBrowserMainParts";
self_ = this;
@@ -70,6 +72,7 @@ AtomBrowserMainParts::AtomBrowserMainParts()
}
AtomBrowserMainParts::~AtomBrowserMainParts() {
asar::ClearArchives();
// Leak the JavascriptEnvironment on exit.
// This is to work around the bug that V8 would be waiting for background
// tasks to finish on exit, while somehow it waits forever in Electron, more
@@ -126,16 +129,14 @@ void AtomBrowserMainParts::PostEarlyInitialization() {
node_bindings_->Initialize();
// Support the "--debug" switch.
node_debugger_.reset(new NodeDebugger(js_env_->isolate()));
// Create the global environment.
node::Environment* env =
node_bindings_->CreateEnvironment(js_env_->context());
node_env_.reset(new NodeEnvironment(env));
// Make sure node can get correct environment when debugging.
if (node_debugger_->IsRunning())
env->AssignToContext(v8::Debug::GetDebugContext(js_env_->isolate()));
// Enable support for v8 inspector
node_debugger_.reset(new NodeDebugger(env));
node_debugger_->Start();
// Add Electron extended APIs.
atom_bindings_->BindTo(js_env_->isolate(), env->process_object());
@@ -165,12 +166,15 @@ void AtomBrowserMainParts::PreMainMessageLoopRun() {
base::Bind(&v8::Isolate::LowMemoryNotification,
base::Unretained(js_env_->isolate())));
content::WebUIControllerFactory::RegisterFactory(
AtomWebUIControllerFactory::GetInstance());
brightray::BrowserMainParts::PreMainMessageLoopRun();
bridge_task_runner_->MessageLoopIsReady();
bridge_task_runner_ = nullptr;
#if defined(USE_X11)
libgtk2ui::GtkInitFromCommandLine(*base::CommandLine::ForCurrentProcess());
libgtkui::GtkInitFromCommandLine(*base::CommandLine::ForCurrentProcess());
#endif
#if !defined(OS_MACOSX)

View File

@@ -22,6 +22,7 @@ class Browser;
class JavascriptEnvironment;
class NodeBindings;
class NodeDebugger;
class NodeEnvironment;
class BridgeTaskRunner;
class AtomBrowserMainParts : public brightray::BrowserMainParts {
@@ -81,6 +82,7 @@ class AtomBrowserMainParts : public brightray::BrowserMainParts {
std::unique_ptr<JavascriptEnvironment> js_env_;
std::unique_ptr<NodeBindings> node_bindings_;
std::unique_ptr<AtomBindings> atom_bindings_;
std::unique_ptr<NodeEnvironment> node_env_;
std::unique_ptr<NodeDebugger> node_debugger_;
base::Timer gc_timer_;

View File

@@ -90,10 +90,11 @@ void AtomDownloadManagerDelegate::OnDownloadPathGenerated(
base::FilePath 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)) {
file_dialog::DialogSettings settings;
settings.parent_window = window;
settings.title = item->GetURL().spec();
settings.default_path = default_path;
if (path.empty() && file_dialog::ShowSaveDialog(settings, &path)) {
// Remember the last selected download directory.
AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(
download_manager_->GetBrowserContext());

View File

@@ -7,45 +7,44 @@
#include <string>
#include <vector>
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/message_box.h"
#include "base/bind.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/gfx/image/image_skia.h"
using content::JavaScriptMessageType;
using content::JavaScriptDialogType;
namespace atom {
AtomJavaScriptDialogManager::AtomJavaScriptDialogManager(
api::WebContents* api_web_contents)
: api_web_contents_(api_web_contents) {}
void AtomJavaScriptDialogManager::RunJavaScriptDialog(
content::WebContents* web_contents,
const GURL& origin_url,
JavaScriptMessageType message_type,
JavaScriptDialogType dialog_type,
const base::string16& message_text,
const base::string16& default_prompt_text,
const DialogClosedCallback& callback,
bool* did_suppress_message) {
if (message_type != JavaScriptMessageType::JAVASCRIPT_MESSAGE_TYPE_ALERT &&
message_type != JavaScriptMessageType::JAVASCRIPT_MESSAGE_TYPE_CONFIRM) {
if (dialog_type != JavaScriptDialogType::JAVASCRIPT_DIALOG_TYPE_ALERT &&
dialog_type != JavaScriptDialogType::JAVASCRIPT_DIALOG_TYPE_CONFIRM) {
callback.Run(false, base::string16());
return;
}
std::vector<std::string> buttons = {"OK"};
if (message_type == JavaScriptMessageType::JAVASCRIPT_MESSAGE_TYPE_CONFIRM) {
if (dialog_type == JavaScriptDialogType::JAVASCRIPT_DIALOG_TYPE_CONFIRM) {
buttons.push_back("Cancel");
}
atom::ShowMessageBox(NativeWindow::FromWebContents(web_contents),
atom::MessageBoxType::MESSAGE_BOX_TYPE_NONE,
buttons,
-1,
0,
atom::MessageBoxOptions::MESSAGE_BOX_NONE,
"",
base::UTF16ToUTF8(message_text),
"",
atom::MessageBoxType::MESSAGE_BOX_TYPE_NONE, buttons, -1,
0, atom::MessageBoxOptions::MESSAGE_BOX_NONE, "",
base::UTF16ToUTF8(message_text), "", "", false,
gfx::ImageSkia(),
base::Bind(&OnMessageBoxCallback, callback));
}
@@ -54,13 +53,21 @@ void AtomJavaScriptDialogManager::RunBeforeUnloadDialog(
content::WebContents* web_contents,
bool is_reload,
const DialogClosedCallback& callback) {
// FIXME(zcbenz): the |message_text| is removed, figure out what should we do.
callback.Run(false, base::ASCIIToUTF16("This should not be displayed"));
bool default_prevented = api_web_contents_->Emit("will-prevent-unload");
callback.Run(default_prevented, base::string16());
return;
}
void AtomJavaScriptDialogManager::CancelDialogs(
content::WebContents* web_contents,
bool reset_state) {
}
// static
void AtomJavaScriptDialogManager::OnMessageBoxCallback(
const DialogClosedCallback& callback, int code) {
const DialogClosedCallback& callback,
int code,
bool checkbox_checked) {
callback.Run(code == 0, base::string16());
}

View File

@@ -11,13 +11,19 @@
namespace atom {
namespace api {
class WebContents;
}
class AtomJavaScriptDialogManager : public content::JavaScriptDialogManager {
public:
explicit AtomJavaScriptDialogManager(api::WebContents* api_web_contents);
// content::JavaScriptDialogManager implementations.
void RunJavaScriptDialog(
content::WebContents* web_contents,
const GURL& origin_url,
content::JavaScriptMessageType javascript_message_type,
content::JavaScriptDialogType dialog_type,
const base::string16& message_text,
const base::string16& default_prompt_text,
const DialogClosedCallback& callback,
@@ -26,13 +32,14 @@ class AtomJavaScriptDialogManager : public content::JavaScriptDialogManager {
content::WebContents* web_contents,
bool is_reload,
const DialogClosedCallback& callback) override;
void CancelActiveAndPendingDialogs(
content::WebContents* web_contents) override {}
void ResetDialogState(content::WebContents* web_contents) override {};
void CancelDialogs(content::WebContents* web_contents,
bool reset_state) override;
private:
static void OnMessageBoxCallback(const DialogClosedCallback& callback,
int code);
int code,
bool checkbox_checked);
api::WebContents* api_web_contents_;
};
} // namespace atom

View File

@@ -131,7 +131,7 @@ int AtomPermissionManager::RequestPermissions(
auto web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
int request_id = pending_requests_.Add(new PendingRequest(
int request_id = pending_requests_.Add(base::MakeUnique<PendingRequest>(
render_frame_host, permissions, response_callback));
for (size_t i = 0; i < permissions.size(); ++i) {
@@ -187,12 +187,6 @@ blink::mojom::PermissionStatus AtomPermissionManager::GetPermissionStatus(
return blink::mojom::PermissionStatus::GRANTED;
}
void AtomPermissionManager::RegisterPermissionUsage(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
}
int AtomPermissionManager::SubscribePermissionStatusChange(
content::PermissionType permission,
const GURL& requesting_origin,

View File

@@ -66,9 +66,6 @@ class AtomPermissionManager : public content::PermissionManager {
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
void RegisterPermissionUsage(content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
int SubscribePermissionStatusChange(
content::PermissionType permission,
const GURL& requesting_origin,
@@ -79,7 +76,7 @@ class AtomPermissionManager : public content::PermissionManager {
private:
class PendingRequest;
using PendingRequestsMap = IDMap<PendingRequest, IDMapOwnPointer>;
using PendingRequestsMap = IDMap<std::unique_ptr<PendingRequest>>;
RequestHandler request_handler_;

View File

@@ -4,13 +4,20 @@
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/login_handler.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/common/atom_constants.h"
#include "atom/common/platform_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/stream_info.h"
#include "net/base/escape.h"
#include "net/ssl/client_cert_store.h"
#include "net/url_request/url_request.h"
#include "url/gurl.h"
#if defined(USE_NSS_CERTS)
@@ -57,6 +64,34 @@ void HandleExternalProtocolInUI(
permission_helper->RequestOpenExternalPermission(callback, has_user_gesture);
}
void OnPdfResourceIntercepted(
const GURL& original_url,
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter) {
content::WebContents* web_contents = web_contents_getter.Run();
if (!web_contents)
return;
if (!WebContentsPreferences::IsPluginsEnabled(web_contents)) {
auto browser_context = web_contents->GetBrowserContext();
auto download_manager =
content::BrowserContext::GetDownloadManager(browser_context);
download_manager->DownloadUrl(
content::DownloadUrlParameters::CreateForWebContentsMainFrame(
web_contents, original_url));
return;
}
// The URL passes the original pdf resource url, that will be requested
// by the webui page.
// chrome://pdf-viewer/index.html?src=https://somepage/123.pdf
content::NavigationController::LoadURLParams params(
GURL(base::StringPrintf("%sindex.html?%s=%s", kPdfViewerUIOrigin,
kPdfPluginSrc, original_url.spec().c_str())));
web_contents->GetController().LoadURLWithParams(params);
}
} // namespace
AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {
@@ -64,17 +99,12 @@ AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {
bool AtomResourceDispatcherHostDelegate::HandleExternalProtocol(
const GURL& url,
int child_id,
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
bool is_main_frame,
ui::PageTransition transition,
bool has_user_gesture,
content::ResourceContext* resource_context) {
content::ResourceRequestInfo* info) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(&HandleExternalProtocolInUI,
url,
web_contents_getter,
has_user_gesture));
info->GetWebContentsGetterForRequest(),
info->HasUserGesture()));
return true;
}
@@ -100,4 +130,23 @@ AtomResourceDispatcherHostDelegate::CreateClientCertStore(
#endif
}
bool AtomResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
net::URLRequest* request,
const base::FilePath& plugin_path,
const std::string& mime_type,
GURL* origin,
std::string* payload) {
const content::ResourceRequestInfo* info =
content::ResourceRequestInfo::ForRequest(request);
if (mime_type == "application/pdf" && info->IsMainFrame()) {
*origin = GURL(kPdfViewerUIOrigin);
content::BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&OnPdfResourceIntercepted, request->url(),
info->GetWebContentsGetterForRequest()));
return true;
}
return false;
}
} // namespace atom

View File

@@ -5,6 +5,8 @@
#ifndef ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_
#define ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_
#include <string>
#include "content/public/browser/resource_dispatcher_host_delegate.h"
namespace atom {
@@ -15,19 +17,21 @@ class AtomResourceDispatcherHostDelegate
AtomResourceDispatcherHostDelegate();
// content::ResourceDispatcherHostDelegate:
bool HandleExternalProtocol(
const GURL& url,
int child_id,
const content::ResourceRequestInfo::WebContentsGetter&,
bool is_main_frame,
ui::PageTransition transition,
bool has_user_gesture,
content::ResourceContext* resource_context) override;
bool HandleExternalProtocol(const GURL& url,
content::ResourceRequestInfo* info) override;
content::ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
net::AuthChallengeInfo* auth_info,
net::URLRequest* request) override;
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
content::ResourceContext* resource_context) override;
bool ShouldInterceptResourceAsStream(net::URLRequest* request,
const base::FilePath& plugin_path,
const std::string& mime_type,
GURL* origin,
std::string* payload) override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomResourceDispatcherHostDelegate);
};
} // namespace atom

View File

@@ -1,106 +0,0 @@
// 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_security_state_model_client.h"
#include "content/public/browser/cert_store.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/origin_util.h"
#include "content/public/common/ssl_status.h"
#include "net/cert/x509_certificate.h"
DEFINE_WEB_CONTENTS_USER_DATA_KEY(atom::AtomSecurityStateModelClient);
using security_state::SecurityStateModel;
namespace atom {
namespace {
SecurityStateModel::SecurityLevel GetSecurityLevelForSecurityStyle(
content::SecurityStyle style) {
switch (style) {
case content::SECURITY_STYLE_UNKNOWN:
return SecurityStateModel::NONE;
case content::SECURITY_STYLE_UNAUTHENTICATED:
return SecurityStateModel::NONE;
case content::SECURITY_STYLE_AUTHENTICATION_BROKEN:
return SecurityStateModel::SECURITY_ERROR;
case content::SECURITY_STYLE_WARNING:
return SecurityStateModel::SECURITY_WARNING;
case content::SECURITY_STYLE_AUTHENTICATED:
return SecurityStateModel::SECURE;
}
return SecurityStateModel::NONE;
}
} // namespace
AtomSecurityStateModelClient::AtomSecurityStateModelClient(
content::WebContents* web_contents)
: web_contents_(web_contents),
security_state_model_(new SecurityStateModel()) {
security_state_model_->SetClient(this);
}
AtomSecurityStateModelClient::~AtomSecurityStateModelClient() {
}
const SecurityStateModel::SecurityInfo&
AtomSecurityStateModelClient::GetSecurityInfo() const {
return security_state_model_->GetSecurityInfo();
}
bool AtomSecurityStateModelClient::RetrieveCert(
scoped_refptr<net::X509Certificate>* cert) {
content::NavigationEntry* entry =
web_contents_->GetController().GetVisibleEntry();
if (!entry)
return false;
return content::CertStore::GetInstance()->RetrieveCert(
entry->GetSSL().cert_id, cert);
}
bool AtomSecurityStateModelClient::UsedPolicyInstalledCertificate() {
return false;
}
bool AtomSecurityStateModelClient::IsOriginSecure(const GURL& url) {
return content::IsOriginSecure(url);
}
void AtomSecurityStateModelClient::GetVisibleSecurityState(
SecurityStateModel::VisibleSecurityState* state) {
content::NavigationEntry* entry =
web_contents_->GetController().GetVisibleEntry();
if (!entry ||
entry->GetSSL().security_style == content::SECURITY_STYLE_UNKNOWN) {
*state = SecurityStateModel::VisibleSecurityState();
return;
}
state->connection_info_initialized = true;
state->url = entry->GetURL();
const content::SSLStatus& ssl = entry->GetSSL();
state->initial_security_level =
GetSecurityLevelForSecurityStyle(ssl.security_style);
state->cert_id = ssl.cert_id;
state->cert_status = ssl.cert_status;
state->connection_status = ssl.connection_status;
state->security_bits = ssl.security_bits;
state->sct_verify_statuses.clear();
state->sct_verify_statuses.insert(state->sct_verify_statuses.begin(),
ssl.sct_statuses.begin(),
ssl.sct_statuses.end());
state->displayed_mixed_content =
(ssl.content_status & content::SSLStatus::DISPLAYED_INSECURE_CONTENT)
? true
: false;
state->ran_mixed_content =
(ssl.content_status & content::SSLStatus::RAN_INSECURE_CONTENT) ? true
: false;
}
} // namespace atom

View File

@@ -1,42 +0,0 @@
// 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_SECURITY_STATE_MODEL_CLIENT_H_
#define ATOM_BROWSER_ATOM_SECURITY_STATE_MODEL_CLIENT_H_
#include "components/security_state/security_state_model.h"
#include "components/security_state/security_state_model_client.h"
#include "content/public/browser/web_contents_user_data.h"
namespace atom {
class AtomSecurityStateModelClient
: public security_state::SecurityStateModelClient,
public content::WebContentsUserData<AtomSecurityStateModelClient> {
public:
~AtomSecurityStateModelClient() override;
const security_state::SecurityStateModel::SecurityInfo&
GetSecurityInfo() const;
// security_state::SecurityStateModelClient:
void GetVisibleSecurityState(
security_state::SecurityStateModel::VisibleSecurityState* state) override;
bool RetrieveCert(scoped_refptr<net::X509Certificate>* cert) override;
bool UsedPolicyInstalledCertificate() override;
bool IsOriginSecure(const GURL& url) override;
private:
explicit AtomSecurityStateModelClient(content::WebContents* web_contents);
friend class content::WebContentsUserData<AtomSecurityStateModelClient>;
content::WebContents* web_contents_;
std::unique_ptr<security_state::SecurityStateModel> security_state_model_;
DISALLOW_COPY_AND_ASSIGN(AtomSecurityStateModelClient);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_SECURITY_STATE_MODEL_CLIENT_H_

View File

@@ -0,0 +1,66 @@
// Copyright (c) 2017 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_web_ui_controller_factory.h"
#include <string>
#include "atom/browser/ui/webui/pdf_viewer_ui.h"
#include "atom/common/atom_constants.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "content/public/browser/web_contents.h"
namespace atom {
// static
AtomWebUIControllerFactory* AtomWebUIControllerFactory::GetInstance() {
return base::Singleton<AtomWebUIControllerFactory>::get();
}
AtomWebUIControllerFactory::AtomWebUIControllerFactory() {}
AtomWebUIControllerFactory::~AtomWebUIControllerFactory() {}
content::WebUI::TypeID AtomWebUIControllerFactory::GetWebUIType(
content::BrowserContext* browser_context,
const GURL& url) const {
if (url.host() == kPdfViewerUIHost) {
return const_cast<AtomWebUIControllerFactory*>(this);
}
return content::WebUI::kNoWebUI;
}
bool AtomWebUIControllerFactory::UseWebUIForURL(
content::BrowserContext* browser_context,
const GURL& url) const {
return GetWebUIType(browser_context, url) != content::WebUI::kNoWebUI;
}
bool AtomWebUIControllerFactory::UseWebUIBindingsForURL(
content::BrowserContext* browser_context,
const GURL& url) const {
return UseWebUIForURL(browser_context, url);
}
content::WebUIController*
AtomWebUIControllerFactory::CreateWebUIControllerForURL(content::WebUI* web_ui,
const GURL& url) const {
if (url.host() == kPdfViewerUIHost) {
base::StringPairs toplevel_params;
base::SplitStringIntoKeyValuePairs(url.query(), '=', '&', &toplevel_params);
std::string stream_id, src;
for (const auto& param : toplevel_params) {
if (param.first == kPdfPluginSrc) {
src = param.second;
}
}
auto browser_context = web_ui->GetWebContents()->GetBrowserContext();
return new PdfViewerUI(browser_context, web_ui, src);
}
return nullptr;
}
} // namespace atom

View File

@@ -0,0 +1,40 @@
// Copyright (c) 2017 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_WEB_UI_CONTROLLER_FACTORY_H_
#define ATOM_BROWSER_ATOM_WEB_UI_CONTROLLER_FACTORY_H_
#include "base/macros.h"
#include "base/memory/singleton.h"
#include "content/public/browser/web_ui_controller_factory.h"
namespace atom {
class AtomWebUIControllerFactory : public content::WebUIControllerFactory {
public:
static AtomWebUIControllerFactory* GetInstance();
AtomWebUIControllerFactory();
virtual ~AtomWebUIControllerFactory();
// content::WebUIControllerFactory:
content::WebUI::TypeID GetWebUIType(content::BrowserContext* browser_context,
const GURL& url) const override;
bool UseWebUIForURL(content::BrowserContext* browser_context,
const GURL& url) const override;
bool UseWebUIBindingsForURL(content::BrowserContext* browser_context,
const GURL& url) const override;
content::WebUIController* CreateWebUIControllerForURL(
content::WebUI* web_ui,
const GURL& url) const override;
private:
friend struct base::DefaultSingletonTraits<AtomWebUIControllerFactory>;
DISALLOW_COPY_AND_ASSIGN(AtomWebUIControllerFactory);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_WEB_UI_CONTROLLER_FACTORY_H_

View File

@@ -27,7 +27,7 @@ namespace {
bool g_update_available = false;
std::string update_url_ = "";
}
} // namespace
std::string AutoUpdater::GetFeedURL() {
return update_url_;

View File

@@ -7,10 +7,12 @@
#include <string>
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/browser_observer.h"
#include "atom/browser/native_window.h"
#include "atom/browser/window_list.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/threading/thread_task_runner_handle.h"
#include "brightray/browser/brightray_paths.h"
@@ -41,11 +43,10 @@ void Browser::Quit() {
if (!is_quiting_)
return;
atom::WindowList* window_list = atom::WindowList::GetInstance();
if (window_list->size() == 0)
if (atom::WindowList::IsEmpty())
NotifyAndShutdown();
window_list->CloseAllWindows();
else
atom::WindowList::CloseAllWindows();
}
void Browser::Exit(mate::Arguments* args) {
@@ -63,14 +64,12 @@ void Browser::Exit(mate::Arguments* args) {
is_exiting_ = true;
// Must destroy windows before quitting, otherwise bad things can happen.
atom::WindowList* window_list = atom::WindowList::GetInstance();
if (window_list->size() == 0) {
if (atom::WindowList::IsEmpty()) {
Shutdown();
} else {
// Unlike Quit(), we do not ask to close window, but destroy the window
// without asking.
for (NativeWindow* window : *window_list)
window->CloseContents(nullptr); // e.g. Destroy()
atom::WindowList::DestroyAllWindows();
}
}
}
@@ -82,9 +81,10 @@ void Browser::Shutdown() {
is_shutdown_ = true;
is_quiting_ = true;
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnQuit());
for (BrowserObserver& observer : observers_)
observer.OnQuit();
if (base::MessageLoop::current()) {
if (base::ThreadTaskRunnerHandle::IsSet()) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
} else {
@@ -127,25 +127,25 @@ int Browser::GetBadgeCount() {
bool Browser::OpenFile(const std::string& file_path) {
bool prevent_default = false;
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnOpenFile(&prevent_default, file_path));
for (BrowserObserver& observer : observers_)
observer.OnOpenFile(&prevent_default, file_path);
return prevent_default;
}
void Browser::OpenURL(const std::string& url) {
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnOpenURL(url));
for (BrowserObserver& observer : observers_)
observer.OnOpenURL(url);
}
void Browser::Activate(bool has_visible_windows) {
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnActivate(has_visible_windows));
for (BrowserObserver& observer : observers_)
observer.OnActivate(has_visible_windows);
}
void Browser::WillFinishLaunching() {
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWillFinishLaunching());
for (BrowserObserver& observer : observers_)
observer.OnWillFinishLaunching();
}
void Browser::DidFinishLaunching(const base::DictionaryValue& launch_info) {
@@ -155,22 +155,20 @@ void Browser::DidFinishLaunching(const base::DictionaryValue& launch_info) {
base::CreateDirectoryAndGetError(user_data, nullptr);
is_ready_ = true;
FOR_EACH_OBSERVER(BrowserObserver, observers_,
OnFinishLaunching(launch_info));
for (BrowserObserver& observer : observers_)
observer.OnFinishLaunching(launch_info);
}
void Browser::OnAccessibilitySupportChanged() {
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnAccessibilitySupportChanged());
for (BrowserObserver& observer : observers_)
observer.OnAccessibilitySupportChanged();
}
void Browser::RequestLogin(
LoginHandler* login_handler,
std::unique_ptr<base::DictionaryValue> request_details) {
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnLogin(login_handler, *(request_details.get())));
for (BrowserObserver& observer : observers_)
observer.OnLogin(login_handler, *(request_details.get()));
}
void Browser::NotifyAndShutdown() {
@@ -178,7 +176,8 @@ void Browser::NotifyAndShutdown() {
return;
bool prevent_default = false;
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWillQuit(&prevent_default));
for (BrowserObserver& observer : observers_)
observer.OnWillQuit(&prevent_default);
if (prevent_default) {
is_quiting_ = false;
@@ -190,9 +189,8 @@ void Browser::NotifyAndShutdown() {
bool Browser::HandleBeforeQuit() {
bool prevent_default = false;
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnBeforeQuit(&prevent_default));
for (BrowserObserver& observer : observers_)
observer.OnBeforeQuit(&prevent_default);
return !prevent_default;
}
@@ -205,12 +203,14 @@ void Browser::OnWindowCloseCancelled(NativeWindow* window) {
}
void Browser::OnWindowAllClosed() {
if (is_exiting_)
if (is_exiting_) {
Shutdown();
else if (is_quiting_)
} else if (is_quiting_) {
NotifyAndShutdown();
else
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWindowAllClosed());
} else {
for (BrowserObserver& observer : observers_)
observer.OnWindowAllClosed();
}
}
} // namespace atom

View File

@@ -98,9 +98,11 @@ class Browser : public WindowListObserver {
bool restore_state = false;
bool opened_at_login = false;
bool opened_as_hidden = false;
base::string16 path;
std::vector<base::string16> args;
};
void SetLoginItemSettings(LoginItemSettings settings);
LoginItemSettings GetLoginItemSettings();
LoginItemSettings GetLoginItemSettings(const LoginItemSettings& options);
#if defined(OS_MACOSX)
// Hide the application.

View File

@@ -10,15 +10,13 @@
#include "atom/browser/window_list.h"
#include "atom/common/atom_version.h"
#include "brightray/common/application_info.h"
#include "chrome/browser/ui/libgtk2ui/unity_service.h"
#include "chrome/browser/ui/libgtkui/unity_service.h"
namespace atom {
void Browser::Focus() {
// Focus on the first visible window.
WindowList* list = WindowList::GetInstance();
for (WindowList::iterator iter = list->begin(); iter != list->end(); ++iter) {
NativeWindow* window = *iter;
for (const auto& window : WindowList::GetWindows()) {
if (window->IsVisible()) {
window->Focus(true);
break;
@@ -63,7 +61,8 @@ bool Browser::SetBadgeCount(int count) {
void Browser::SetLoginItemSettings(LoginItemSettings settings) {
}
Browser::LoginItemSettings Browser::GetLoginItemSettings() {
Browser::LoginItemSettings Browser::GetLoginItemSettings(
const LoginItemSettings& options) {
return LoginItemSettings();
}

View File

@@ -64,8 +64,9 @@ bool Browser::RemoveAsDefaultProtocolClient(const std::string& protocol,
// On macOS, we can't query the default, but the handlers list seems to put
// Apple's defaults first, so we'll use the first option that isn't our bundle
CFStringRef other = nil;
for (CFIndex i = 0; i < CFArrayGetCount(bundleList); i++) {
other = (CFStringRef)CFArrayGetValueAtIndex(bundleList, i);
for (CFIndex i = 0; i < CFArrayGetCount(bundleList); ++i) {
other = base::mac::CFCast<CFStringRef>(CFArrayGetValueAtIndex(bundleList,
i));
if (![identifier isEqualToString: (__bridge NSString *)other]) {
break;
}
@@ -146,13 +147,13 @@ std::string Browser::GetCurrentActivityType() {
bool Browser::ContinueUserActivity(const std::string& type,
const base::DictionaryValue& user_info) {
bool prevent_default = false;
FOR_EACH_OBSERVER(BrowserObserver,
observers_,
OnContinueUserActivity(&prevent_default, type, user_info));
for (BrowserObserver& observer : observers_)
observer.OnContinueUserActivity(&prevent_default, type, user_info);
return prevent_default;
}
Browser::LoginItemSettings Browser::GetLoginItemSettings() {
Browser::LoginItemSettings Browser::GetLoginItemSettings(
const LoginItemSettings& options) {
LoginItemSettings settings;
settings.open_at_login = base::mac::CheckLoginItemStatus(
&settings.open_as_hidden);
@@ -179,7 +180,7 @@ std::string Browser::GetExecutableFileProductName() const {
int Browser::DockBounce(BounceType type) {
return [[AtomApplication sharedApplication]
requestUserAttention:(NSRequestUserAttentionType)type];
requestUserAttention:static_cast<NSRequestUserAttentionType>(type)];
}
void Browser::DockCancelBounce(int request_id) {
@@ -203,9 +204,8 @@ std::string Browser::DockGetBadgeText() {
}
void Browser::DockHide() {
WindowList* list = WindowList::GetInstance();
for (WindowList::iterator it = list->begin(); it != list->end(); ++it)
[(*it)->GetNativeWindow() setCanHide:NO];
for (const auto& window : WindowList::GetWindows())
[window->GetNativeWindow() setCanHide:NO];
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToUIElementApplication);

View File

@@ -43,25 +43,44 @@ BOOL CALLBACK WindowsEnumerationHandler(HWND hwnd, LPARAM param) {
return TRUE;
}
bool GetProcessExecPath(base::string16* exe) {
base::FilePath path;
if (!PathService::Get(base::FILE_EXE, &path)) {
LOG(ERROR) << "Error getting app exe path";
return false;
}
*exe = path.value();
return true;
}
bool GetProtocolLaunchPath(mate::Arguments* args, base::string16* exe) {
// Executable Path
if (!args->GetNext(exe)) {
base::FilePath path;
if (!PathService::Get(base::FILE_EXE, &path)) {
LOG(ERROR) << "Error getting app exe path";
return false;
}
*exe = path.value();
if (!args->GetNext(exe) && !GetProcessExecPath(exe)) {
return false;
}
// Read in optional args arg
std::vector<base::string16> launch_args;
if (args->GetNext(&launch_args) && !launch_args.empty())
*exe = base::StringPrintf(L"\"%s\" %s \"%%1\"",
*exe = base::StringPrintf(L"\"%ls\" %ls \"%%1\"",
exe->c_str(),
base::JoinString(launch_args, L" ").c_str());
else
*exe = base::StringPrintf(L"\"%s\" \"%%1\"", exe->c_str());
*exe = base::StringPrintf(L"\"%ls\" \"%%1\"", exe->c_str());
return true;
}
bool FormatCommandLineString(base::string16* exe,
const std::vector<base::string16>& launch_args) {
if (exe->empty() && !GetProcessExecPath(exe)) {
return false;
}
if (!launch_args.empty()) {
*exe = base::StringPrintf(L"%ls %ls",
exe->c_str(),
base::JoinString(launch_args, L" ").c_str());
}
return true;
}
@@ -257,34 +276,32 @@ void Browser::SetLoginItemSettings(LoginItemSettings settings) {
base::win::RegKey key(HKEY_CURRENT_USER, keyPath.c_str(), KEY_ALL_ACCESS);
if (settings.open_at_login) {
base::FilePath path;
if (PathService::Get(base::FILE_EXE, &path)) {
base::string16 exePath(path.value());
key.WriteValue(GetAppUserModelID(), exePath.c_str());
base::string16 exe = settings.path;
if (FormatCommandLineString(&exe, settings.args)) {
key.WriteValue(GetAppUserModelID(), exe.c_str());
}
} else {
key.DeleteValue(GetAppUserModelID());
}
}
Browser::LoginItemSettings Browser::GetLoginItemSettings() {
Browser::LoginItemSettings Browser::GetLoginItemSettings(
const LoginItemSettings& options) {
LoginItemSettings settings;
base::string16 keyPath = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
base::win::RegKey key(HKEY_CURRENT_USER, keyPath.c_str(), KEY_ALL_ACCESS);
base::string16 keyVal;
if (!FAILED(key.ReadValue(GetAppUserModelID(), &keyVal))) {
base::FilePath path;
if (PathService::Get(base::FILE_EXE, &path)) {
base::string16 exePath(path.value());
settings.open_at_login = keyVal == exePath;
base::string16 exe = options.path;
if (FormatCommandLineString(&exe, options.args)) {
settings.open_at_login = keyVal == exe;
}
}
return settings;
}
PCWSTR Browser::GetAppUserModelID() {
if (app_user_model_id_.empty()) {
SetAppUserModelID(base::ReplaceStringPlaceholders(

View File

@@ -0,0 +1,33 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/child_web_contents_tracker.h"
#include <unordered_set>
namespace atom {
namespace {
std::unordered_set<content::WebContents*> g_child_web_contents;
} // namespace
ChildWebContentsTracker::ChildWebContentsTracker(
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents) {
g_child_web_contents.insert(web_contents);
}
bool ChildWebContentsTracker::IsChildWebContents(
content::WebContents* web_contents) {
return g_child_web_contents.find(web_contents) != g_child_web_contents.end();
}
void ChildWebContentsTracker::WebContentsDestroyed() {
g_child_web_contents.erase(web_contents());
delete this;
}
} // namespace atom

View File

@@ -0,0 +1,25 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_
#define ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_
#include "content/public/browser/web_contents_observer.h"
namespace atom {
// ChildWebContentsTracker tracks child WebContents
// created by native `window.open()`
class ChildWebContentsTracker : public content::WebContentsObserver {
public:
explicit ChildWebContentsTracker(content::WebContents* web_contents);
static bool IsChildWebContents(content::WebContents* web_contents);
protected:
void WebContentsDestroyed() override;
};
} // namespace atom
#endif // ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_

View File

@@ -9,8 +9,6 @@
#include <vector>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_javascript_dialog_manager.h"
#include "atom/browser/atom_security_state_model_client.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/file_dialog.h"
#include "atom/browser/web_dialog_helper.h"
@@ -18,10 +16,13 @@
#include "base/files/file_util.h"
#include "chrome/browser/printing/print_preview_message_handler.h"
#include "chrome/browser/printing/print_view_manager_basic.h"
#include "chrome/browser/ssl/security_state_tab_helper.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h"
#include "components/security_state/content/content_utils.h"
#include "components/security_state/core/security_state.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/render_process_host.h"
@@ -32,7 +33,6 @@
#include "storage/browser/fileapi/isolated_context.h"
using content::BrowserThread;
using security_state::SecurityStateModel;
namespace atom {
@@ -93,8 +93,10 @@ FileSystem CreateFileSystemStruct(
return FileSystem(file_system_name, root_url, file_system_path);
}
base::DictionaryValue* CreateFileSystemValue(const FileSystem& file_system) {
auto* file_system_value = new base::DictionaryValue();
std::unique_ptr<base::DictionaryValue> CreateFileSystemValue(
const FileSystem& file_system) {
std::unique_ptr<base::DictionaryValue> file_system_value(
new base::DictionaryValue());
file_system_value->SetString("fileSystemName", file_system.file_system_name);
file_system_value->SetString("rootURL", file_system.root_url);
file_system_value->SetString("fileSystemPath", file_system.file_system_path);
@@ -144,24 +146,6 @@ bool IsDevToolsFileSystemAdded(
return file_system_paths.find(file_system_path) != file_system_paths.end();
}
content::SecurityStyle SecurityLevelToSecurityStyle(
SecurityStateModel::SecurityLevel security_level) {
switch (security_level) {
case SecurityStateModel::NONE:
return content::SECURITY_STYLE_UNAUTHENTICATED;
case SecurityStateModel::SECURITY_WARNING:
case SecurityStateModel::SECURITY_POLICY_WARNING:
return content::SECURITY_STYLE_WARNING;
case SecurityStateModel::EV_SECURE:
case SecurityStateModel::SECURE:
return content::SECURITY_STYLE_AUTHENTICATED;
case SecurityStateModel::SECURITY_ERROR:
return content::SECURITY_STYLE_AUTHENTICATION_BROKEN;
}
return content::SECURITY_STYLE_UNKNOWN;
}
} // namespace
CommonWebContentsDelegate::CommonWebContentsDelegate()
@@ -193,13 +177,23 @@ void CommonWebContentsDelegate::SetOwnerWindow(NativeWindow* owner_window) {
void CommonWebContentsDelegate::SetOwnerWindow(
content::WebContents* web_contents, NativeWindow* owner_window) {
owner_window_ = owner_window->GetWeakPtr();
owner_window_ = owner_window ? owner_window->GetWeakPtr() : nullptr;
NativeWindowRelay* relay = new NativeWindowRelay(owner_window_);
web_contents->SetUserData(relay->key, relay);
if (owner_window) {
web_contents->SetUserData(relay->key, relay);
} else {
web_contents->RemoveUserData(relay->key);
delete relay;
}
}
void CommonWebContentsDelegate::DestroyWebContents() {
web_contents_.reset();
void CommonWebContentsDelegate::ResetManagedWebContents(bool async) {
if (async) {
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE,
web_contents_.release());
} else {
web_contents_.reset();
}
}
content::WebContents* CommonWebContentsDelegate::GetWebContents() const {
@@ -235,15 +229,6 @@ bool CommonWebContentsDelegate::CanOverscrollContent() const {
return false;
}
content::JavaScriptDialogManager*
CommonWebContentsDelegate::GetJavaScriptDialogManager(
content::WebContents* source) {
if (!dialog_manager_)
dialog_manager_.reset(new AtomJavaScriptDialogManager);
return dialog_manager_.get();
}
content::ColorChooser* CommonWebContentsDelegate::OpenColorChooser(
content::WebContents* web_contents,
SkColor color,
@@ -290,81 +275,16 @@ bool CommonWebContentsDelegate::IsFullscreenForTabOrPending(
return html_fullscreen_;
}
content::SecurityStyle CommonWebContentsDelegate::GetSecurityStyle(
blink::WebSecurityStyle CommonWebContentsDelegate::GetSecurityStyle(
content::WebContents* web_contents,
content::SecurityStyleExplanations* explanations) {
auto model_client =
AtomSecurityStateModelClient::FromWebContents(web_contents);
const SecurityStateModel::SecurityInfo& security_info =
model_client->GetSecurityInfo();
const content::SecurityStyle security_style =
SecurityLevelToSecurityStyle(security_info.security_level);
explanations->ran_insecure_content_style =
SecurityLevelToSecurityStyle(
SecurityStateModel::kRanInsecureContentLevel);
explanations->displayed_insecure_content_style =
SecurityLevelToSecurityStyle(
SecurityStateModel::kDisplayedInsecureContentLevel);
explanations->scheme_is_cryptographic = security_info.scheme_is_cryptographic;
if (!security_info.scheme_is_cryptographic)
return security_style;
if (security_info.sha1_deprecation_status ==
SecurityStateModel::DEPRECATED_SHA1_MAJOR) {
explanations->broken_explanations.push_back(
content::SecurityStyleExplanation(
kSHA1Certificate,
kSHA1MajorDescription,
security_info.cert_id));
} else if (security_info.sha1_deprecation_status ==
SecurityStateModel::DEPRECATED_SHA1_MINOR) {
explanations->unauthenticated_explanations.push_back(
content::SecurityStyleExplanation(
kSHA1Certificate,
kSHA1MinorDescription,
security_info.cert_id));
}
explanations->ran_insecure_content =
security_info.mixed_content_status ==
security_state::SecurityStateModel::CONTENT_STATUS_RAN ||
security_info.mixed_content_status ==
security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
explanations->displayed_insecure_content =
security_info.mixed_content_status ==
security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED ||
security_info.mixed_content_status ==
security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
if (net::IsCertStatusError(security_info.cert_status)) {
std::string error_string = net::ErrorToString(
net::MapCertStatusToNetError(security_info.cert_status));
content::SecurityStyleExplanation explanation(
kCertificateError,
"There are issues with the site's certificate chain " + error_string,
security_info.cert_id);
if (net::IsCertStatusMinorError(security_info.cert_status))
explanations->unauthenticated_explanations.push_back(explanation);
else
explanations->broken_explanations.push_back(explanation);
} else {
if (security_info.sha1_deprecation_status ==
SecurityStateModel::NO_DEPRECATED_SHA1) {
explanations->secure_explanations.push_back(
content::SecurityStyleExplanation(
kValidCertificate,
kValidCertificateDescription,
security_info.cert_id));
}
}
return security_style;
content::SecurityStyleExplanations* security_style_explanations) {
SecurityStateTabHelper* helper =
SecurityStateTabHelper::FromWebContents(web_contents);
DCHECK(helper);
security_state::SecurityInfo security_info;
helper->GetSecurityInfo(&security_info);
return security_state::GetSecurityStyle(security_info,
security_style_explanations);
}
void CommonWebContentsDelegate::DevToolsSaveToFile(
@@ -374,10 +294,11 @@ void CommonWebContentsDelegate::DevToolsSaveToFile(
if (it != saved_files_.end() && !save_as) {
path = it->second;
} else {
file_dialog::Filters filters;
base::FilePath default_path(base::FilePath::FromUTF8Unsafe(url));
if (!file_dialog::ShowSaveDialog(owner_window(), url, "", default_path,
filters, &path)) {
file_dialog::DialogSettings settings;
settings.parent_window = owner_window();
settings.title = url;
settings.default_path = base::FilePath::FromUTF8Unsafe(url);
if (!file_dialog::ShowSaveDialog(settings, &path)) {
base::StringValue url_value(url);
web_contents_->CallClientFunction(
"DevToolsAPI.canceledSaveURL", &url_value, nullptr, nullptr);
@@ -417,7 +338,7 @@ void CommonWebContentsDelegate::DevToolsRequestFileSystems() {
}
std::vector<FileSystem> file_systems;
for (auto file_system_path : file_system_paths) {
for (const auto& file_system_path : file_system_paths) {
base::FilePath path = base::FilePath::FromUTF8Unsafe(file_system_path);
std::string file_system_id = RegisterFileSystem(GetDevToolsWebContents(),
path);
@@ -438,12 +359,11 @@ void CommonWebContentsDelegate::DevToolsAddFileSystem(
const base::FilePath& file_system_path) {
base::FilePath path = file_system_path;
if (path.empty()) {
file_dialog::Filters filters;
base::FilePath default_path;
std::vector<base::FilePath> paths;
int flag = file_dialog::FILE_DIALOG_OPEN_DIRECTORY;
if (!file_dialog::ShowOpenDialog(owner_window(), "", "", default_path,
filters, flag, &paths))
file_dialog::DialogSettings settings;
settings.parent_window = owner_window();
settings.properties = file_dialog::FILE_DIALOG_OPEN_DIRECTORY;
if (!file_dialog::ShowOpenDialog(settings, &paths))
return;
path = paths[0];
@@ -564,9 +484,9 @@ void CommonWebContentsDelegate::OnDevToolsIndexingWorkCalculated(
int request_id,
const std::string& file_system_path,
int total_work) {
base::FundamentalValue request_id_value(request_id);
base::Value request_id_value(request_id);
base::StringValue file_system_path_value(file_system_path);
base::FundamentalValue total_work_value(total_work);
base::Value total_work_value(total_work);
web_contents_->CallClientFunction("DevToolsAPI.indexingTotalWorkCalculated",
&request_id_value,
&file_system_path_value,
@@ -577,9 +497,9 @@ void CommonWebContentsDelegate::OnDevToolsIndexingWorked(
int request_id,
const std::string& file_system_path,
int worked) {
base::FundamentalValue request_id_value(request_id);
base::Value request_id_value(request_id);
base::StringValue file_system_path_value(file_system_path);
base::FundamentalValue worked_value(worked);
base::Value worked_value(worked);
web_contents_->CallClientFunction("DevToolsAPI.indexingWorked",
&request_id_value,
&file_system_path_value,
@@ -590,7 +510,7 @@ void CommonWebContentsDelegate::OnDevToolsIndexingDone(
int request_id,
const std::string& file_system_path) {
devtools_indexing_jobs_.erase(request_id);
base::FundamentalValue request_id_value(request_id);
base::Value request_id_value(request_id);
base::StringValue file_system_path_value(file_system_path);
web_contents_->CallClientFunction("DevToolsAPI.indexingDone",
&request_id_value,
@@ -606,7 +526,7 @@ void CommonWebContentsDelegate::OnDevToolsSearchCompleted(
for (const auto& file_path : file_paths) {
file_paths_value.AppendString(file_path);
}
base::FundamentalValue request_id_value(request_id);
base::Value request_id_value(request_id);
base::StringValue file_system_path_value(file_system_path);
web_contents_->CallClientFunction("DevToolsAPI.searchCompleted",
&request_id_value,

View File

@@ -20,7 +20,6 @@ using brightray::DevToolsFileSystemIndexer;
namespace atom {
class AtomBrowserContext;
class AtomJavaScriptDialogManager;
class NativeWindow;
class WebDialogHelper;
@@ -42,9 +41,6 @@ class CommonWebContentsDelegate
void SetOwnerWindow(content::WebContents* web_contents,
NativeWindow* owner_window);
// Destroy the managed InspectableWebContents object.
void DestroyWebContents();
// Returns the WebContents managed by this delegate.
content::WebContents* GetWebContents() const;
@@ -65,8 +61,6 @@ class CommonWebContentsDelegate
content::WebContents* source,
const content::OpenURLParams& params) override;
bool CanOverscrollContent() const override;
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
content::WebContents* source) override;
content::ColorChooser* OpenColorChooser(
content::WebContents* web_contents,
SkColor color,
@@ -81,7 +75,7 @@ class CommonWebContentsDelegate
void ExitFullscreenModeForTab(content::WebContents* source) override;
bool IsFullscreenForTabOrPending(
const content::WebContents* source) const override;
content::SecurityStyle GetSecurityStyle(
blink::WebSecurityStyle GetSecurityStyle(
content::WebContents* web_contents,
content::SecurityStyleExplanations* explanations) override;
void HandleKeyboardEvent(
@@ -114,6 +108,9 @@ class CommonWebContentsDelegate
std::string* name, std::string* class_name) override;
#endif
// Destroy the managed InspectableWebContents object.
void ResetManagedWebContents(bool async);
private:
// Callback for when DevToolsSaveToFile has completed.
void OnDevToolsSaveToFile(const std::string& url);
@@ -147,7 +144,6 @@ class CommonWebContentsDelegate
bool native_fullscreen_;
std::unique_ptr<WebDialogHelper> web_dialog_helper_;
std::unique_ptr<AtomJavaScriptDialogManager> dialog_manager_;
scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_;
// Make sure BrowserContext is alwasys destroyed after WebContents.

View File

@@ -20,7 +20,7 @@ void CommonWebContentsDelegate::HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) {
if (event.skip_in_browser ||
event.type == content::NativeWebKeyboardEvent::Char)
event.type() == content::NativeWebKeyboardEvent::Char)
return;
// Escape exits tabbed fullscreen mode.

View File

@@ -8,14 +8,18 @@
#include "base/command_line.h"
#include "base/message_loop/message_loop.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/common/content_switches.h"
#include "gin/array_buffer.h"
#include "gin/v8_initializer.h"
#include "atom/common/node_includes.h"
namespace atom {
JavascriptEnvironment::JavascriptEnvironment()
: initialized_(Initialize()),
isolate_holder_(base::ThreadTaskRunnerHandle::Get()),
isolate_(isolate_holder_.isolate()),
isolate_scope_(isolate_),
locker_(isolate_),
@@ -46,4 +50,11 @@ bool JavascriptEnvironment::Initialize() {
return true;
}
NodeEnvironment::NodeEnvironment(node::Environment* env) : env_(env) {
}
NodeEnvironment::~NodeEnvironment() {
node::FreeEnvironment(env_);
}
} // namespace atom

View File

@@ -8,8 +8,13 @@
#include "base/macros.h"
#include "gin/public/isolate_holder.h"
namespace node {
class Environment;
}
namespace atom {
// Manage the V8 isolate and context automatically.
class JavascriptEnvironment {
public:
JavascriptEnvironment();
@@ -37,6 +42,18 @@ class JavascriptEnvironment {
DISALLOW_COPY_AND_ASSIGN(JavascriptEnvironment);
};
// Manage the Node Environment automatically.
class NodeEnvironment {
public:
explicit NodeEnvironment(node::Environment* env);
~NodeEnvironment();
private:
node::Environment* env_;
DISALLOW_COPY_AND_ASSIGN(NodeEnvironment);
};
} // namespace atom
#endif // ATOM_BROWSER_JAVASCRIPT_ENVIRONMENT_H_

View File

@@ -0,0 +1,26 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/loader/layered_resource_handler.h"
namespace atom {
LayeredResourceHandler::LayeredResourceHandler(
net::URLRequest* request,
std::unique_ptr<content::ResourceHandler> next_handler,
Delegate* delegate)
: content::LayeredResourceHandler(request, std::move(next_handler)),
delegate_(delegate) {}
LayeredResourceHandler::~LayeredResourceHandler() {}
void LayeredResourceHandler::OnResponseStarted(
content::ResourceResponse* response,
std::unique_ptr<content::ResourceController> controller) {
if (delegate_)
delegate_->OnResponseStarted(response);
next_handler_->OnResponseStarted(response, std::move(controller));
}
} // namespace atom

View File

@@ -0,0 +1,41 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_
#define ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_
#include "content/browser/loader/layered_resource_handler.h"
namespace atom {
// Resource handler that notifies on various stages of a resource request.
class LayeredResourceHandler : public content::LayeredResourceHandler {
public:
class Delegate {
public:
Delegate() {}
virtual ~Delegate() {}
virtual void OnResponseStarted(content::ResourceResponse* response) = 0;
};
LayeredResourceHandler(net::URLRequest* request,
std::unique_ptr<content::ResourceHandler> next_handler,
Delegate* delegate);
~LayeredResourceHandler() override;
// content::LayeredResourceHandler:
void OnResponseStarted(
content::ResourceResponse* response,
std::unique_ptr<content::ResourceController> controller) override;
private:
Delegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(LayeredResourceHandler);
};
} // namespace atom
#endif // ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_

View File

@@ -10,10 +10,6 @@
#include "base/strings/sys_string_conversions.h"
#include "base/values.h"
@interface NSWindow (SierraSDK)
@property(class) BOOL allowsAutomaticWindowTabbing;
@end
@implementation AtomApplicationDelegate
- (void)setApplicationDockMenu:(atom::AtomMenuModel*)model {
@@ -25,10 +21,6 @@
// Don't add the "Enter Full Screen" menu item automatically.
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"];
// Don't add the "Show Tab Bar" menu item.
if ([NSWindow respondsToSelector:@selector(allowsAutomaticWindowTabbing)])
NSWindow.allowsAutomaticWindowTabbing = NO;
atom::Browser::Get()->WillFinishLaunching();
}

View File

@@ -0,0 +1,18 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/native_browser_view.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
namespace atom {
NativeBrowserView::NativeBrowserView(
brightray::InspectableWebContentsView* web_contents_view)
: web_contents_view_(web_contents_view) {}
NativeBrowserView::~NativeBrowserView() {}
} // namespace atom

View File

@@ -0,0 +1,57 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NATIVE_BROWSER_VIEW_H_
#define ATOM_BROWSER_NATIVE_BROWSER_VIEW_H_
#include "base/macros.h"
#include "third_party/skia/include/core/SkColor.h"
namespace brightray {
class InspectableWebContentsView;
}
namespace gfx {
class Rect;
}
namespace atom {
namespace api {
class WebContents;
}
enum AutoResizeFlags {
kAutoResizeWidth = 0x1,
kAutoResizeHeight = 0x2,
};
class NativeBrowserView {
public:
virtual ~NativeBrowserView();
static NativeBrowserView* Create(
brightray::InspectableWebContentsView* web_contents_view);
brightray::InspectableWebContentsView* GetInspectableWebContentsView() {
return web_contents_view_;
}
virtual void SetAutoResizeFlags(uint8_t flags) = 0;
virtual void SetBounds(const gfx::Rect& bounds) = 0;
virtual void SetBackgroundColor(SkColor color) = 0;
protected:
explicit NativeBrowserView(
brightray::InspectableWebContentsView* web_contents_view);
brightray::InspectableWebContentsView* web_contents_view_;
private:
DISALLOW_COPY_AND_ASSIGN(NativeBrowserView);
};
} // namespace atom
#endif // ATOM_BROWSER_NATIVE_BROWSER_VIEW_H_

View File

@@ -0,0 +1,30 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NATIVE_BROWSER_VIEW_MAC_H_
#define ATOM_BROWSER_NATIVE_BROWSER_VIEW_MAC_H_
#import <Cocoa/Cocoa.h>
#include "atom/browser/native_browser_view.h"
namespace atom {
class NativeBrowserViewMac : public NativeBrowserView {
public:
explicit NativeBrowserViewMac(
brightray::InspectableWebContentsView* web_contents_view);
~NativeBrowserViewMac() override;
void SetAutoResizeFlags(uint8_t flags) override;
void SetBounds(const gfx::Rect& bounds) override;
void SetBackgroundColor(SkColor color) override;
private:
DISALLOW_COPY_AND_ASSIGN(NativeBrowserViewMac);
};
} // namespace atom
#endif // ATOM_BROWSER_NATIVE_BROWSER_VIEW_MAC_H_

View File

@@ -0,0 +1,60 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/native_browser_view_mac.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "skia/ext/skia_utils_mac.h"
#include "ui/gfx/geometry/rect.h"
// Match view::Views behavior where the view sticks to the top-left origin.
const NSAutoresizingMaskOptions kDefaultAutoResizingMask =
NSViewMaxXMargin | NSViewMinYMargin;
namespace atom {
NativeBrowserViewMac::NativeBrowserViewMac(
brightray::InspectableWebContentsView* web_contents_view)
: NativeBrowserView(web_contents_view) {
auto* view = GetInspectableWebContentsView()->GetNativeView();
view.autoresizingMask = kDefaultAutoResizingMask;
}
NativeBrowserViewMac::~NativeBrowserViewMac() {}
void NativeBrowserViewMac::SetAutoResizeFlags(uint8_t flags) {
NSAutoresizingMaskOptions autoresizing_mask = kDefaultAutoResizingMask;
if (flags & kAutoResizeWidth) {
autoresizing_mask |= NSViewWidthSizable;
}
if (flags & kAutoResizeHeight) {
autoresizing_mask |= NSViewHeightSizable;
}
auto* view = GetInspectableWebContentsView()->GetNativeView();
view.autoresizingMask = autoresizing_mask;
}
void NativeBrowserViewMac::SetBounds(const gfx::Rect& bounds) {
auto* view = GetInspectableWebContentsView()->GetNativeView();
auto* superview = view.superview;
const auto superview_height = superview ? superview.frame.size.height : 0;
view.frame =
NSMakeRect(bounds.x(), superview_height - bounds.y() - bounds.height(),
bounds.width(), bounds.height());
}
void NativeBrowserViewMac::SetBackgroundColor(SkColor color) {
auto* view = GetInspectableWebContentsView()->GetNativeView();
view.wantsLayer = YES;
view.layer.backgroundColor = skia::CGColorCreateFromSkColor(color);
}
// static
NativeBrowserView* NativeBrowserView::Create(
brightray::InspectableWebContentsView* web_contents_view) {
return new NativeBrowserViewMac(web_contents_view);
}
} // namespace atom

View File

@@ -0,0 +1,36 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/native_browser_view_views.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/views/background.h"
#include "ui/views/view.h"
namespace atom {
NativeBrowserViewViews::NativeBrowserViewViews(
brightray::InspectableWebContentsView* web_contents_view)
: NativeBrowserView(web_contents_view) {}
NativeBrowserViewViews::~NativeBrowserViewViews() {}
void NativeBrowserViewViews::SetBounds(const gfx::Rect& bounds) {
auto* view = GetInspectableWebContentsView()->GetView();
view->SetBoundsRect(bounds);
}
void NativeBrowserViewViews::SetBackgroundColor(SkColor color) {
auto* view = GetInspectableWebContentsView()->GetView();
view->set_background(views::Background::CreateSolidBackground(color));
}
// static
NativeBrowserView* NativeBrowserView::Create(
brightray::InspectableWebContentsView* web_contents_view) {
return new NativeBrowserViewViews(web_contents_view);
}
} // namespace atom

View File

@@ -0,0 +1,33 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_
#define ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_
#include "atom/browser/native_browser_view.h"
namespace atom {
class NativeBrowserViewViews : public NativeBrowserView {
public:
explicit NativeBrowserViewViews(
brightray::InspectableWebContentsView* web_contents_view);
~NativeBrowserViewViews() override;
uint8_t GetAutoResizeFlags() { return auto_resize_flags_; }
void SetAutoResizeFlags(uint8_t flags) override {
auto_resize_flags_ = flags;
}
void SetBounds(const gfx::Rect& bounds) override;
void SetBackgroundColor(SkColor color) override;
private:
uint8_t auto_resize_flags_;
DISALLOW_COPY_AND_ASSIGN(NativeBrowserViewViews);
};
} // namespace atom
#endif // ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_

View File

@@ -104,8 +104,7 @@ NativeWindow::~NativeWindow() {
// static
NativeWindow* NativeWindow::FromWebContents(
content::WebContents* web_contents) {
WindowList& window_list = *WindowList::GetInstance();
for (NativeWindow* window : window_list) {
for (const auto& window : WindowList::GetWindows()) {
if (window->web_contents() == web_contents)
return window;
}
@@ -252,7 +251,7 @@ void NativeWindow::SetSizeConstraints(
SetContentSizeConstraints(content_constraints);
}
extensions::SizeConstraints NativeWindow::GetSizeConstraints() {
extensions::SizeConstraints NativeWindow::GetSizeConstraints() const {
extensions::SizeConstraints content_constraints = GetContentSizeConstraints();
extensions::SizeConstraints window_constraints;
if (content_constraints.HasMaximumSize()) {
@@ -273,7 +272,7 @@ void NativeWindow::SetContentSizeConstraints(
size_constraints_ = size_constraints;
}
extensions::SizeConstraints NativeWindow::GetContentSizeConstraints() {
extensions::SizeConstraints NativeWindow::GetContentSizeConstraints() const {
return size_constraints_;
}
@@ -283,7 +282,7 @@ void NativeWindow::SetMinimumSize(const gfx::Size& size) {
SetSizeConstraints(size_constraints);
}
gfx::Size NativeWindow::GetMinimumSize() {
gfx::Size NativeWindow::GetMinimumSize() const {
return GetSizeConstraints().GetMinimumSize();
}
@@ -293,7 +292,7 @@ void NativeWindow::SetMaximumSize(const gfx::Size& size) {
SetSizeConstraints(size_constraints);
}
gfx::Size NativeWindow::GetMaximumSize() {
gfx::Size NativeWindow::GetMaximumSize() const {
return GetSizeConstraints().GetMaximumSize();
}
@@ -340,6 +339,17 @@ void NativeWindow::SetAutoHideCursor(bool auto_hide) {
void NativeWindow::SetVibrancy(const std::string& filename) {
}
void NativeWindow::SetTouchBar(
const std::vector<mate::PersistentDictionary>& items) {
}
void NativeWindow::RefreshTouchBarItem(const std::string& item_id) {
}
void NativeWindow::SetEscapeTouchBarItem(
const mate::PersistentDictionary& item) {
}
void NativeWindow::FocusOnWebView() {
web_contents()->GetRenderViewHost()->GetWidget()->Focus();
}
@@ -390,9 +400,8 @@ void NativeWindow::CloseFilePreview() {
void NativeWindow::RequestToClosePage() {
bool prevent_default = false;
FOR_EACH_OBSERVER(NativeWindowObserver,
observers_,
WillCloseWindow(&prevent_default));
for (NativeWindowObserver& observer : observers_)
observer.WillCloseWindow(&prevent_default);
if (prevent_default) {
WindowList::WindowCloseCancelled(this);
return;
@@ -423,8 +432,8 @@ void NativeWindow::CloseContents(content::WebContents* source) {
inspectable_web_contents_ = nullptr;
Observe(nullptr);
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
WillDestroyNativeObject());
for (NativeWindowObserver& observer : observers_)
observer.WillDestroyNativeObject();
// When the web contents is gone, close the window immediately, but the
// memory will not be freed until you call delete.
@@ -450,7 +459,8 @@ void NativeWindow::RendererUnresponsive(content::WebContents* source) {
void NativeWindow::RendererResponsive(content::WebContents* source) {
window_unresposive_closure_.Cancel();
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnRendererResponsive());
for (NativeWindowObserver& observer : observers_)
observer.OnRendererResponsive();
}
void NativeWindow::NotifyWindowClosed() {
@@ -460,104 +470,138 @@ void NativeWindow::NotifyWindowClosed() {
WindowList::RemoveWindow(this);
is_closed_ = true;
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowClosed());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowClosed();
}
void NativeWindow::NotifyWindowEndSession() {
for (NativeWindowObserver& observer : observers_)
observer.OnWindowEndSession();
}
void NativeWindow::NotifyWindowBlur() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowBlur());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowBlur();
}
void NativeWindow::NotifyWindowFocus() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowFocus());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowFocus();
}
void NativeWindow::NotifyWindowShow() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowShow());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowShow();
}
void NativeWindow::NotifyWindowHide() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowHide());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowHide();
}
void NativeWindow::NotifyWindowMaximize() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMaximize());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowMaximize();
}
void NativeWindow::NotifyWindowUnmaximize() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowUnmaximize());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowUnmaximize();
}
void NativeWindow::NotifyWindowMinimize() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMinimize());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowMinimize();
}
void NativeWindow::NotifyWindowRestore() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowRestore());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowRestore();
}
void NativeWindow::NotifyWindowResize() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowResize());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowResize();
}
void NativeWindow::NotifyWindowMove() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMove());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowMove();
}
void NativeWindow::NotifyWindowMoved() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMoved());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowMoved();
}
void NativeWindow::NotifyWindowEnterFullScreen() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowEnterFullScreen());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowEnterFullScreen();
}
void NativeWindow::NotifyWindowScrollTouchBegin() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowScrollTouchBegin());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowScrollTouchBegin();
}
void NativeWindow::NotifyWindowScrollTouchEnd() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowScrollTouchEnd());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowScrollTouchEnd();
}
void NativeWindow::NotifyWindowScrollTouchEdge() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowScrollTouchEdge());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowScrollTouchEdge();
}
void NativeWindow::NotifyWindowSwipe(const std::string& direction) {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowSwipe(direction));
for (NativeWindowObserver& observer : observers_)
observer.OnWindowSwipe(direction);
}
void NativeWindow::NotifyWindowSheetBegin() {
for (NativeWindowObserver& observer : observers_)
observer.OnWindowSheetBegin();
}
void NativeWindow::NotifyWindowSheetEnd() {
for (NativeWindowObserver& observer : observers_)
observer.OnWindowSheetEnd();
}
void NativeWindow::NotifyWindowLeaveFullScreen() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowLeaveFullScreen());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowLeaveFullScreen();
}
void NativeWindow::NotifyWindowEnterHtmlFullScreen() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowEnterHtmlFullScreen());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowEnterHtmlFullScreen();
}
void NativeWindow::NotifyWindowLeaveHtmlFullScreen() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowLeaveHtmlFullScreen());
for (NativeWindowObserver& observer : observers_)
observer.OnWindowLeaveHtmlFullScreen();
}
void NativeWindow::NotifyWindowExecuteWindowsCommand(
const std::string& command) {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnExecuteWindowsCommand(command));
for (NativeWindowObserver& observer : observers_)
observer.OnExecuteWindowsCommand(command);
}
void NativeWindow::NotifyTouchBarItemInteraction(
const std::string& item_id,
const base::DictionaryValue& details) {
for (NativeWindowObserver& observer : observers_)
observer.OnTouchBarItemResult(item_id, details);
}
#if defined(OS_WIN)
void NativeWindow::NotifyWindowMessage(
UINT message, WPARAM w_param, LPARAM l_param) {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnWindowMessage(message, w_param, l_param));
for (NativeWindowObserver& observer : observers_)
observer.OnWindowMessage(message, w_param, l_param);
}
#endif
@@ -645,14 +689,15 @@ void NativeWindow::ScheduleUnresponsiveEvent(int ms) {
void NativeWindow::NotifyWindowUnresponsive() {
window_unresposive_closure_.Cancel();
if (!is_closed_ && !IsUnresponsiveEventSuppressed() && IsEnabled())
FOR_EACH_OBSERVER(NativeWindowObserver,
observers_,
OnRendererUnresponsive());
if (!is_closed_ && !IsUnresponsiveEventSuppressed() && IsEnabled()) {
for (NativeWindowObserver& observer : observers_)
observer.OnRendererUnresponsive();
}
}
void NativeWindow::NotifyReadyToShow() {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnReadyToShow());
for (NativeWindowObserver& observer : observers_)
observer.OnReadyToShow();
}
} // namespace atom

View File

@@ -18,9 +18,12 @@
#include "base/observer_list.h"
#include "base/supports_user_data.h"
#include "content/public/browser/readback_types.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "extensions/browser/app_window/size_constraints.h"
#include "native_mate/persistent_dictionary.h"
#include "ui/gfx/geometry/rect_f.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
@@ -46,6 +49,8 @@ class Dictionary;
namespace atom {
class NativeBrowserView;
struct DraggableRegion;
class NativeWindow : public base::SupportsUserData,
@@ -95,14 +100,14 @@ class NativeWindow : public base::SupportsUserData,
virtual gfx::Rect GetContentBounds();
virtual void SetSizeConstraints(
const extensions::SizeConstraints& size_constraints);
virtual extensions::SizeConstraints GetSizeConstraints();
virtual extensions::SizeConstraints GetSizeConstraints() const;
virtual void SetContentSizeConstraints(
const extensions::SizeConstraints& size_constraints);
virtual extensions::SizeConstraints GetContentSizeConstraints();
virtual extensions::SizeConstraints GetContentSizeConstraints() const;
virtual void SetMinimumSize(const gfx::Size& size);
virtual gfx::Size GetMinimumSize();
virtual gfx::Size GetMinimumSize() const;
virtual void SetMaximumSize(const gfx::Size& size);
virtual gfx::Size GetMaximumSize();
virtual gfx::Size GetMaximumSize() const;
virtual void SetSheetOffset(const double offsetX, const double offsetY);
virtual double GetSheetOffsetX();
virtual double GetSheetOffsetY();
@@ -119,9 +124,12 @@ class NativeWindow : public base::SupportsUserData,
virtual void SetClosable(bool closable) = 0;
virtual bool IsClosable() = 0;
virtual void SetAlwaysOnTop(bool top,
const std::string& level = "floating") = 0;
const std::string& level = "floating",
int relativeLevel = 0,
std::string* error = nullptr) = 0;
virtual bool IsAlwaysOnTop() = 0;
virtual void Center() = 0;
virtual void Invalidate() = 0;
virtual void SetTitle(const std::string& title) = 0;
virtual std::string GetTitle() = 0;
virtual void FlashFrame(bool flash) = 0;
@@ -140,8 +148,10 @@ class NativeWindow : public base::SupportsUserData,
virtual void SetFocusable(bool focusable);
virtual void SetMenu(AtomMenuModel* menu);
virtual void SetParentWindow(NativeWindow* parent);
virtual gfx::NativeWindow GetNativeWindow() = 0;
virtual gfx::AcceleratedWidget GetAcceleratedWidget() = 0;
virtual void SetBrowserView(NativeBrowserView* browser_view) = 0;
virtual gfx::NativeView GetNativeView() const = 0;
virtual gfx::NativeWindow GetNativeWindow() const = 0;
virtual gfx::AcceleratedWidget GetAcceleratedWidget() const = 0;
// Taskbar/Dock APIs.
enum ProgressState {
@@ -166,6 +176,12 @@ class NativeWindow : public base::SupportsUserData,
// Vibrancy API
virtual void SetVibrancy(const std::string& type);
// Touchbar API
virtual void SetTouchBar(
const std::vector<mate::PersistentDictionary>& items);
virtual void RefreshTouchBarItem(const std::string& item_id);
virtual void SetEscapeTouchBarItem(const mate::PersistentDictionary& item);
// Webview APIs.
virtual void FocusOnWebView();
virtual void BlurWebView();
@@ -201,10 +217,17 @@ class NativeWindow : public base::SupportsUserData,
virtual void HandleKeyboardEvent(
content::WebContents*,
const content::NativeWebKeyboardEvent& event) {}
virtual void ShowAutofillPopup(
content::RenderFrameHost* frame_host,
const gfx::RectF& bounds,
const std::vector<base::string16>& values,
const std::vector<base::string16>& labels) {}
virtual void HideAutofillPopup(content::RenderFrameHost* frame_host) {}
// Public API used by platform-dependent delegates and observers to send UI
// related notifications.
void NotifyWindowClosed();
void NotifyWindowEndSession();
void NotifyWindowBlur();
void NotifyWindowFocus();
void NotifyWindowShow();
@@ -220,11 +243,15 @@ class NativeWindow : public base::SupportsUserData,
void NotifyWindowScrollTouchEnd();
void NotifyWindowScrollTouchEdge();
void NotifyWindowSwipe(const std::string& direction);
void NotifyWindowSheetBegin();
void NotifyWindowSheetEnd();
void NotifyWindowEnterFullScreen();
void NotifyWindowLeaveFullScreen();
void NotifyWindowEnterHtmlFullScreen();
void NotifyWindowLeaveHtmlFullScreen();
void NotifyWindowExecuteWindowsCommand(const std::string& command);
void NotifyTouchBarItemInteraction(const std::string& item_id,
const base::DictionaryValue& details);
#if defined(OS_WIN)
void NotifyWindowMessage(UINT message, WPARAM w_param, LPARAM l_param);
@@ -262,8 +289,10 @@ class NativeWindow : public base::SupportsUserData,
const std::vector<DraggableRegion>& regions);
// Converts between content bounds and window bounds.
virtual gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) = 0;
virtual gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) = 0;
virtual gfx::Rect ContentBoundsToWindowBounds(
const gfx::Rect& bounds) const = 0;
virtual gfx::Rect WindowBoundsToContentBounds(
const gfx::Rect& bounds) const = 0;
// Called when the window needs to update its draggable region.
virtual void UpdateDraggableRegions(

View File

@@ -67,9 +67,11 @@ class NativeWindowMac : public NativeWindow,
bool IsFullScreenable() override;
void SetClosable(bool closable) override;
bool IsClosable() override;
void SetAlwaysOnTop(bool top, const std::string& level) override;
void SetAlwaysOnTop(bool top, const std::string& level,
int relativeLevel, std::string* error) override;
bool IsAlwaysOnTop() override;
void Center() override;
void Invalidate() override;
void SetTitle(const std::string& title) override;
std::string GetTitle() override;
void FlashFrame(bool flash) override;
@@ -85,9 +87,11 @@ class NativeWindowMac : public NativeWindow,
bool IsDocumentEdited() override;
void SetIgnoreMouseEvents(bool ignore) override;
void SetContentProtection(bool enable) override;
void SetBrowserView(NativeBrowserView* browser_view) override;
void SetParentWindow(NativeWindow* parent) override;
gfx::NativeWindow GetNativeWindow() override;
gfx::AcceleratedWidget GetAcceleratedWidget() override;
gfx::NativeView GetNativeView() const override;
gfx::NativeWindow GetNativeWindow() const override;
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
void SetProgressBar(double progress, const ProgressState state) override;
void SetOverlayIcon(const gfx::Image& overlay,
const std::string& description) override;
@@ -98,6 +102,10 @@ class NativeWindowMac : public NativeWindow,
void SetAutoHideCursor(bool auto_hide) override;
void SetVibrancy(const std::string& type) override;
void SetTouchBar(
const std::vector<mate::PersistentDictionary>& items) override;
void RefreshTouchBarItem(const std::string& item_id) override;
void SetEscapeTouchBarItem(const mate::PersistentDictionary& item) override;
// content::RenderWidgetHost::InputEventObserver:
void OnInputEvent(const blink::WebInputEvent& event) override;
@@ -119,6 +127,7 @@ class NativeWindowMac : public NativeWindow,
NORMAL,
HIDDEN,
HIDDEN_INSET,
CUSTOM_BUTTONS_ON_HOVER,
};
TitleBarStyle title_bar_style() const { return title_bar_style_; }
@@ -132,8 +141,8 @@ class NativeWindowMac : public NativeWindow,
private:
// NativeWindow:
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds);
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds);
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) const;
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) const;
void UpdateDraggableRegions(
const std::vector<DraggableRegion>& regions) override;
@@ -158,6 +167,8 @@ class NativeWindowMac : public NativeWindow,
// The view that will fill the whole frameless window.
base::scoped_nsobject<FullSizeContentView> content_view_;
NativeBrowserView* browser_view_;
std::vector<DraggableRegion> draggable_regions_;
bool is_kiosk_;

View File

@@ -7,6 +7,8 @@
#include <Quartz/Quartz.h>
#include <string>
#include "atom/browser/native_browser_view_mac.h"
#include "atom/browser/ui/cocoa/atom_touch_bar.h"
#include "atom/browser/window_list.h"
#include "atom/common/color_util.h"
#include "atom/common/draggable_region.h"
@@ -18,9 +20,9 @@
#include "brightray/browser/inspectable_web_contents_view.h"
#include "brightray/browser/mac/event_dispatching_window.h"
#include "content/public/browser/browser_accessibility_state.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
#include "native_mate/dictionary.h"
#include "skia/ext/skia_utils_mac.h"
#include "third_party/skia/include/core/SkRegion.h"
@@ -44,6 +46,102 @@ bool ScopedDisableResize::disable_resize_ = false;
} // namespace
// Custom Quit, Minimize and Full Screen button container for frameless
// windows.
@interface CustomWindowButtonView : NSView {
@private
BOOL mouse_inside_;
}
@end
@implementation CustomWindowButtonView
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
NSButton* close_button = [NSWindow standardWindowButton:NSWindowCloseButton
forStyleMask:NSTitledWindowMask];
NSButton* miniaturize_button =
[NSWindow standardWindowButton:NSWindowMiniaturizeButton
forStyleMask:NSTitledWindowMask];
NSButton* zoom_button = [NSWindow standardWindowButton:NSWindowZoomButton
forStyleMask:NSTitledWindowMask];
CGFloat x = 0;
const CGFloat space_between = 20;
[close_button setFrameOrigin:NSMakePoint(x, 0)];
x += space_between;
[self addSubview:close_button];
[miniaturize_button setFrameOrigin:NSMakePoint(x, 0)];
x += space_between;
[self addSubview:miniaturize_button];
[zoom_button setFrameOrigin:NSMakePoint(x, 0)];
x += space_between;
[self addSubview:zoom_button];
const auto last_button_frame = zoom_button.frame;
[self setFrameSize:NSMakeSize(last_button_frame.origin.x +
last_button_frame.size.width,
last_button_frame.size.height)];
mouse_inside_ = NO;
[self setNeedsDisplayForButtons];
return self;
}
- (void)viewDidMoveToWindow {
if (!self.window) {
return;
}
// Stay in upper left corner.
const CGFloat top_margin = 3;
const CGFloat left_margin = 7;
[self setAutoresizingMask:NSViewMaxXMargin | NSViewMinYMargin];
[self setFrameOrigin:NSMakePoint(left_margin, self.window.frame.size.height -
self.frame.size.height -
top_margin)];
}
- (BOOL)_mouseInGroup:(NSButton*)button {
return mouse_inside_;
}
- (void)updateTrackingAreas {
auto tracking_area = [[[NSTrackingArea alloc]
initWithRect:NSZeroRect
options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways |
NSTrackingInVisibleRect
owner:self
userInfo:nil] autorelease];
[self addTrackingArea:tracking_area];
}
- (void)mouseEntered:(NSEvent*)event {
[super mouseEntered:event];
mouse_inside_ = YES;
[self setNeedsDisplayForButtons];
}
- (void)mouseExited:(NSEvent*)event {
[super mouseExited:event];
mouse_inside_ = NO;
[self setNeedsDisplayForButtons];
}
- (void)setNeedsDisplayForButtons {
for (NSView* subview in self.subviews) {
[subview setHidden:!mouse_inside_];
[subview setNeedsDisplay:YES];
}
}
@end
// This view always takes the size of its superview. It is intended to be used
// as a NSWindow's contentView. It is needed because NSWindow's implementation
// explicitly resizes the contentView at inopportune times.
@@ -228,7 +326,7 @@ bool ScopedDisableResize::disable_resize_ = false;
- (void)windowWillEnterFullScreen:(NSNotification*)notification {
// Hide the native toolbar before entering fullscreen, so there is no visual
// artifacts.
if (base::mac::IsOSYosemiteOrLater() &&
if (base::mac::IsAtLeastOS10_10() &&
shell_->title_bar_style() == atom::NativeWindowMac::HIDDEN_INSET) {
NSWindow* window = shell_->GetNativeWindow();
[window setToolbar:nil];
@@ -243,7 +341,7 @@ bool ScopedDisableResize::disable_resize_ = false;
// have to set one, because title bar is visible here.
NSWindow* window = shell_->GetNativeWindow();
if ((shell_->transparent() || !shell_->has_frame()) &&
base::mac::IsOSYosemiteOrLater() &&
base::mac::IsAtLeastOS10_10() &&
// FIXME(zcbenz): Showing titlebar for hiddenInset window is weird under
// fullscreen mode.
shell_->title_bar_style() != atom::NativeWindowMac::HIDDEN_INSET) {
@@ -252,7 +350,7 @@ bool ScopedDisableResize::disable_resize_ = false;
// Restore the native toolbar immediately after entering fullscreen, if we do
// this before leaving fullscreen, traffic light buttons will be jumping.
if (base::mac::IsOSYosemiteOrLater() &&
if (base::mac::IsAtLeastOS10_10() &&
shell_->title_bar_style() == atom::NativeWindowMac::HIDDEN_INSET) {
base::scoped_nsobject<NSToolbar> toolbar(
[[NSToolbar alloc] initWithIdentifier:@"titlebarStylingToolbar"]);
@@ -269,13 +367,13 @@ bool ScopedDisableResize::disable_resize_ = false;
// Restore the titlebar visibility.
NSWindow* window = shell_->GetNativeWindow();
if ((shell_->transparent() || !shell_->has_frame()) &&
base::mac::IsOSYosemiteOrLater() &&
base::mac::IsAtLeastOS10_10() &&
shell_->title_bar_style() != atom::NativeWindowMac::HIDDEN_INSET) {
[window setTitleVisibility:NSWindowTitleHidden];
}
// Turn off the style for toolbar.
if (base::mac::IsOSYosemiteOrLater() &&
if (base::mac::IsAtLeastOS10_10() &&
shell_->title_bar_style() == atom::NativeWindowMac::HIDDEN_INSET) {
shell_->SetStyleMask(false, NSFullSizeContentViewWindowMask);
}
@@ -297,7 +395,7 @@ bool ScopedDisableResize::disable_resize_ = false;
- (BOOL)windowShouldClose:(id)window {
// When user tries to close the window by clicking the close button, we do
// not close the window immediately, instead we try to close the web page
// fisrt, and when the web page is closed the window will also be closed.
// first, and when the web page is closed the window will also be closed.
shell_->RequestToClosePage();
return NO;
}
@@ -311,6 +409,14 @@ bool ScopedDisableResize::disable_resize_ = false;
return rect;
}
- (void)windowWillBeginSheet:(NSNotification *)notification {
shell_->NotifyWindowSheetBegin();
}
- (void)windowDidEndSheet:(NSNotification *)notification {
shell_->NotifyWindowSheetEnd();
}
@end
@interface AtomPreviewItem : NSObject <QLPreviewItem>
@@ -335,10 +441,24 @@ bool ScopedDisableResize::disable_resize_ = false;
@end
@interface AtomNSWindow : EventDispatchingWindow<QLPreviewPanelDataSource, QLPreviewPanelDelegate> {
#if !defined(MAC_OS_X_VERSION_10_12)
enum {
NSWindowTabbingModeDisallowed = 2
};
@interface NSWindow (SierraSDK)
- (void)setTabbingMode:(NSInteger)mode;
- (void)setTabbingIdentifier:(NSString*)identifier;
@end
#endif // MAC_OS_X_VERSION_10_12
@interface AtomNSWindow : EventDispatchingWindow<QLPreviewPanelDataSource, QLPreviewPanelDelegate, NSTouchBarDelegate> {
@private
atom::NativeWindowMac* shell_;
bool enable_larger_than_screen_;
base::scoped_nsobject<AtomTouchBar> atom_touch_bar_;
CGFloat windowButtonsInterButtonSpacing_;
}
@property BOOL acceptsFirstMouse;
@@ -351,6 +471,10 @@ bool ScopedDisableResize::disable_resize_ = false;
- (void)setShell:(atom::NativeWindowMac*)shell;
- (void)setEnableLargerThanScreen:(bool)enable;
- (void)enableWindowButtonsOffset;
- (void)resetTouchBar:(const std::vector<mate::PersistentDictionary>&)settings;
- (void)refreshTouchBarItem:(const std::string&)item_id;
- (void)setEscapeTouchBarItem:(const mate::PersistentDictionary&)item;
@end
@implementation AtomNSWindow
@@ -363,6 +487,40 @@ bool ScopedDisableResize::disable_resize_ = false;
enable_larger_than_screen_ = enable;
}
- (void)resetTouchBar:(const std::vector<mate::PersistentDictionary>&)settings {
if (![self respondsToSelector:@selector(touchBar)]) return;
atom_touch_bar_.reset([[AtomTouchBar alloc] initWithDelegate:self
window:shell_
settings:settings]);
self.touchBar = nil;
}
- (void)refreshTouchBarItem:(const std::string&)item_id {
if (atom_touch_bar_ && self.touchBar)
[atom_touch_bar_ refreshTouchBarItem:self.touchBar id:item_id];
}
- (NSTouchBar*)makeTouchBar {
if (atom_touch_bar_)
return [atom_touch_bar_ makeTouchBar];
else
return nil;
}
- (NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier {
if (touchBar && atom_touch_bar_)
return [atom_touch_bar_ makeItemForIdentifier:identifier];
else
return nil;
}
- (void)setEscapeTouchBarItem:(const mate::PersistentDictionary&)item {
if (atom_touch_bar_ && self.touchBar)
[atom_touch_bar_ setEscapeTouchBarItem:item forTouchBar:self.touchBar];
}
// NSWindow overrides.
- (void)swipeWithEvent:(NSEvent *)event {
@@ -534,6 +692,22 @@ bool ScopedDisableResize::disable_resize_ = false;
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
}
// Custom window button methods
- (void)performClose:(id)sender {
if (shell_->title_bar_style() == atom::NativeWindowMac::CUSTOM_BUTTONS_ON_HOVER)
[[self delegate] windowShouldClose:self];
else
[super performClose:sender];
}
- (void)performMiniaturize:(id)sender {
if (shell_->title_bar_style() == atom::NativeWindowMac::CUSTOM_BUTTONS_ON_HOVER)
[self miniaturize:self];
else
[super performMiniaturize:sender];
}
@end
@interface ControlRegionView : NSView
@@ -599,9 +773,11 @@ struct Converter<atom::NativeWindowMac::TitleBarStyle> {
return false;
if (title_bar_style == "hidden") {
*out = atom::NativeWindowMac::HIDDEN;
} else if (title_bar_style == "hidden-inset" || // Deprecate this after 2.0
} else if (title_bar_style == "hidden-inset" || // TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
title_bar_style == "hiddenInset") {
*out = atom::NativeWindowMac::HIDDEN_INSET;
} else if (title_bar_style == "customButtonsOnHover") {
*out = atom::NativeWindowMac::CUSTOM_BUTTONS_ON_HOVER;
} else {
return false;
}
@@ -618,6 +794,7 @@ NativeWindowMac::NativeWindowMac(
const mate::Dictionary& options,
NativeWindow* parent)
: NativeWindow(web_contents, options, parent),
browser_view_(nullptr),
is_kiosk_(false),
was_fullscreen_(false),
zoom_to_page_width_(false),
@@ -648,6 +825,9 @@ NativeWindowMac::NativeWindowMac(
options.Get(options::kTitleBarStyle, &title_bar_style_);
std::string tabbingIdentifier;
options.Get(options::kTabbingIdentifier, &tabbingIdentifier);
std::string windowType;
options.Get(options::kType, &windowType);
@@ -660,6 +840,11 @@ NativeWindowMac::NativeWindowMac(
}
NSUInteger styleMask = NSTitledWindowMask;
if (title_bar_style_ == CUSTOM_BUTTONS_ON_HOVER &&
base::mac::IsAtLeastOS10_10() &&
(!useStandardWindow || transparent() || !has_frame())) {
styleMask = NSFullSizeContentViewWindowMask;
}
if (minimizable) {
styleMask |= NSMiniaturizableWindowMask;
}
@@ -712,20 +897,35 @@ NativeWindowMac::NativeWindowMac(
[window_ setDisableKeyOrMainWindow:YES];
if (transparent() || !has_frame()) {
if (base::mac::IsOSYosemiteOrLater()) {
if (base::mac::IsAtLeastOS10_10()) {
// Don't show title bar.
if (title_bar_style_ == CUSTOM_BUTTONS_ON_HOVER) {
[window_ setTitlebarAppearsTransparent:YES];
}
[window_ setTitleVisibility:NSWindowTitleHidden];
}
// Remove non-transparent corners, see http://git.io/vfonD.
[window_ setOpaque:NO];
}
// Create a tab only if tabbing identifier is specified and window has
// a native title bar.
if (tabbingIdentifier.empty() || transparent() || !has_frame()) {
if ([window_ respondsToSelector:@selector(tabbingMode)]) {
[window_ setTabbingMode:NSWindowTabbingModeDisallowed];
}
} else {
if ([window_ respondsToSelector:@selector(tabbingIdentifier)]) {
[window_ setTabbingIdentifier:base::SysUTF8ToNSString(tabbingIdentifier)];
}
}
// We will manage window's lifetime ourselves.
[window_ setReleasedWhenClosed:NO];
// Hide the title bar.
if (title_bar_style_ == HIDDEN_INSET) {
if (base::mac::IsOSYosemiteOrLater()) {
if (base::mac::IsAtLeastOS10_10()) {
[window_ setTitlebarAppearsTransparent:YES];
base::scoped_nsobject<NSToolbar> toolbar(
[[NSToolbar alloc] initWithIdentifier:@"titlebarStylingToolbar"]);
@@ -1056,8 +1256,12 @@ bool NativeWindowMac::IsClosable() {
return [window_ styleMask] & NSClosableWindowMask;
}
void NativeWindowMac::SetAlwaysOnTop(bool top, const std::string& level) {
void NativeWindowMac::SetAlwaysOnTop(bool top, const std::string& level,
int relativeLevel, std::string* error) {
int windowLevel = NSNormalWindowLevel;
CGWindowLevel maxWindowLevel = CGWindowLevelForKey(kCGMaximumWindowLevelKey);
CGWindowLevel minWindowLevel = CGWindowLevelForKey(kCGMinimumWindowLevelKey);
if (top) {
if (level == "floating") {
windowLevel = NSFloatingWindowLevel;
@@ -1078,7 +1282,15 @@ void NativeWindowMac::SetAlwaysOnTop(bool top, const std::string& level) {
windowLevel = NSDockWindowLevel;
}
}
[window_ setLevel:windowLevel];
NSInteger newLevel = windowLevel + relativeLevel;
if (newLevel >= minWindowLevel && newLevel <= maxWindowLevel) {
[window_ setLevel:newLevel];
} else {
*error = std::string([[NSString stringWithFormat:
@"relativeLevel must be between %d and %d", minWindowLevel,
maxWindowLevel] UTF8String]);
}
}
bool NativeWindowMac::IsAlwaysOnTop() {
@@ -1089,10 +1301,15 @@ void NativeWindowMac::Center() {
[window_ center];
}
void NativeWindowMac::Invalidate() {
[window_ flushWindow];
[[window_ contentView] setNeedsDisplay:YES];
}
void NativeWindowMac::SetTitle(const std::string& title) {
// For macOS <= 10.9, the setTitleVisibility API is not available, we have
// to avoid calling setTitle for frameless window.
if (!base::mac::IsOSYosemiteOrLater() && (transparent() || !has_frame()))
if (!base::mac::IsAtLeastOS10_10() && (transparent() || !has_frame()))
return;
[window_ setTitle:base::SysUTF8ToNSString(title)];
@@ -1184,6 +1401,26 @@ void NativeWindowMac::SetContentProtection(bool enable) {
: NSWindowSharingReadOnly];
}
void NativeWindowMac::SetBrowserView(NativeBrowserView* browser_view) {
if (browser_view_) {
[browser_view_->GetInspectableWebContentsView()->GetNativeView()
removeFromSuperview];
browser_view_ = nullptr;
}
if (!browser_view) {
return;
}
browser_view_ = browser_view;
auto* native_view =
browser_view->GetInspectableWebContentsView()->GetNativeView();
[[window_ contentView] addSubview:native_view
positioned:NSWindowAbove
relativeTo:nil];
native_view.hidden = NO;
}
void NativeWindowMac::SetParentWindow(NativeWindow* parent) {
if (is_modal())
return;
@@ -1199,11 +1436,15 @@ void NativeWindowMac::SetParentWindow(NativeWindow* parent) {
[parent->GetNativeWindow() addChildWindow:window_ ordered:NSWindowAbove];
}
gfx::NativeWindow NativeWindowMac::GetNativeWindow() {
gfx::NativeView NativeWindowMac::GetNativeView() const {
return inspectable_web_contents()->GetView()->GetNativeView();
}
gfx::NativeWindow NativeWindowMac::GetNativeWindow() const {
return window_;
}
gfx::AcceleratedWidget NativeWindowMac::GetAcceleratedWidget() {
gfx::AcceleratedWidget NativeWindowMac::GetAcceleratedWidget() const {
return inspectable_web_contents()->GetView()->GetNativeView();
}
@@ -1211,7 +1452,7 @@ void NativeWindowMac::SetProgressBar(double progress, const NativeWindow::Progre
NSDockTile* dock_tile = [NSApp dockTile];
// For the first time API invoked, we need to create a ContentView in DockTile.
if (dock_tile.contentView == NULL) {
if (dock_tile.contentView == nullptr) {
NSImageView* image_view = [[NSImageView alloc] init];
[image_view setImage:[NSApp applicationIconImage]];
[dock_tile setContentView:image_view];
@@ -1263,7 +1504,7 @@ void NativeWindowMac::SetAutoHideCursor(bool auto_hide) {
}
void NativeWindowMac::SetVibrancy(const std::string& type) {
if (!base::mac::IsOSYosemiteOrLater()) return;
if (!base::mac::IsAtLeastOS10_10()) return;
NSView* vibrant_view = [window_ vibrantView];
@@ -1302,35 +1543,48 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
vibrancyType = NSVisualEffectMaterialTitlebar;
}
if (base::mac::IsOSElCapitanOrLater()) {
if (base::mac::IsAtLeastOS10_11()) {
// TODO(kevinsawicki): Use NSVisualEffectMaterial* constants directly once
// they are available in the minimum SDK version
if (type == "selection") {
// NSVisualEffectMaterialSelection
vibrancyType = (NSVisualEffectMaterial) 4;
vibrancyType = static_cast<NSVisualEffectMaterial>(4);
} else if (type == "menu") {
// NSVisualEffectMaterialMenu
vibrancyType = (NSVisualEffectMaterial) 5;
vibrancyType = static_cast<NSVisualEffectMaterial>(5);
} else if (type == "popover") {
// NSVisualEffectMaterialPopover
vibrancyType = (NSVisualEffectMaterial) 6;
vibrancyType = static_cast<NSVisualEffectMaterial>(6);
} else if (type == "sidebar") {
// NSVisualEffectMaterialSidebar
vibrancyType = (NSVisualEffectMaterial) 7;
vibrancyType = static_cast<NSVisualEffectMaterial>(7);
} else if (type == "medium-light") {
// NSVisualEffectMaterialMediumLight
vibrancyType = (NSVisualEffectMaterial) 8;
vibrancyType = static_cast<NSVisualEffectMaterial>(8);
} else if (type == "ultra-dark") {
// NSVisualEffectMaterialUltraDark
vibrancyType = (NSVisualEffectMaterial) 9;
vibrancyType = static_cast<NSVisualEffectMaterial>(9);
}
}
[effect_view setMaterial:vibrancyType];
}
void NativeWindowMac::SetTouchBar(
const std::vector<mate::PersistentDictionary>& items) {
[window_ resetTouchBar:items];
}
void NativeWindowMac::RefreshTouchBarItem(const std::string& item_id) {
[window_ refreshTouchBarItem:item_id];
}
void NativeWindowMac::SetEscapeTouchBarItem(const mate::PersistentDictionary& item) {
[window_ setEscapeTouchBarItem:item];
}
void NativeWindowMac::OnInputEvent(const blink::WebInputEvent& event) {
switch (event.type) {
switch (event.type()) {
case blink::WebInputEvent::GestureScrollBegin:
case blink::WebInputEvent::GestureScrollUpdate:
case blink::WebInputEvent::GestureScrollEnd:
@@ -1366,7 +1620,7 @@ std::vector<gfx::Rect> NativeWindowMac::CalculateNonDraggableRegions(
}
gfx::Rect NativeWindowMac::ContentBoundsToWindowBounds(
const gfx::Rect& bounds) {
const gfx::Rect& bounds) const {
if (has_frame()) {
gfx::Rect window_bounds(
[window_ frameRectForContentRect:bounds.ToCGRect()]);
@@ -1379,7 +1633,7 @@ gfx::Rect NativeWindowMac::ContentBoundsToWindowBounds(
}
gfx::Rect NativeWindowMac::WindowBoundsToContentBounds(
const gfx::Rect& bounds) {
const gfx::Rect& bounds) const {
if (has_frame()) {
gfx::Rect content_bounds(
[window_ contentRectForFrameRect:bounds.ToCGRect()]);
@@ -1407,7 +1661,7 @@ void NativeWindowMac::InstallView() {
// Make sure the bottom corner is rounded for non-modal windows: http://crbug.com/396264.
// But do not enable it on OS X 10.9 for transparent window, otherwise a
// semi-transparent frame would show.
if (!(transparent() && base::mac::IsOSMavericks()) && !is_modal())
if (!(transparent() && base::mac::IsOS10_9()) && !is_modal())
[[window_ contentView] setWantsLayer:YES];
NSView* view = inspectable_web_contents()->GetView()->GetNativeView();
@@ -1431,21 +1685,26 @@ void NativeWindowMac::InstallView() {
// The fullscreen button should always be hidden for frameless window.
[[window_ standardWindowButton:NSWindowFullScreenButton] setHidden:YES];
if (title_bar_style_ != NORMAL) {
if (base::mac::IsOSMavericks()) {
ShowWindowButton(NSWindowZoomButton);
ShowWindowButton(NSWindowMiniaturizeButton);
ShowWindowButton(NSWindowCloseButton);
if (title_bar_style_ == CUSTOM_BUTTONS_ON_HOVER) {
NSView* window_button_view = [[[CustomWindowButtonView alloc]
initWithFrame:NSZeroRect] autorelease];
[content_view_ addSubview:window_button_view];
} else {
if (title_bar_style_ != NORMAL) {
if (base::mac::IsOS10_9()) {
ShowWindowButton(NSWindowZoomButton);
ShowWindowButton(NSWindowMiniaturizeButton);
ShowWindowButton(NSWindowCloseButton);
}
return;
}
return;
// Hide the window buttons.
[[window_ standardWindowButton:NSWindowZoomButton] setHidden:YES];
[[window_ standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
[[window_ standardWindowButton:NSWindowCloseButton] setHidden:YES];
}
// Hide the window buttons.
[[window_ standardWindowButton:NSWindowZoomButton] setHidden:YES];
[[window_ standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
[[window_ standardWindowButton:NSWindowCloseButton] setHidden:YES];
// Some third-party macOS utilities check the zoom button's enabled state to
// determine whether to show custom UI on hover, so we disable it here to
// prevent them from doing so in a frameless app window.

View File

@@ -8,6 +8,7 @@
#include <string>
#include "base/strings/string16.h"
#include "base/values.h"
#include "ui/base/window_open_disposition.h"
#include "url/gurl.h"
@@ -39,6 +40,9 @@ class NativeWindowObserver {
// Called when the window is closed.
virtual void OnWindowClosed() {}
// Called when Windows sends WM_ENDSESSION message
virtual void OnWindowEndSession() {}
// Called when window loses focus.
virtual void OnWindowBlur() {}
@@ -66,10 +70,14 @@ class NativeWindowObserver {
virtual void OnWindowScrollTouchEnd() {}
virtual void OnWindowScrollTouchEdge() {}
virtual void OnWindowSwipe(const std::string& direction) {}
virtual void OnWindowSheetBegin() {}
virtual void OnWindowSheetEnd() {}
virtual void OnWindowEnterFullScreen() {}
virtual void OnWindowLeaveFullScreen() {}
virtual void OnWindowEnterHtmlFullScreen() {}
virtual void OnWindowLeaveHtmlFullScreen() {}
virtual void OnTouchBarItemResult(const std::string& item_id,
const base::DictionaryValue& details) {}
// Called when window message received
#if defined(OS_WIN)

View File

@@ -7,8 +7,9 @@
#include <string>
#include <vector>
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/native_browser_view_views.h"
#include "atom/browser/ui/views/menu_bar.h"
#include "atom/browser/ui/views/menu_layout.h"
#include "atom/browser/window_list.h"
#include "atom/common/color_util.h"
#include "atom/common/draggable_region.h"
@@ -41,13 +42,14 @@
#include "atom/browser/ui/x/window_state_watcher.h"
#include "atom/browser/ui/x/x_window_utils.h"
#include "base/strings/string_util.h"
#include "chrome/browser/ui/libgtk2ui/unity_service.h"
#include "chrome/browser/ui/libgtkui/unity_service.h"
#include "ui/base/x/x11_util.h"
#include "ui/gfx/x/x11_types.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h"
#include "ui/views/window/native_frame_view.h"
#elif defined(OS_WIN)
#include "atom/browser/ui/views/win_frame_view.h"
#include "atom/browser/ui/win/atom_desktop_native_widget_aura.h"
#include "atom/browser/ui/win/atom_desktop_window_tree_host_win.h"
#include "skia/ext/skia_utils_win.h"
#include "ui/base/win/shell.h"
@@ -85,7 +87,7 @@ bool IsAltKey(const content::NativeWebKeyboardEvent& event) {
bool IsAltModifier(const content::NativeWebKeyboardEvent& event) {
typedef content::NativeWebKeyboardEvent::Modifiers Modifiers;
int modifiers = event.modifiers;
int modifiers = event.modifiers();
modifiers &= ~Modifiers::NumLockOn;
modifiers &= ~Modifiers::CapsLockOn;
return (modifiers == Modifiers::AltKey) ||
@@ -134,6 +136,7 @@ NativeWindowViews::NativeWindowViews(
: NativeWindow(web_contents, options, parent),
window_(new views::Widget),
web_view_(inspectable_web_contents()->GetView()->GetView()),
browser_view_(nullptr),
menu_bar_autohide_(false),
menu_bar_visible_(false),
menu_bar_alt_pressed_(false),
@@ -204,8 +207,7 @@ NativeWindowViews::NativeWindowViews(
if (parent)
params.parent = parent->GetNativeWindow();
params.native_widget =
new views::DesktopNativeWidgetAura(window_.get());
params.native_widget = new AtomDesktopNativeWidgetAura(window_.get());
atom_desktop_window_tree_host_win_ = new AtomDesktopWindowTreeHostWin(
this,
window_.get(),
@@ -274,9 +276,6 @@ NativeWindowViews::NativeWindowViews(
SetWindowType(GetAcceleratedWidget(), window_type);
#endif
// Add web view.
SetLayoutManager(new MenuLayout(this, kMenuBarHeight));
AddChildView(web_view_);
#if defined(OS_WIN)
@@ -321,6 +320,8 @@ NativeWindowViews::NativeWindowViews(
window_->CenterWindow(size);
Layout();
autofill_popup_.reset(new AutofillPopup(GetNativeView()));
#if defined(OS_WIN)
// Save initial window state.
if (fullscreen)
@@ -682,7 +683,8 @@ bool NativeWindowViews::IsClosable() {
#endif
}
void NativeWindowViews::SetAlwaysOnTop(bool top, const std::string& level) {
void NativeWindowViews::SetAlwaysOnTop(bool top, const std::string& level,
int relativeLevel, std::string* error) {
window_->SetAlwaysOnTop(top);
}
@@ -694,6 +696,10 @@ void NativeWindowViews::Center() {
window_->CenterWindow(GetSize());
}
void NativeWindowViews::Invalidate() {
window_->SchedulePaintInRect(gfx::Rect(GetBounds().size()));
}
void NativeWindowViews::SetTitle(const std::string& title) {
title_ = title;
window_->UpdateWindowTitle();
@@ -764,13 +770,14 @@ void NativeWindowViews::SetBackgroundColor(const std::string& color_name) {
}
void NativeWindowViews::SetHasShadow(bool has_shadow) {
wm::SetShadowType(
wm::SetShadowElevation(
GetNativeWindow(),
has_shadow ? wm::SHADOW_TYPE_RECTANGULAR : wm::SHADOW_TYPE_NONE);
has_shadow ? wm::ShadowElevation::MEDIUM : wm::ShadowElevation::NONE);
}
bool NativeWindowViews::HasShadow() {
return wm::GetShadowType(GetNativeWindow()) != wm::SHADOW_TYPE_NONE;
return GetNativeWindow()->GetProperty(wm::kShadowElevationKey)
!= wm::ShadowElevation::NONE;
}
void NativeWindowViews::SetIgnoreMouseEvents(bool ignore) {
@@ -876,6 +883,24 @@ void NativeWindowViews::SetMenu(AtomMenuModel* menu_model) {
Layout();
}
void NativeWindowViews::SetBrowserView(NativeBrowserView* browser_view) {
if (browser_view_) {
web_view_->RemoveChildView(
browser_view_->GetInspectableWebContentsView()->GetView());
browser_view_ = nullptr;
}
if (!browser_view) {
return;
}
// Add as child of the main web view to avoid (0, 0) origin from overlapping
// with menu bar.
browser_view_ = browser_view;
web_view_->AddChildView(
browser_view->GetInspectableWebContentsView()->GetView());
}
void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
NativeWindow::SetParentWindow(parent);
@@ -902,7 +927,11 @@ void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
#endif
}
gfx::NativeWindow NativeWindowViews::GetNativeWindow() {
gfx::NativeView NativeWindowViews::GetNativeView() const {
return window_->GetNativeView();
}
gfx::NativeWindow NativeWindowViews::GetNativeWindow() const {
return window_->GetNativeWindow();
}
@@ -973,7 +1002,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() {
return false;
}
gfx::AcceleratedWidget NativeWindowViews::GetAcceleratedWidget() {
gfx::AcceleratedWidget NativeWindowViews::GetAcceleratedWidget() const {
return GetNativeWindow()->GetHost()->GetAcceleratedWidget();
}
@@ -1154,7 +1183,7 @@ void NativeWindowViews::OnWidgetMove() {
}
gfx::Rect NativeWindowViews::ContentBoundsToWindowBounds(
const gfx::Rect& bounds) {
const gfx::Rect& bounds) const {
if (!has_frame())
return bounds;
@@ -1175,7 +1204,7 @@ gfx::Rect NativeWindowViews::ContentBoundsToWindowBounds(
}
gfx::Rect NativeWindowViews::WindowBoundsToContentBounds(
const gfx::Rect& bounds) {
const gfx::Rect& bounds) const {
if (!has_frame())
return bounds;
@@ -1213,10 +1242,10 @@ void NativeWindowViews::HandleKeyboardEvent(
// Show accelerator when "Alt" is pressed.
if (menu_bar_visible_ && IsAltKey(event))
menu_bar_->SetAcceleratorVisibility(
event.type == blink::WebInputEvent::RawKeyDown);
event.type() == blink::WebInputEvent::RawKeyDown);
// Show the submenu when "Alt+Key" is pressed.
if (event.type == blink::WebInputEvent::RawKeyDown && !IsAltKey(event) &&
if (event.type() == blink::WebInputEvent::RawKeyDown && !IsAltKey(event) &&
IsAltModifier(event)) {
if (!menu_bar_visible_ &&
(menu_bar_->GetAcceleratorIndex(event.windowsKeyCode) != -1))
@@ -1229,10 +1258,10 @@ void NativeWindowViews::HandleKeyboardEvent(
return;
// Toggle the menu bar only when a single Alt is released.
if (event.type == blink::WebInputEvent::RawKeyDown && IsAltKey(event)) {
if (event.type() == blink::WebInputEvent::RawKeyDown && IsAltKey(event)) {
// When a single Alt is pressed:
menu_bar_alt_pressed_ = true;
} else if (event.type == blink::WebInputEvent::KeyUp && IsAltKey(event) &&
} else if (event.type() == blink::WebInputEvent::KeyUp && IsAltKey(event) &&
menu_bar_alt_pressed_) {
// When a single Alt is released right after a Alt is pressed:
menu_bar_alt_pressed_ = false;
@@ -1243,11 +1272,68 @@ void NativeWindowViews::HandleKeyboardEvent(
}
}
gfx::Size NativeWindowViews::GetMinimumSize() {
void NativeWindowViews::ShowAutofillPopup(
content::RenderFrameHost* frame_host,
const gfx::RectF& bounds,
const std::vector<base::string16>& values,
const std::vector<base::string16>& labels) {
auto wc = atom::api::WebContents::FromWrappedClass(
v8::Isolate::GetCurrent(), web_contents());
autofill_popup_->CreateView(
frame_host,
wc->IsOffScreenOrEmbedderOffscreen(),
widget(),
bounds);
autofill_popup_->SetItems(values, labels);
}
void NativeWindowViews::HideAutofillPopup(
content::RenderFrameHost* frame_host) {
autofill_popup_->Hide();
}
void NativeWindowViews::Layout() {
const auto size = GetContentsBounds().size();
const auto menu_bar_bounds =
menu_bar_visible_ ? gfx::Rect(0, 0, size.width(), kMenuBarHeight)
: gfx::Rect();
if (menu_bar_) {
menu_bar_->SetBoundsRect(menu_bar_bounds);
}
const auto old_web_view_size = web_view_ ? web_view_->size() : gfx::Size();
if (web_view_) {
web_view_->SetBoundsRect(
gfx::Rect(0, menu_bar_bounds.height(), size.width(),
size.height() - menu_bar_bounds.height()));
}
const auto new_web_view_size = web_view_ ? web_view_->size() : gfx::Size();
if (browser_view_) {
const auto flags = static_cast<NativeBrowserViewViews*>(browser_view_)
->GetAutoResizeFlags();
int width_delta = 0;
int height_delta = 0;
if (flags & kAutoResizeWidth) {
width_delta = new_web_view_size.width() - old_web_view_size.width();
}
if (flags & kAutoResizeHeight) {
height_delta = new_web_view_size.height() - old_web_view_size.height();
}
auto* view = browser_view_->GetInspectableWebContentsView()->GetView();
auto new_view_size = view->size();
new_view_size.set_width(new_view_size.width() + width_delta);
new_view_size.set_height(new_view_size.height() + height_delta);
view->SetSize(new_view_size);
}
}
gfx::Size NativeWindowViews::GetMinimumSize() const {
return NativeWindow::GetMinimumSize();
}
gfx::Size NativeWindowViews::GetMaximumSize() {
gfx::Size NativeWindowViews::GetMaximumSize() const {
return NativeWindow::GetMaximumSize();
}

View File

@@ -11,6 +11,7 @@
#include <vector>
#include "atom/browser/ui/accelerator_util.h"
#include "atom/browser/ui/autofill_popup.h"
#include "ui/views/widget/widget_delegate.h"
#include "ui/views/widget/widget_observer.h"
@@ -86,9 +87,11 @@ class NativeWindowViews : public NativeWindow,
bool IsFullScreenable() override;
void SetClosable(bool closable) override;
bool IsClosable() override;
void SetAlwaysOnTop(bool top, const std::string& level) override;
void SetAlwaysOnTop(bool top, const std::string& level,
int relativeLevel, std::string* error) override;
bool IsAlwaysOnTop() override;
void Center() override;
void Invalidate() override;
void SetTitle(const std::string& title) override;
std::string GetTitle() override;
void FlashFrame(bool flash) override;
@@ -102,8 +105,10 @@ class NativeWindowViews : public NativeWindow,
void SetContentProtection(bool enable) override;
void SetFocusable(bool focusable) override;
void SetMenu(AtomMenuModel* menu_model) override;
void SetBrowserView(NativeBrowserView* browser_view) override;
void SetParentWindow(NativeWindow* parent) override;
gfx::NativeWindow GetNativeWindow() override;
gfx::NativeView GetNativeView() const override;
gfx::NativeWindow GetNativeWindow() const override;
void SetOverlayIcon(const gfx::Image& overlay,
const std::string& description) override;
void SetProgressBar(double progress, const ProgressState state) override;
@@ -114,7 +119,7 @@ class NativeWindowViews : public NativeWindow,
void SetVisibleOnAllWorkspaces(bool visible) override;
bool IsVisibleOnAllWorkspaces() override;
gfx::AcceleratedWidget GetAcceleratedWidget() override;
gfx::AcceleratedWidget GetAcceleratedWidget() const override;
#if defined(OS_WIN)
void SetIcon(HICON small_icon, HICON app_icon);
@@ -167,15 +172,22 @@ class NativeWindowViews : public NativeWindow,
#endif
// NativeWindow:
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) override;
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) override;
gfx::Rect ContentBoundsToWindowBounds(const gfx::Rect& bounds) const override;
gfx::Rect WindowBoundsToContentBounds(const gfx::Rect& bounds) const override;
void HandleKeyboardEvent(
content::WebContents*,
const content::NativeWebKeyboardEvent& event) override;
void ShowAutofillPopup(
content::RenderFrameHost* frame_host,
const gfx::RectF& bounds,
const std::vector<base::string16>& values,
const std::vector<base::string16>& labels) override;
void HideAutofillPopup(content::RenderFrameHost* frame_host) override;
// views::View:
gfx::Size GetMinimumSize() override;
gfx::Size GetMaximumSize() override;
void Layout() override;
gfx::Size GetMinimumSize() const override;
gfx::Size GetMaximumSize() const override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
// Register accelerators supported by the menu model.
@@ -187,6 +199,10 @@ class NativeWindowViews : public NativeWindow,
std::unique_ptr<views::Widget> window_;
views::View* web_view_; // Managed by inspectable_web_contents_.
NativeBrowserView* browser_view_;
std::unique_ptr<AutofillPopup> autofill_popup_;
std::unique_ptr<MenuBar> menu_bar_;
bool menu_bar_autohide_;
bool menu_bar_visible_;

View File

@@ -147,6 +147,11 @@ bool NativeWindowViews::PreHandleMSG(
}
return false;
}
case WM_ENDSESSION: {
if (w_param) {
NotifyWindowEndSession();
}
}
default:
return false;
}

View File

@@ -21,7 +21,7 @@
#include "net/base/load_flags.h"
#include "net/base/mime_util.h"
#include "net/base/net_errors.h"
#include "net/filter/filter.h"
#include "net/filter/gzip_source_stream.h"
#include "net/http/http_util.h"
#include "net/url_request/url_request_status.h"
@@ -179,10 +179,14 @@ bool URLRequestAsarJob::IsRedirectResponse(GURL* location,
#endif
}
std::unique_ptr<net::Filter> URLRequestAsarJob::SetupFilter() const {
std::unique_ptr<net::SourceStream> URLRequestAsarJob::SetUpSourceStream() {
std::unique_ptr<net::SourceStream> source =
net::URLRequestJob::SetUpSourceStream();
// Bug 9936 - .svgz files needs to be decompressed.
return base::LowerCaseEqualsASCII(file_path_.Extension(), ".svgz")
? net::Filter::GZipFactory() : nullptr;
? net::GzipSourceStream::Create(std::move(source),
net::SourceStream::TYPE_GZIP)
: std::move(source);
}
bool URLRequestAsarJob::GetMimeType(std::string* mime_type) const {

View File

@@ -56,7 +56,7 @@ class URLRequestAsarJob : public net::URLRequestJob {
void Kill() override;
int ReadRawData(net::IOBuffer* buf, int buf_size) override;
bool IsRedirectResponse(GURL* location, int* http_status_code) override;
std::unique_ptr<net::Filter> SetupFilter() const override;
std::unique_ptr<net::SourceStream> SetUpSourceStream() override;
bool GetMimeType(std::string* mime_type) const override;
void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override;
int GetResponseCode() const override;

View File

@@ -7,6 +7,9 @@
#include "atom/browser/browser.h"
#include "atom/browser/net/atom_ct_delegate.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "base/containers/linked_list.h"
#include "base/memory/ptr_util.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/net_errors.h"
#include "net/cert/cert_verify_result.h"
@@ -19,17 +22,130 @@ namespace atom {
namespace {
void OnResult(
net::CertVerifyResult* verify_result,
const net::CompletionCallback& callback,
bool result) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(callback, result ? net::OK : net::ERR_FAILED));
}
class Response : public base::LinkNode<Response> {
public:
Response(net::CertVerifyResult* verify_result,
const net::CompletionCallback& callback)
: verify_result_(verify_result), callback_(callback) {}
net::CertVerifyResult* verify_result() { return verify_result_; }
net::CompletionCallback callback() { return callback_; }
private:
net::CertVerifyResult* verify_result_;
net::CompletionCallback callback_;
DISALLOW_COPY_AND_ASSIGN(Response);
};
} // namespace
class CertVerifierRequest : public AtomCertVerifier::Request {
public:
CertVerifierRequest(const AtomCertVerifier::RequestParams& params,
AtomCertVerifier* cert_verifier)
: params_(params),
cert_verifier_(cert_verifier),
error_(net::ERR_IO_PENDING),
custom_response_(net::ERR_IO_PENDING),
first_response_(true),
weak_ptr_factory_(this) {}
~CertVerifierRequest() override {
cert_verifier_->RemoveRequest(params_);
default_verifier_request_.reset();
while (!response_list_.empty() && !first_response_) {
base::LinkNode<Response>* response_node = response_list_.head();
response_node->RemoveFromList();
Response* response = response_node->value();
RunResponse(response);
}
cert_verifier_ = nullptr;
weak_ptr_factory_.InvalidateWeakPtrs();
}
void RunResponse(Response* response) {
if (custom_response_ == net::ERR_ABORTED) {
*(response->verify_result()) = result_;
response->callback().Run(error_);
} else {
response->verify_result()->Reset();
response->verify_result()->verified_cert = params_.certificate();
cert_verifier_->ct_delegate()->AddCTExcludedHost(params_.hostname());
response->callback().Run(custom_response_);
}
delete response;
}
void Start(net::CRLSet* crl_set,
const net::NetLogWithSource& net_log) {
int error = cert_verifier_->default_verifier()->Verify(
params_, crl_set, &result_,
base::Bind(&CertVerifierRequest::OnDefaultVerificationDone,
weak_ptr_factory_.GetWeakPtr()),
&default_verifier_request_, net_log);
if (error != net::ERR_IO_PENDING)
OnDefaultVerificationDone(error);
}
void OnDefaultVerificationDone(int error) {
error_ = error;
std::unique_ptr<VerifyRequestParams> request(new VerifyRequestParams());
request->hostname = params_.hostname();
request->default_result = net::ErrorToString(error);
request->certificate = params_.certificate();
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&CertVerifierRequest::OnVerifyRequestInUI,
weak_ptr_factory_.GetWeakPtr(),
cert_verifier_->verify_proc(),
base::Passed(&request)));
}
void OnVerifyRequestInUI(const AtomCertVerifier::VerifyProc& verify_proc,
std::unique_ptr<VerifyRequestParams> request) {
verify_proc.Run(*(request.get()),
base::Bind(&CertVerifierRequest::OnResponseInUI,
weak_ptr_factory_.GetWeakPtr()));
}
void OnResponseInUI(int result) {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&CertVerifierRequest::NotifyResponseInIO,
weak_ptr_factory_.GetWeakPtr(), result));
}
void NotifyResponseInIO(int result) {
custom_response_ = result;
first_response_ = false;
// Responding to first request in the list will initiate destruction of
// the class, respond to others in the list inside destructor.
base::LinkNode<Response>* response_node = response_list_.head();
response_node->RemoveFromList();
Response* response = response_node->value();
RunResponse(response);
}
void AddResponseListener(net::CertVerifyResult* verify_result,
const net::CompletionCallback& callback) {
response_list_.Append(new Response(verify_result, callback));
}
const AtomCertVerifier::RequestParams& params() const { return params_; }
private:
using ResponseList = base::LinkedList<Response>;
const AtomCertVerifier::RequestParams params_;
AtomCertVerifier* cert_verifier_;
int error_;
int custom_response_;
bool first_response_;
ResponseList response_list_;
net::CertVerifyResult result_;
std::unique_ptr<AtomCertVerifier::Request> default_verifier_request_;
base::WeakPtrFactory<CertVerifierRequest> weak_ptr_factory_;
};
AtomCertVerifier::AtomCertVerifier(AtomCTDelegate* ct_delegate)
: default_cert_verifier_(net::CertVerifier::CreateDefault()),
ct_delegate_(ct_delegate) {}
@@ -46,28 +162,48 @@ int AtomCertVerifier::Verify(
net::CertVerifyResult* verify_result,
const net::CompletionCallback& callback,
std::unique_ptr<Request>* out_req,
const net::BoundNetLog& net_log) {
const net::NetLogWithSource& net_log) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (verify_proc_.is_null()) {
ct_delegate_->ClearCTExcludedHostsList();
return default_cert_verifier_->Verify(
params, crl_set, verify_result, callback, out_req, net_log);
return default_cert_verifier_->Verify(params, crl_set, verify_result,
callback, out_req, net_log);
} else {
CertVerifierRequest* request = FindRequest(params);
if (!request) {
out_req->reset();
std::unique_ptr<CertVerifierRequest> new_request =
base::MakeUnique<CertVerifierRequest>(params, this);
new_request->Start(crl_set, net_log);
request = new_request.get();
*out_req = std::move(new_request);
inflight_requests_[params] = request;
}
request->AddResponseListener(verify_result, callback);
return net::ERR_IO_PENDING;
}
verify_result->Reset();
verify_result->verified_cert = params.certificate();
ct_delegate_->AddCTExcludedHost(params.hostname());
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(verify_proc_, params.hostname(), params.certificate(),
base::Bind(OnResult, verify_result, callback)));
return net::ERR_IO_PENDING;
}
bool AtomCertVerifier::SupportsOCSPStapling() {
return true;
if (verify_proc_.is_null())
return default_cert_verifier_->SupportsOCSPStapling();
return false;
}
void AtomCertVerifier::RemoveRequest(const RequestParams& params) {
auto it = inflight_requests_.find(params);
if (it != inflight_requests_.end())
inflight_requests_.erase(it);
}
CertVerifierRequest* AtomCertVerifier::FindRequest(
const RequestParams& params) {
auto it = inflight_requests_.find(params);
if (it != inflight_requests_.end())
return it->second;
return nullptr;
}
} // namespace atom

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