Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(583)

Issue 10973: Test the feasibility of turning Chrome into a multi-process ActiveX control

Created:
12 years, 1 month ago by Marshall Greenblatt
Modified:
9 years, 7 months ago
Reviewers:
CC:
chromium-reviews_googlegroups.com
Visibility:
Public.

Description

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.

Patch Set 1 #

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

Powered by Google App Engine
This is Rietveld 408576698