|
#1
| |||
| |||
| Included is developer documentation for Google Chrome along with other information to help create Themes, Addons, Plugins and various tools for Chrome. Chromium is separated into three main parts (excluding other libraries): the browser, the renderer, and Webkit. The browser is the main process and represents all the UI and I/O. The renderer is the (often) per-tab sub-process that is driven by the browser. It embeds Webkit to do layout and rendering. Introduction to the solution file We have two solution files, chrome.sln which is the normal version that uses V8 as the Javascript engine, and chrome_kjs.sln which uses Webkit's JavaScriptCore (JSC) engine. You will normally want to use the V8 version; we keep the JSC version around to see whether a bug is V8-related.
When you check out Chromium, you will notice a number of top-level directories. These directories all live in separate Subversion repositories and are versioned separately (see the Chromium modularization document for details on working with these). These projects are as follows:
* app: The "app" is the most basic level of the program. It is run on startup, and dispatches to either the browser or renderer code depending on which capabilities the current process is in. It contains the projects for chrome.exe and chrome.dll. You won't generally need to change this stuff except for resources like images and strings. o locales: Projects for building localized DLLs. o resources: Icons and cursors. o theme: Images for the theme of the window. * browser: The frontend including the main window, UI, and the backend for the application which handles all I/O and storage. This talks to the renderer to manage web pages. o autocomplete: Code for the combined address and search bar ("omnibox") - the UI and the code that organizes data to show in it. o automation: Automation is the system for communicating with the test program that drives the UI tests. This component receives and executes commands from the test program, and forwards results. It communicates with the code in test/automation. o dom_ui: Allows UI to be shown in a tab using WebKit, e.g. the New Tab page, or HTML-based Gears dialogs. o hang_monitor: Code for detecting hung windowed plugins and showing a UI. o history: History includes storage of web page URLs, times, etc., as well as favicons, thumbnails, and the full text index of all visited pages. o net: Some Chromium-specific network code (non-Chromium-specific code is in the top-level net directory). This currently contains code for DNS prefetching. It should probably be merged with common/net. See also renderer/net. o printing: Code for printing web pages. o resources: HTML pages and other resources used by the browser, for example the New Tab page, the about: pages, etc. o safe_browsing: The safe browsing client. o security/resources: The SSL error roadblock pages. o shell: The JavaScript debugger shell. o tabs: The browser window tab strip. o views: Most user interface components of the browser live here, including dialog boxes and other components like the Bookmarks bar. These are browser-specific additions to the more generic objects in chrome/views. o webdata: Database for holding web page/site specific capabilities such as passwords. * common: Files shared between the browser and the renderer, as well as other random projects. This is the code specific to Chromium (and not applicable to being in base) but that is shared between the chrome/browser and the chrome/renderer directories.. o gfx: Graphics and rendering related helper code specific to Chromium. Some graphics stuff that mush be shared with outer toplevel modules is in base/gfx. o net: Some Chromium-specific stuff on top of the net top-level module. This should be merged with browser/net. * installer: Source files and projects for making the installer (MSI package). * plugin: Code for running browser plugins in other processes. * renderer: Code for the subprocess in each tab. This embeds WebKit and talks to browser for I/O. o automation: Allows the browser to communicate with the DOM of a web page. This is used for tests to get web page content from the renderer up to the browser. * test: o automation: Used by tests to drive the browser UI, for example, in test/ui, test/startup, etc. This communicates with browser/automation in the browser. o page_cycler: Code for running page cycler tests (for performance measurement). See tools/perf/dashboard. o reliability: Reliability tests for distributed testing of page loads for reliability metrics and crash finding. o selenium: Code for running the selenium tests, which is a third-party test suite for Ajaxy and JavaScript stuff. See test/third_party/selenium_core. o startup: Tests for measuring startup performance. See tools/perf/dashboard and tools/test/reference_build. o ui: UI tests for poking at the browser UI, opening tabs, etc. It uses test/automation for doing most operations. o unit: The base code for the unit tests. The test code for individual tests is generally alongside the code it is testing in a *_unittest.cc file. * third_party: Third party libraries that are specific to Chromium. Some other third party libraries are in the top-level third_party library. * tools o build: Tools and random stuff related to building. + buildbot: Buildbot configuration. Buildbot manages our automated build system. See third_pary/buildbot. + win: Windows build stuff, including some .vsprops files used for project properties and scripts. o memory: Tools for memory stuff. Currently includes gflags for setting page heap options. o perf/dashboard: Code for converting performance logs (for example test/startup_test) into data and graphs. o profiles: Generator for random history data. Used to make test profiles. o test + image_diff: Tool for comparing images. Written for Webkit pixel tests, but is not currently run. + reference_build: Checked in copy of an old version of Chromium. Used by the startup and page cycler tests to compare against the performance of the current build to identify variations due to the execution environment. + testserver: A simple HTTP web server. Used to provide data for unit tests that must be retrieved over HTTP. * views: A simple framework for doing UI development, providing rendering, layout and event handling. Most of the browser UI is implemented in this system. This directory contains the base objects. Some more browser-specific objects are in browser/views. |
|
#2
| |||
| |||
| Code paths for common operations Application startup
Tab startup & initial navigation
Navigating from the URL bar
Navigations and session history Each NavigationEntry stores a page ID and a block of history state data. The page ID is used to uniquely identify a page load, so we know which NavigationEntry it corresponds to. It is assigned when the page is committed commit, so a pending NavigationEntry will have a page ID of -1. The history state data is simply a WebCore::HistoryItem serialized to a string. Included on this item are things like the page URL, subframe URLs, and form data.
|
|
#3
| |||
| |||
| I was running Chrome fine for many days and all of a sudden on a start up at get a flash on the screen for about 1/10th of a second and it never loads. I uninstalled and reinstalled, but nothing works except that 1/10 second flash. I tried getting a screen print of it and this is all that I got: http://www.chromeplugins.org/chrome/...h/#comment-221 Any suggestions? I'd surely like to use it again. ![]() Thanks, Sky~ |
|
#4
| |||
| |||
| Have you tried starting Chrome with the --first-run switch? |
|
#5
| |||
| |||
| I am not sure what "first-run switch" is. If you mean, have I tried starting it after a cold boot, yes, I have. It's exactly the same. A 1/10 like flash and that's all there is to it. Sky~ |
|
#6
| |||
| |||
| On your shortcut from Chrome, try right clicking then go to properties and at the end of the location add a space then: --first-run Click apply, then double click the shortcut to start Chrome. If it does work and you get Chrome running, go back and remove the first-run command from the file location. |
|
#7
| |||
| |||
| Help! It ran the tail end of the installation, by copying my favorites, etc., from Mozilla and I okay'd everything, but then it disappeared. So I tried starting it and got nothing. Then I removed the --first-run and it went back to its 1/10 second flash again. :/ |
|
#8
| |||
| |||
| I even have Chrome as the default browser. :/ Nothing seems to make it work. |
|
#9
| |||
| |||
| Yesterday, it just came on all by itself. Hooooray! Now if only I could use my mouse pad to scroll up when I use Chrome. I love Chrome, except for the mouse problem. I have to have my gmail account in FireFox and do a ALT+TAB to toggle back and forth. Too bad it's gotta be in FireFox. :/ I don't know what fixed it. Sky~ |
|
#10
| |||
| |||
| Excellent, did your Chrome version update to .30 by any chance? Quote:
Let me know if it works. |
![]() |
| Tags |
| chrome browser, chrome development, documentation |
| Thread Tools | |
| Display Modes | |
| |