Commit graph

512 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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