|
To test the feasibility of turning Chrome into a multi-process ActiveX control I've implemented a simple experiment sans COM. The goal of this experiment is to have a client application launch chrome.exe programatically as a separate process, and have the chrome process then create its frame as a child window of the client application, at a position that the client application specifies. The client application will (a) spawn the chrome.exe process passing it an HWND and target window rectangle via command-line arguments, and (b) terminate the chrome.exe process when it exits. Other than that, the chrome process is completely independent of the client application (for now).
Implementation highlights:
1. Add a new EMBEDDED BrowserType value in browser\browser_type.h
2. Add new members and setters/getters to the Browser and BrowserView classes to support storage and retrieval of a parent HWND value in browser\browser.h and browser\views\frame\browser_view.h
3. Add two new command-line switches that are checked by BrowserInit::LaunchBrowserImpl() in browser\browser_init.cc to create a Browser object of type EMBEDDED.
4. Add new EmbeddedFrame and EmbeddedNonClientView classes in browser\views\frame that are used for EMBEDDED Browsers by BrowserFrame::CreateForBrowserView() in browser\views\frame\browser_window_factory.cc.
5. Add a new IsEmbedded() method to the TabContentsDelegate class in tab_contents_delegate.h and update dependant classes.
6. Add a simple client application in browser\client that loads chrome using the embedded flags.
7. Various crash and assert fixes.
Usage:
1. Build the chrome_exe project and all dependancies in Debug mode.
2. Build the client project using the independant client.sln VS2005 project in browser\client.
3. Run the client project.
4. Review the command-line flags shown in the top-left text field that will be passed to chrome.exe
5. Click the "Load Embedded Chrome" to launch the chrome.exe process using the command-line flags.
6. The chrome window will appear in the dialog, providing all normal chrome browser functionality.
7. Click the "OK" or "Cancel" button to exit the client application and terminate the chrome.exe process.
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+1531 lines, -21 lines) |
Patch |
|
M |
chrome/browser/browser.h
|
View
|
|
4 chunks |
+17 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/browser.cc
|
View
|
|
7 chunks |
+22 lines, -6 lines |
0 comments
|
Download
|
|
M |
chrome/browser/browser_init.cc
|
View
|
|
1 chunk |
+38 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/browser_type.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/debugger/debugger_view.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/external_tab_container.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/external_tab_container.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/navigation_controller_unittest.cc
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/tab_contents_delegate.h
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/blocked_popup_container.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/blocked_popup_container.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/browser_views.vcproj
|
View
|
|
1 chunk |
+16 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/frame/browser_view.h
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/frame/browser_view.cc
|
View
|
|
8 chunks |
+26 lines, -12 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/frame/browser_window_factory.cc
|
View
|
|
2 chunks |
+9 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/browser/views/frame/embedded_frame.h
|
View
|
|
1 chunk |
+69 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/browser/views/frame/embedded_frame.cc
|
View
|
|
1 chunk |
+121 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/browser/views/frame/embedded_non_client_view.h
|
View
|
|
1 chunk |
+72 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/browser/views/frame/embedded_non_client_view.cc
|
View
|
|
1 chunk |
+143 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/html_dialog_view.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/html_dialog_view.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/tab_contents_container_view.cc
|
View
|
|
1 chunk |
+6 lines, -3 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/tabs/dragged_tab_controller.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/views/tabs/dragged_tab_controller.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/browser/web_contents.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
A |
chrome/client/ReadMe.txt
|
View
|
|
1 chunk |
+93 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/Resource.h
|
View
|
|
1 chunk |
+19 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/client.h
|
View
|
|
1 chunk |
+31 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/client.cpp
|
View
|
|
1 chunk |
+78 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/client.rc
|
View
|
|
1 chunk |
+169 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/client.sln
|
View
|
|
1 chunk |
+20 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/client.vcproj
|
View
|
|
1 chunk |
+272 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/clientDlg.h
|
View
|
|
1 chunk |
+34 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/clientDlg.cpp
|
View
|
|
1 chunk |
+138 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/res/client.ico
|
View
|
|
0 chunks |
+-1 lines, --1 lines |
0 comments
|
Download
|
|
A |
chrome/client/res/client.rc2
|
View
|
|
1 chunk |
+13 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/stdafx.h
|
View
|
|
1 chunk |
+73 lines, -0 lines |
0 comments
|
Download
|
|
A |
chrome/client/stdafx.cpp
|
View
|
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/common/chrome_switches.h
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/common/chrome_switches.cc
|
View
|
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
|
M |
chrome/views/window.cc
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|