Clone of https://chromium.googlesource.com/chromium/src/build with Mozilla's local modifications
Перейти к файлу
estade@chromium.org 97934cefd9 Move the spellchecker to the renderer.
The motivation is that this removes the sync IPC on every call to the spellchecker. Also, currently we spellcheck in the IO thread, which frequently needs to go to disk (in particular, the entire spellcheck dictionary starts paged out), so this will block just the single renderer when that happens, rather than the whole IO thread.

This breaks the SpellChecker class into two new classes.
1) On the browser side, we have SpellCheckHost. This class handles browser-wide tasks, such as keeping the custom words list in sync with the on-disk custom words dictionary, downloading missing dictionaries, etc. On Posix, it also opens the bdic file since the renderer isn't allowed to open files. SpellCheckHost is created and destroyed on the UI thread. It is initialized on the file thread.
2) On the renderer side, SpellChecker2. This class will one day be renamed SpellChecker. It handles actual checking of the words, memory maps the dictionary file, loads hunspell, etc. There is one SpellChecker2 per RenderThread (hence one per render process).

My intention is for this patch to move Linux to this new approach, and follow up with ports for Windows (which will involve passing a dictionary file name rather than a file descriptor through to the renderer) and Mac (which will involve adding sync ViewHost IPC callsfor when the platform spellchecker is enabled). Note that anyone using the platform spellchecker rather than Hunspell will get no benefit out of this refactor.

There should be no loss of functionality for Linux (or any other platform) in this patch. The following should all still work:
- dictionary is loaded lazily
- hunspell is initialized lazily, per renderer
- language changes work.
- Dynamic downloading of new dictionaries
- auto spell correct works (as well as toggling it).
- disabling spellcheck works.
- custom words work (including adding in one renderer and immediately having it take effect in other renderers, for certain values of "immediate")

TODO:
- move spellchecker unit tests to test SpellCheck2
- add sync IPC for platform spellchecker; port to Mac
- add dictionary location fallback; port to Windows
- remove SpellChecker classes from browser/

BUG=25677

Review URL: http://codereview.chromium.org/357003

git-svn-id: http://src.chromium.org/svn/trunk/src/build@31199 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
2009-11-06 03:05:46 +00:00
internal Remove the xcopy step from the PGO optimize vsprops 2009-10-03 02:44:59 +00:00
linux This does a few things: 2009-10-28 20:13:57 +00:00
mac Move Mac build tool scripts only used by chrome.gyp from build/mac into 2009-10-27 18:33:31 +00:00
temp_gyp Add comments setting emacs and vim tab width and expansion variables. 2009-10-06 03:02:38 +00:00
util Add comments setting emacs and vim tab width and expansion variables. 2009-10-06 03:02:38 +00:00
win Add comments setting emacs and vim tab width and expansion variables. 2009-10-06 03:02:38 +00:00
README.chromium TBR:nsylvain 2009-09-14 07:41:01 +00:00
all.gyp FFmpeg in-tree build for mac. 2009-11-05 00:56:41 +00:00
branding_value.sh Adding a general script to fetch values from the BRANDING files. 2009-05-19 14:10:09 +00:00
build-bisect.py Bisect script should exit gracefully when not enough revisions are present 2009-10-29 19:52:17 +00:00
build_config.h Added a case to build_config.h to cover compiling for Linux with 16-bit wchars 2009-10-22 18:04:17 +00:00
common.croc Major refactoring of Croc. 2009-05-29 00:05:27 +00:00
common.gypi Move the spellchecker to the renderer. 2009-11-06 03:05:46 +00:00
common.vsprops Add the build directory to the repository. 2008-07-26 20:52:30 +00:00
compiler_version.py linux: compiler_version.py tweak to work on gcc 4.4 2009-11-03 19:27:51 +00:00
debug.vsprops Reenable incremental linking for most projects except the largest ones. Will fix later. 2009-03-11 13:39:41 +00:00
external_code.gypi Add comments setting emacs and vim tab width and expansion variables. 2009-10-06 03:02:38 +00:00
external_code.vsprops Add the build directory to the repository. 2008-07-26 20:52:30 +00:00
features_override.gypi Implemented getActiveAttrib, getActiveUniform and readPixels. Removed 2009-10-21 10:48:37 +00:00
gyp_chromium gyp_chromium automatically includes features_override.gypi 2009-10-05 20:48:38 +00:00
install-build-deps.sh Remove bzip2 from install requirements. 2009-11-03 17:23:26 +00:00
output_dll_copy.rules Add the build directory to the repository. 2008-07-26 20:52:30 +00:00
release.vsprops Switch to building Chromium rather than Google Chrome by default. 2008-08-30 18:43:14 +00:00

README.chromium

List of property sheets to be included by projects:
  common.vsprops
    Not used anymore. No-op. Kept for compatibility with current projects.

  debug.vsprops
    Enables debug settings. Must be included directly in Debug configuration. Includes internal\essential.vsprops.

  external_code.vsprops
    Contains settings made to simplify usage of external (non-Google) code. It relaxes the warning levels. Should be included after debug.vsprops or release.vsprops to override their settings.

  output_dll_copy.rules
    Run to enable automatic copy of DLL when they are as an input file in a vcproj project.

  release.vsprops
    Enables release settings. Must be included directly in Release configuration. Includes internal\essential.vsprops. Also includes "internal\release_impl$(CHROME_BUILD_TYPE).vsprops". So the behavior is dependant on the CHROME_BUILD_TYPE environment variable.