diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-09 02:56:41 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-09 02:56:41 +0000 |
commit | a17f946fe4acf8bef67945d76931c14607e8e404 (patch) | |
tree | e785b129ec283de54f944bced5570f347a071b49 /chrome | |
parent | c0e0ee4d9be9a9a682210ff1c7853e9f1f8e3770 (diff) | |
download | chromium_src-a17f946fe4acf8bef67945d76931c14607e8e404.zip chromium_src-a17f946fe4acf8bef67945d76931c14607e8e404.tar.gz chromium_src-a17f946fe4acf8bef67945d76931c14607e8e404.tar.bz2 |
chrome.exe --package-extension generates .crx from extension directory
R=aa
BUG=12114
Review URL: http://codereview.chromium.org/118328
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17927 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
19 files changed, 3425 insertions, 2884 deletions
diff --git a/chrome/browser/browser.vcproj b/chrome/browser/browser.vcproj index 0c7d364..b20ce97 100644 --- a/chrome/browser/browser.vcproj +++ b/chrome/browser/browser.vcproj @@ -1,2818 +1,2826 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="browser" - ProjectGUID="{5BF908A7-68FB-4A4B-99E3-8C749F1FE4EA}" - RootNamespace="Browser" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - <ToolFile - RelativePath="..\tools\build\win\resource_text_file_copy.rules" - /> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\browser.vsprops;$(SolutionDir)..\build\debug.vsprops;..\tools\build\win\precompiled_wtl.vsprops" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="Resource text file copy" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="$(IntDir)\..\global_intermediate\app" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - ConfigurationType="4" - InheritedPropertySheets=".\browser.vsprops;$(SolutionDir)..\build\release.vsprops;$(SolutionDir)\tools\build\win\js_engine.vsprops" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="Resource text file copy" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="$(IntDir)\..\global_intermediate\app" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Autocomplete" - > - <File - RelativePath=".\autocomplete\autocomplete.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_accessibility.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_accessibility.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_edit.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_edit.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_edit_view.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_edit_view_win.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_edit_view_win.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_popup_model.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_popup_model.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_popup_view.h" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_popup_view_win.cc" - > - </File> - <File - RelativePath=".\autocomplete\autocomplete_popup_view_win.h" - > - </File> - <File - RelativePath=".\autocomplete\history_contents_provider.cc" - > - </File> - <File - RelativePath=".\autocomplete\history_contents_provider.h" - > - </File> - <File - RelativePath=".\autocomplete\history_url_provider.cc" - > - </File> - <File - RelativePath=".\autocomplete\history_url_provider.h" - > - </File> - <File - RelativePath=".\autocomplete\keyword_provider.cc" - > - </File> - <File - RelativePath=".\autocomplete\keyword_provider.h" - > - </File> - <File - RelativePath=".\autocomplete\search_provider.cc" - > - </File> - <File - RelativePath=".\autocomplete\search_provider.h" - > - </File> - </Filter> - <Filter - Name="Base" - > - <File - RelativePath=".\alternate_nav_url_fetcher.cc" - > - </File> - <File - RelativePath=".\alternate_nav_url_fetcher.h" - > - </File> - <File - RelativePath=".\browser_about_handler.cc" - > - </File> - <File - RelativePath=".\browser_about_handler.h" - > - </File> - <File - RelativePath=".\browser_init.cc" - > - </File> - <File - RelativePath=".\browser_init.h" - > - </File> - <File - RelativePath=".\browser_main.cc" - > - </File> - <File - RelativePath=".\browser_main_win.cc" - > - </File> - <File - RelativePath=".\browser_prefs.cc" - > - </File> - <File - RelativePath=".\browser_prefs.h" - > - </File> - <File - RelativePath=".\browser_process.cc" - > - </File> - <File - RelativePath=".\browser_process.h" - > - </File> - <File - RelativePath=".\browser_process_impl.cc" - > - </File> - <File - RelativePath=".\browser_process_impl.h" - > - </File> - <File - RelativePath=".\browser_shutdown.cc" - > - </File> - <File - RelativePath=".\browser_shutdown.h" - > - </File> - <File - RelativePath=".\browser_theme_provider.cc" - > - </File> - <File - RelativePath=".\browser_theme_provider.h" - > - </File> - <File - RelativePath=".\browser_url_handler.cc" - > - </File> - <File - RelativePath=".\browser_url_handler.h" - > - </File> - <File - RelativePath=".\browsing_data_remover.cc" - > - </File> - <File - RelativePath=".\browsing_data_remover.h" - > - </File> - <File - RelativePath=".\browsing_instance.cc" - > - </File> - <File - RelativePath=".\browsing_instance.h" - > - </File> - <File - RelativePath=".\cancelable_request.cc" - > - </File> - <File - RelativePath=".\cancelable_request.h" - > - </File> - <File - RelativePath=".\character_encoding.cc" - > - </File> - <File - RelativePath=".\character_encoding.h" - > - </File> - <File - RelativePath=".\child_process_security_policy.cc" - > - </File> - <File - RelativePath=".\child_process_security_policy.h" - > - </File> - <File - RelativePath=".\chrome_thread.cc" - > - </File> - <File - RelativePath=".\chrome_thread.h" - > - </File> - <File - RelativePath=".\cross_site_request_manager.cc" - > - </File> - <File - RelativePath=".\cross_site_request_manager.h" - > - </File> - <File - RelativePath=".\fav_icon_helper.cc" - > - </File> - <File - RelativePath=".\fav_icon_helper.h" - > - </File> - <File - RelativePath=".\first_run.cc" - > - </File> - <File - RelativePath=".\first_run.h" - > - </File> - <File - RelativePath=".\first_run_win.cc" - > - </File> - <File - RelativePath=".\google_url_tracker.cc" - > - </File> - <File - RelativePath=".\google_url_tracker.h" - > - </File> - <File - RelativePath=".\google_util.cc" - > - </File> - <File - RelativePath=".\google_util.h" - > - </File> - <File - RelativePath=".\icon_loader.cc" - > - </File> - <File - RelativePath=".\icon_loader.h" - > - </File> - <File - RelativePath=".\icon_loader_win.cc" - > - </File> - <File - RelativePath=".\icon_manager.cc" - > - </File> - <File - RelativePath=".\icon_manager.h" - > - </File> - <File - RelativePath=".\icon_manager_win.cc" - > - </File> - <File - RelativePath=".\ime_input.cc" - > - </File> - <File - RelativePath=".\ime_input.h" - > - </File> - <File - RelativePath=".\input_window_dialog.h" - > - </File> - <File - RelativePath=".\input_window_dialog_win.cc" - > - </File> - <File - RelativePath=".\jankometer.cc" - > - </File> - <File - RelativePath=".\jankometer.h" - > - </File> - <File - RelativePath=".\memory_details.cc" - > - </File> - <File - RelativePath=".\memory_details.h" - > - </File> - <File - RelativePath=".\meta_table_helper.cc" - > - </File> - <File - RelativePath=".\meta_table_helper.h" - > - </File> - <File - RelativePath=".\plugin_process_host.cc" - > - </File> - <File - RelativePath=".\plugin_process_host.h" - > - </File> - <File - RelativePath=".\plugin_service.cc" - > - </File> - <File - RelativePath=".\plugin_service.h" - > - </File> - <File - RelativePath="..\tools\build\win\precompiled_wtl.cc" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - UsePrecompiledHeader="1" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCLCompilerTool" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\tools\build\win\precompiled_wtl.h" - > - </File> - <File - RelativePath=".\process_singleton.h" - > - </File> - <File - RelativePath=".\process_singleton_win.cc" - > - </File> - <File - RelativePath=".\profile.cc" - > - </File> - <File - RelativePath=".\profile.h" - > - </File> - <File - RelativePath=".\profile_manager.cc" - > - </File> - <File - RelativePath=".\profile_manager.h" - > - </File> - <File - RelativePath=".\session_startup_pref.cc" - > - </File> - <File - RelativePath=".\session_startup_pref.h" - > - </File> - <File - RelativePath=".\shell_dialogs.h" - > - </File> - <File - RelativePath=".\shell_integration.cc" - > - </File> - <File - RelativePath=".\shell_integration.h" - > - </File> - <File - RelativePath=".\spellcheck_worditerator.cc" - > - </File> - <File - RelativePath=".\spellcheck_worditerator.h" - > - </File> - <File - RelativePath=".\spellchecker.cc" - > - </File> - <File - RelativePath=".\spellchecker.h" - > - </File> - <File - RelativePath=".\user_data_manager.cc" - > - </File> - <File - RelativePath=".\user_data_manager.h" - > - </File> - <File - RelativePath=".\visitedlink_master.cc" - > - </File> - <File - RelativePath=".\visitedlink_master.h" - > - </File> - </Filter> - <Filter - Name="Bookmarks" - > - <File - RelativePath=".\bookmarks\bookmark_codec.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_codec.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_context_menu.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_context_menu.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_context_menu_views.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_drag_data.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_drag_data.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_drop_info.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_drop_info.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_editor.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_folder_tree_model.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_folder_tree_model.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_html_writer.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_html_writer.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_index.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_index.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_model.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_model.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_service.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_storage.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_storage.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_table_model.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_table_model.h" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_utils.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_utils.h" - > - </File> - </Filter> - <Filter - Name="Browser Window" - > - <File - RelativePath=".\app_modal_dialog.cc" - > - </File> - <File - RelativePath=".\app_modal_dialog.h" - > - </File> - <File - RelativePath=".\app_modal_dialog_queue.cc" - > - </File> - <File - RelativePath=".\app_modal_dialog_queue.h" - > - </File> - <File - RelativePath=".\app_modal_dialog_win.cc" - > - </File> - <File - RelativePath=".\back_forward_menu_model.cc" - > - </File> - <File - RelativePath=".\back_forward_menu_model.h" - > - </File> - <File - RelativePath=".\back_forward_menu_model_views.cc" - > - </File> - <File - RelativePath=".\back_forward_menu_model_views.h" - > - </File> - <File - RelativePath=".\browser.cc" - > - </File> - <File - RelativePath=".\browser.h" - > - </File> - <File - RelativePath=".\browser_list.cc" - > - </File> - <File - RelativePath=".\browser_list.h" - > - </File> - <File - RelativePath=".\browser_window.h" - > - </File> - <File - RelativePath=".\command_updater.cc" - > - </File> - <File - RelativePath=".\command_updater.h" - > - </File> - <File - RelativePath=".\dock_info.cc" - > - </File> - <File - RelativePath=".\dock_info.h" - > - </File> - <File - RelativePath=".\dock_info_win.cc" - > - </File> - <File - RelativePath=".\find_bar.h" - > - </File> - <File - RelativePath=".\find_bar_controller.cc" - > - </File> - <File - RelativePath=".\find_bar_controller.h" - > - </File> - <File - RelativePath=".\find_notification_details.h" - > - </File> - <File - RelativePath=".\jsmessage_box_handler.cc" - > - </File> - <File - RelativePath=".\jsmessage_box_handler.h" - > - </File> - <File - RelativePath=".\load_from_memory_cache_details.h" - > - </File> - <File - RelativePath=".\load_notification_details.h" - > - </File> - <File - RelativePath=".\location_bar.h" - > - </File> - <File - RelativePath=".\login_prompt.cc" - > - </File> - <File - RelativePath=".\login_prompt.h" - > - </File> - <File - RelativePath=".\options_page_base.cc" - > - </File> - <File - RelativePath=".\options_page_base.h" - > - </File> - <File - RelativePath=".\options_window.h" - > - </File> - <File - RelativePath=".\status_bubble.h" - > - </File> - <File - RelativePath=".\task_manager.cc" - > - </File> - <File - RelativePath=".\task_manager.h" - > - </File> - <File - RelativePath=".\task_manager_resource_providers.cc" - > - </File> - <File - RelativePath=".\task_manager_resource_providers.h" - > - </File> - <File - RelativePath=".\task_manager_win.cc" - > - </File> - <File - RelativePath=".\window_sizer.cc" - > - </File> - <File - RelativePath=".\window_sizer.h" - > - </File> - <File - RelativePath=".\window_sizer_win.cc" - > - </File> - </Filter> - <Filter - Name="Automation" - > - <File - RelativePath=".\automation\automation_autocomplete_edit_tracker.h" - > - </File> - <File - RelativePath=".\automation\automation_browser_tracker.h" - > - </File> - <File - RelativePath=".\automation\automation_constrained_window_tracker.h" - > - </File> - <File - RelativePath=".\automation\automation_extension_function.cc" - > - </File> - <File - RelativePath=".\automation\automation_extension_function.h" - > - </File> - <File - RelativePath=".\automation\automation_provider.cc" - > - </File> - <File - RelativePath=".\automation\automation_provider.h" - > - </File> - <File - RelativePath=".\automation\automation_provider_list.cc" - > - </File> - <File - RelativePath=".\automation\automation_provider_list.h" - > - </File> - <File - RelativePath=".\automation\automation_provider_list_generic.cc" - > - </File> - <File - RelativePath=".\automation\automation_resource_tracker.cc" - > - </File> - <File - RelativePath=".\automation\automation_resource_tracker.h" - > - </File> - <File - RelativePath=".\automation\automation_tab_tracker.h" - > - </File> - <File - RelativePath=".\automation\automation_window_tracker.h" - > - </File> - <File - RelativePath=".\automation\extension_automation_constants.cc" - > - </File> - <File - RelativePath=".\automation\extension_automation_constants.h" - > - </File> - <File - RelativePath=".\automation\extension_port_container.cc" - > - </File> - <File - RelativePath=".\automation\extension_port_container.h" - > - </File> - <File - RelativePath=".\automation\ui_controls.cc" - > - </File> - <File - RelativePath=".\automation\ui_controls.h" - > - </File> - <File - RelativePath=".\automation\url_request_failed_dns_job.cc" - > - </File> - <File - RelativePath=".\automation\url_request_failed_dns_job.h" - > - </File> - <File - RelativePath=".\automation\url_request_mock_http_job.cc" - > - </File> - <File - RelativePath=".\automation\url_request_mock_http_job.h" - > - </File> - <File - RelativePath=".\automation\url_request_mock_net_error_job.cc" - > - </File> - <File - RelativePath=".\automation\url_request_mock_net_error_job.h" - > - </File> - <File - RelativePath=".\automation\url_request_slow_download_job.cc" - > - </File> - <File - RelativePath=".\automation\url_request_slow_download_job.h" - > - </File> - <File - RelativePath=".\view_ids.h" - > - </File> - </Filter> - <Filter - Name="History" - > - <File - RelativePath=".\history\archived_database.cc" - > - </File> - <File - RelativePath=".\history\archived_database.h" - > - </File> - <File - RelativePath=".\history\download_database.cc" - > - </File> - <File - RelativePath=".\history\download_database.h" - > - </File> - <File - RelativePath=".\history\download_types.h" - > - </File> - <File - RelativePath=".\history\expire_history_backend.cc" - > - </File> - <File - RelativePath=".\history\expire_history_backend.h" - > - </File> - <File - RelativePath=".\history\history.cc" - > - </File> - <File - RelativePath=".\history\history.h" - > - </File> - <File - RelativePath=".\history\history_backend.cc" - > - </File> - <File - RelativePath=".\history\history_backend.h" - > - </File> - <File - RelativePath=".\history\history_database.cc" - > - </File> - <File - RelativePath=".\history\history_database.h" - > - </File> - <File - RelativePath=".\history\history_indexer.idl" - > - </File> - <File - RelativePath=".\history\history_marshaling.h" - > - </File> - <File - RelativePath=".\history\history_notifications.h" - > - </File> - <File - RelativePath=".\history\history_publisher.cc" - > - </File> - <File - RelativePath=".\history\history_publisher.h" - > - </File> - <File - RelativePath=".\history\history_publisher_win.cc" - > - </File> - <File - RelativePath=".\history\history_types.cc" - > - </File> - <File - RelativePath=".\history\history_types.h" - > - </File> - <File - RelativePath=".\history\in_memory_database.cc" - > - </File> - <File - RelativePath=".\history\in_memory_database.h" - > - </File> - <File - RelativePath=".\history\in_memory_history_backend.cc" - > - </File> - <File - RelativePath=".\history\in_memory_history_backend.h" - > - </File> - <File - RelativePath=".\history\page_usage_data.cc" - > - </File> - <File - RelativePath=".\history\page_usage_data.h" - > - </File> - <File - RelativePath=".\history\query_parser.cc" - > - </File> - <File - RelativePath=".\history\query_parser.h" - > - </File> - <File - RelativePath=".\history\snippet.cc" - > - </File> - <File - RelativePath=".\history\snippet.h" - > - </File> - <File - RelativePath=".\history\starred_url_database.cc" - > - </File> - <File - RelativePath=".\history\starred_url_database.h" - > - </File> - <File - RelativePath=".\history\text_database.cc" - > - </File> - <File - RelativePath=".\history\text_database.h" - > - </File> - <File - RelativePath=".\history\text_database_manager.cc" - > - </File> - <File - RelativePath=".\history\text_database_manager.h" - > - </File> - <File - RelativePath=".\history\thumbnail_database.cc" - > - </File> - <File - RelativePath=".\history\thumbnail_database.h" - > - </File> - <File - RelativePath=".\history\url_database.cc" - > - </File> - <File - RelativePath=".\history\url_database.h" - > - </File> - <File - RelativePath=".\history\visit_database.cc" - > - </File> - <File - RelativePath=".\history\visit_database.h" - > - </File> - <File - RelativePath=".\history\visit_tracker.cc" - > - </File> - <File - RelativePath=".\history\visit_tracker.h" - > - </File> - <File - RelativePath=".\history\visitsegment_database.cc" - > - </File> - <File - RelativePath=".\history\visitsegment_database.h" - > - </File> - <Filter - Name="HangMonitor" - > - <File - RelativePath=".\hang_monitor\hung_plugin_action.cc" - > - </File> - <File - RelativePath=".\hang_monitor\hung_plugin_action.h" - > - </File> - <File - RelativePath=".\hang_monitor\hung_window_detector.cc" - > - </File> - <File - RelativePath=".\hang_monitor\hung_window_detector.h" - > - </File> - </Filter> - </Filter> - <Filter - Name="Sessions and Tab Restore" - > - <File - RelativePath=".\sessions\base_session_service.cc" - > - </File> - <File - RelativePath=".\sessions\base_session_service.h" - > - </File> - <File - RelativePath=".\sessions\session_backend.cc" - > - </File> - <File - RelativePath=".\sessions\session_backend.h" - > - </File> - <File - RelativePath=".\sessions\session_command.cc" - > - </File> - <File - RelativePath=".\sessions\session_command.h" - > - </File> - <File - RelativePath=".\sessions\session_id.cc" - > - </File> - <File - RelativePath=".\sessions\session_id.h" - > - </File> - <File - RelativePath=".\sessions\session_restore.cc" - > - </File> - <File - RelativePath=".\sessions\session_restore.h" - > - </File> - <File - RelativePath=".\sessions\session_service.cc" - > - </File> - <File - RelativePath=".\sessions\session_service.h" - > - </File> - <File - RelativePath=".\sessions\session_types.cc" - > - </File> - <File - RelativePath=".\sessions\session_types.h" - > - </File> - <File - RelativePath=".\sessions\tab_restore_service.cc" - > - </File> - <File - RelativePath=".\sessions\tab_restore_service.h" - > - </File> - </Filter> - <Filter - Name="WebData" - > - <File - RelativePath=".\webdata\web_data_service.cc" - > - </File> - <File - RelativePath=".\webdata\web_data_service.h" - > - </File> - <File - RelativePath=".\webdata\web_data_service_win.cc" - > - </File> - <File - RelativePath=".\webdata\web_database.cc" - > - </File> - <File - RelativePath=".\webdata\web_database.h" - > - </File> - <File - RelativePath=".\webdata\web_database_win.cc" - > - </File> - </Filter> - <Filter - Name="Importer" - > - <File - RelativePath=".\importer\firefox2_importer.cc" - > - </File> - <File - RelativePath=".\importer\firefox2_importer.h" - > - </File> - <File - RelativePath=".\importer\firefox3_importer.cc" - > - </File> - <File - RelativePath=".\importer\firefox3_importer.h" - > - </File> - <File - RelativePath=".\importer\firefox_importer_utils.cc" - > - </File> - <File - RelativePath=".\importer\firefox_importer_utils.h" - > - </File> - <File - RelativePath=".\importer\firefox_profile_lock.cc" - > - </File> - <File - RelativePath=".\importer\firefox_profile_lock.h" - > - </File> - <File - RelativePath=".\importer\firefox_profile_lock_win.cc" - > - </File> - <File - RelativePath=".\importer\ie_importer.cc" - > - </File> - <File - RelativePath=".\importer\ie_importer.h" - > - </File> - <File - RelativePath=".\importer\importer.cc" - > - </File> - <File - RelativePath=".\importer\importer.h" - > - </File> - <File - RelativePath=".\importer\mork_reader.cc" - > - </File> - <File - RelativePath=".\importer\mork_reader.h" - > - </File> - <File - RelativePath=".\importer\toolbar_importer.cc" - > - </File> - <File - RelativePath=".\importer\toolbar_importer.h" - > - </File> - </Filter> - <Filter - Name="Tabs" - > - <File - RelativePath=".\tabs\tab_strip_model.cc" - > - </File> - <File - RelativePath=".\tabs\tab_strip_model.h" - > - </File> - <File - RelativePath=".\tabs\tab_strip_model_order_controller.cc" - > - </File> - <File - RelativePath=".\tabs\tab_strip_model_order_controller.h" - > - </File> - </Filter> - <Filter - Name="Printing" - > - <File - RelativePath=".\printing\page_number.cc" - > - </File> - <File - RelativePath=".\printing\page_number.h" - > - </File> - <File - RelativePath=".\printing\page_overlays.cc" - > - </File> - <File - RelativePath=".\printing\page_overlays.h" - > - </File> - <File - RelativePath=".\printing\page_range.cc" - > - </File> - <File - RelativePath=".\printing\page_range.h" - > - </File> - <File - RelativePath=".\printing\page_setup.cc" - > - </File> - <File - RelativePath=".\printing\page_setup.h" - > - </File> - <File - RelativePath=".\printing\print_job.cc" - > - </File> - <File - RelativePath=".\printing\print_job.h" - > - </File> - <File - RelativePath=".\printing\print_job_manager.cc" - > - </File> - <File - RelativePath=".\printing\print_job_manager.h" - > - </File> - <File - RelativePath=".\printing\print_job_worker.cc" - > - </File> - <File - RelativePath=".\printing\print_job_worker.h" - > - </File> - <File - RelativePath=".\printing\print_job_worker_owner.h" - > - </File> - <File - RelativePath=".\printing\print_settings.cc" - > - </File> - <File - RelativePath=".\printing\print_settings.h" - > - </File> - <File - RelativePath=".\printing\print_view_manager.cc" - > - </File> - <File - RelativePath=".\printing\print_view_manager.h" - > - </File> - <File - RelativePath=".\printing\printed_document.cc" - > - </File> - <File - RelativePath=".\printing\printed_document.h" - > - </File> - <File - RelativePath=".\printing\printed_page.cc" - > - </File> - <File - RelativePath=".\printing\printed_page.h" - > - </File> - <File - RelativePath=".\printing\printed_pages_source.h" - > - </File> - <File - RelativePath=".\printing\printer_query.cc" - > - </File> - <File - RelativePath=".\printing\printer_query.h" - > - </File> - <File - RelativePath=".\printing\win_printing_context.cc" - > - </File> - <File - RelativePath=".\printing\win_printing_context.h" - > - </File> - </Filter> - <Filter - Name="Sandbox" - > - <File - RelativePath=".\sandbox_policy.cc" - > - </File> - <File - RelativePath=".\sandbox_policy.h" - > - </File> - </Filter> - <Filter - Name="Password Manager" - > - <File - RelativePath=".\password_manager\encryptor.h" - > - </File> - <File - RelativePath=".\password_manager\encryptor_win.cc" - > - </File> - <File - RelativePath=".\password_manager\ie7_password.cc" - > - </File> - <File - RelativePath=".\password_manager\ie7_password.h" - > - </File> - <File - RelativePath=".\password_manager\password_form_manager.cc" - > - </File> - <File - RelativePath=".\password_manager\password_form_manager.h" - > - </File> - <File - RelativePath=".\password_manager\password_manager.cc" - > - </File> - <File - RelativePath=".\password_manager\password_manager.h" - > - </File> - <File - RelativePath=".\password_manager\password_store.cc" - > - </File> - <File - RelativePath=".\password_manager\password_store.h" - > - </File> - <File - RelativePath=".\password_manager\password_store_default.cc" - > - </File> - <File - RelativePath=".\password_manager\password_store_default.h" - > - </File> - <File - RelativePath=".\password_manager\password_store_win.cc" - > - </File> - <File - RelativePath=".\password_manager\password_store_win.h" - > - </File> - </Filter> - <Filter - Name="External Tab" - > - <File - RelativePath=".\external_tab_container.cc" - > - </File> - <File - RelativePath=".\external_tab_container.h" - > - </File> - </Filter> - <Filter - Name="DOM UI" - > - <File - RelativePath=".\dom_ui\chrome_url_data_manager.cc" - > - </File> - <File - RelativePath=".\dom_ui\chrome_url_data_manager.h" - > - </File> - <File - RelativePath=".\dom_ui\debugger_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\debugger_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\devtools_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\devtools_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_factory.cc" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_factory.h" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_favicon_source.cc" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_favicon_source.h" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_theme_source.cc" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_theme_source.h" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_thumbnail_source.cc" - > - </File> - <File - RelativePath=".\dom_ui\dom_ui_thumbnail_source.h" - > - </File> - <File - RelativePath=".\dom_ui\downloads_dom_handler.cc" - > - </File> - <File - RelativePath=".\dom_ui\downloads_dom_handler.h" - > - </File> - <File - RelativePath=".\dom_ui\downloads_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\downloads_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\fileicon_source.cc" - > - </File> - <File - RelativePath=".\dom_ui\fileicon_source.h" - > - </File> - <File - RelativePath=".\dom_ui\history_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\history_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\html_dialog_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\html_dialog_ui.h" - > - </File> - <File - RelativePath=".\dom_ui\new_tab_ui.cc" - > - </File> - <File - RelativePath=".\dom_ui\new_tab_ui.h" - > - </File> - </Filter> - <Filter - Name="Net" - > - <File - RelativePath=".\net\chrome_url_request_context.cc" - > - </File> - <File - RelativePath=".\net\chrome_url_request_context.h" - > - </File> - <File - RelativePath=".\net\dns_global.cc" - > - </File> - <File - RelativePath=".\net\dns_global.h" - > - </File> - <File - RelativePath=".\net\dns_host_info.cc" - > - </File> - <File - RelativePath=".\net\dns_host_info.h" - > - </File> - <File - RelativePath=".\net\dns_master.cc" - > - </File> - <File - RelativePath=".\net\dns_master.h" - > - </File> - <File - RelativePath=".\net\referrer.cc" - > - </File> - <File - RelativePath=".\net\referrer.h" - > - </File> - <File - RelativePath=".\net\resolve_proxy_msg_helper.cc" - > - </File> - <File - RelativePath=".\net\resolve_proxy_msg_helper.h" - > - </File> - <File - RelativePath=".\net\sdch_dictionary_fetcher.cc" - > - </File> - <File - RelativePath=".\net\sdch_dictionary_fetcher.h" - > - </File> - <File - RelativePath=".\net\url_fetcher.cc" - > - </File> - <File - RelativePath=".\net\url_fetcher.h" - > - </File> - <File - RelativePath=".\net\url_fetcher_protect.cc" - > - </File> - <File - RelativePath=".\net\url_fetcher_protect.h" - > - </File> - <File - RelativePath=".\net\url_fixer_upper.cc" - > - </File> - <File - RelativePath=".\net\url_fixer_upper.h" - > - </File> - </Filter> - <Filter - Name="RLZ" - > - <File - RelativePath=".\rlz\rlz.cc" - > - </File> - <File - RelativePath=".\rlz\rlz.h" - > - </File> - </Filter> - <Filter - Name="Safe Browsing" - > - <File - RelativePath=".\safe_browsing\bloom_filter.cc" - > - </File> - <File - RelativePath=".\safe_browsing\bloom_filter.h" - > - </File> - <File - RelativePath=".\safe_browsing\chunk_range.cc" - > - </File> - <File - RelativePath=".\safe_browsing\chunk_range.h" - > - </File> - <File - RelativePath=".\safe_browsing\protocol_manager.cc" - > - </File> - <File - RelativePath=".\safe_browsing\protocol_manager.h" - > - </File> - <File - RelativePath=".\safe_browsing\protocol_parser.cc" - > - </File> - <File - RelativePath=".\safe_browsing\protocol_parser.h" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_blocking_page.cc" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_blocking_page.h" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_database.cc" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_database.h" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_database_bloom.cc" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_database_bloom.h" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_service.cc" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_service.h" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_util.cc" - > - </File> - <File - RelativePath=".\safe_browsing\safe_browsing_util.h" - > - </File> - </Filter> - <Filter - Name="Accessibility" - > - <File - RelativePath=".\browser_accessibility.cc" - > - </File> - <File - RelativePath=".\browser_accessibility.h" - > - </File> - <File - RelativePath=".\browser_accessibility_manager.cc" - > - </File> - <File - RelativePath=".\browser_accessibility_manager.h" - > - </File> - </Filter> - <Filter - Name="Download" - > - <File - RelativePath=".\download\download_exe.cc" - > - </File> - <File - RelativePath=".\download\download_file.cc" - > - </File> - <File - RelativePath=".\download\download_file.h" - > - </File> - <File - RelativePath=".\download\download_item_model.cc" - > - </File> - <File - RelativePath=".\download\download_item_model.h" - > - </File> - <File - RelativePath=".\download\download_manager.cc" - > - </File> - <File - RelativePath=".\download\download_manager.h" - > - </File> - <File - RelativePath=".\download\download_request_dialog_delegate.h" - > - </File> - <File - RelativePath=".\download\download_request_dialog_delegate_win.cc" - > - </File> - <File - RelativePath=".\download\download_request_dialog_delegate_win.h" - > - </File> - <File - RelativePath=".\download\download_request_manager.cc" - > - </File> - <File - RelativePath=".\download\download_request_manager.h" - > - </File> - <File - RelativePath=".\download\download_shelf.cc" - > - </File> - <File - RelativePath=".\download\download_shelf.h" - > - </File> - <File - RelativePath=".\download\download_started_animation.h" - > - </File> - <File - RelativePath=".\download\download_util.cc" - > - </File> - <File - RelativePath=".\download\download_util.h" - > - </File> - </Filter> - <Filter - Name="Save Page" - > - <File - RelativePath=".\download\save_file.cc" - > - </File> - <File - RelativePath=".\download\save_file.h" - > - </File> - <File - RelativePath=".\download\save_file_manager.cc" - > - </File> - <File - RelativePath=".\download\save_file_manager.h" - > - </File> - <File - RelativePath=".\download\save_item.cc" - > - </File> - <File - RelativePath=".\download\save_item.h" - > - </File> - <File - RelativePath=".\download\save_package.cc" - > - </File> - <File - RelativePath=".\download\save_package.h" - > - </File> - <File - RelativePath=".\download\save_types.h" - > - </File> - </Filter> - <Filter - Name="Autofill" - > - <File - RelativePath=".\autofill_manager.cc" - > - </File> - <File - RelativePath=".\autofill_manager.h" - > - </File> - </Filter> - <Filter - Name="Extensions" - > - <File - RelativePath=".\extensions\extension_bookmarks_module.cc" - > - </File> - <File - RelativePath=".\extensions\extension_bookmarks_module.h" - > - </File> - <File - RelativePath=".\extensions\extension_bookmarks_module_constants.cc" - > - </File> - <File - RelativePath=".\extensions\extension_bookmarks_module_constants.h" - > - </File> - <File - RelativePath=".\extensions\extension_browser_event_router.cc" - > - </File> - <File - RelativePath=".\extensions\extension_browser_event_router.h" - > - </File> - <File - RelativePath=".\extensions\extension_event_names.cc" - > - </File> - <File - RelativePath=".\extensions\extension_event_names.h" - > - </File> - <File - RelativePath=".\extensions\extension_function.cc" - > - </File> - <File - RelativePath=".\extensions\extension_function.h" - > - </File> - <File - RelativePath=".\extensions\extension_function_dispatcher.cc" - > - </File> - <File - RelativePath=".\extensions\extension_function_dispatcher.h" - > - </File> - <File - RelativePath=".\extensions\extension_host.cc" - > - </File> - <File - RelativePath=".\extensions\extension_host.h" - > - </File> - <File - RelativePath=".\extensions\extension_message_service.cc" - > - </File> - <File - RelativePath=".\extensions\extension_message_service.h" - > - </File> - <File - RelativePath=".\extensions\extension_page_actions_module.cc" - > - </File> - <File - RelativePath=".\extensions\extension_page_actions_module.h" - > - </File> - <File - RelativePath=".\extensions\extension_page_actions_module_constants.cc" - > - </File> - <File - RelativePath=".\extensions\extension_page_actions_module_constants.h" - > - </File> - <File - RelativePath=".\extensions\extension_process_manager.cc" - > - </File> - <File - RelativePath=".\extensions\extension_process_manager.h" - > - </File> - <File - RelativePath=".\extensions\extension_protocols.cc" - > - </File> - <File - RelativePath=".\extensions\extension_protocols.h" - > - </File> - <File - RelativePath=".\extensions\extension_shelf.cc" - > - </File> - <File - RelativePath=".\extensions\extension_shelf.h" - > - </File> - <File - RelativePath=".\extensions\extension_tabs_module.cc" - > - </File> - <File - RelativePath=".\extensions\extension_tabs_module.h" - > - </File> - <File - RelativePath=".\extensions\extension_tabs_module_constants.cc" - > - </File> - <File - RelativePath=".\extensions\extension_tabs_module_constants.h" - > - </File> - <File - RelativePath=".\extensions\extension_view.cc" - > - </File> - <File - RelativePath=".\extensions\extension_view.h" - > - </File> - <File - RelativePath=".\extensions\extensions_service.cc" - > - </File> - <File - RelativePath=".\extensions\extensions_service.h" - > - </File> - <File - RelativePath=".\extensions\extensions_ui.cc" - > - </File> - <File - RelativePath=".\extensions\extensions_ui.h" - > - </File> - <File - RelativePath=".\extensions\user_script_master.cc" - > - </File> - <File - RelativePath=".\extensions\user_script_master.h" - > - </File> - </Filter> - <Filter - Name="Renderer Host" - > - <File - RelativePath=".\renderer_host\async_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\async_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\audio_renderer_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\audio_renderer_host.h" - > - </File> - <File - RelativePath=".\renderer_host\backing_store.h" - > - </File> - <File - RelativePath=".\renderer_host\backing_store_manager.cc" - > - </File> - <File - RelativePath=".\renderer_host\backing_store_manager.h" - > - </File> - <File - RelativePath=".\renderer_host\backing_store_win.cc" - > - </File> - <File - RelativePath=".\renderer_host\browser_render_process_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\browser_render_process_host.h" - > - </File> - <File - RelativePath=".\renderer_host\buffered_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\buffered_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\cross_site_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\cross_site_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\download_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\download_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\download_throttling_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\download_throttling_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\render_process_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_process_host.h" - > - </File> - <File - RelativePath=".\renderer_host\render_view_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_view_host.h" - > - </File> - <File - RelativePath=".\renderer_host\render_view_host_delegate.h" - > - </File> - <File - RelativePath=".\renderer_host\render_view_host_factory.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_view_host_factory.h" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_helper.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_helper.h" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_host.h" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_host_view.h" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_host_view_win.cc" - > - </File> - <File - RelativePath=".\renderer_host\render_widget_host_view_win.h" - > - </File> - <File - RelativePath=".\renderer_host\resource_dispatcher_host.cc" - > - </File> - <File - RelativePath=".\renderer_host\resource_dispatcher_host.h" - > - </File> - <File - RelativePath=".\renderer_host\resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\resource_message_filter.cc" - > - </File> - <File - RelativePath=".\renderer_host\resource_message_filter.h" - > - </File> - <File - RelativePath=".\renderer_host\resource_message_filter_win.cc" - > - </File> - <File - RelativePath=".\renderer_host\resource_request_details.h" - > - </File> - <File - RelativePath=".\renderer_host\safe_browsing_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\safe_browsing_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\save_file_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\save_file_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\sync_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\sync_resource_handler.h" - > - </File> - <File - RelativePath=".\renderer_host\web_cache_manager.cc" - > - </File> - <File - RelativePath=".\renderer_host\web_cache_manager.h" - > - </File> - </Filter> - <Filter - Name="Tab Contents" - > - <File - RelativePath=".\tab_contents\constrained_window.h" - > - </File> - <File - RelativePath=".\tab_contents\infobar_delegate.cc" - > - </File> - <File - RelativePath=".\tab_contents\infobar_delegate.h" - > - </File> - <File - RelativePath=".\tab_contents\interstitial_page.cc" - > - </File> - <File - RelativePath=".\tab_contents\interstitial_page.h" - > - </File> - <File - RelativePath=".\tab_contents\navigation_controller.cc" - > - </File> - <File - RelativePath=".\tab_contents\navigation_controller.h" - > - </File> - <File - RelativePath=".\tab_contents\navigation_entry.cc" - > - </File> - <File - RelativePath=".\tab_contents\navigation_entry.h" - > - </File> - <File - RelativePath=".\tab_contents\page_navigator.h" - > - </File> - <File - RelativePath=".\tab_contents\provisional_load_details.cc" - > - </File> - <File - RelativePath=".\tab_contents\provisional_load_details.h" - > - </File> - <File - RelativePath=".\tab_contents\render_view_context_menu.cc" - > - </File> - <File - RelativePath=".\tab_contents\render_view_context_menu.h" - > - </File> - <File - RelativePath=".\tab_contents\render_view_context_menu_win.cc" - > - </File> - <File - RelativePath=".\tab_contents\render_view_context_menu_win.h" - > - </File> - <File - RelativePath=".\tab_contents\render_view_host_delegate_helper.cc" - > - </File> - <File - RelativePath=".\tab_contents\render_view_host_delegate_helper.h" - > - </File> - <File - RelativePath=".\tab_contents\render_view_host_manager.cc" - > - </File> - <File - RelativePath=".\tab_contents\render_view_host_manager.h" - > - </File> - <File - RelativePath=".\tab_contents\repost_form_warning.h" - > - </File> - <File - RelativePath=".\tab_contents\security_style.h" - > - </File> - <File - RelativePath=".\tab_contents\site_instance.cc" - > - </File> - <File - RelativePath=".\tab_contents\site_instance.h" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents.cc" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents.h" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents_delegate.h" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents_view.cc" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents_view.h" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents_view_win.cc" - > - </File> - <File - RelativePath=".\tab_contents\tab_contents_view_win.h" - > - </File> - <File - RelativePath=".\tab_contents\tab_util.cc" - > - </File> - <File - RelativePath=".\tab_contents\tab_util.h" - > - </File> - <File - RelativePath=".\tab_contents\web_drag_source.cc" - > - </File> - <File - RelativePath=".\tab_contents\web_drag_source.h" - > - </File> - <File - RelativePath=".\tab_contents\web_drop_target.cc" - > - </File> - <File - RelativePath=".\tab_contents\web_drop_target.h" - > - </File> - </Filter> - <Filter - Name="Search Engines" - > - <File - RelativePath=".\search_engines\template_url.cc" - > - </File> - <File - RelativePath=".\search_engines\template_url.h" - > - </File> - <File - RelativePath=".\search_engines\template_url_fetcher.cc" - > - </File> - <File - RelativePath=".\search_engines\template_url_fetcher.h" - > - </File> - <File - RelativePath=".\search_engines\template_url_model.cc" - > - </File> - <File - RelativePath=".\search_engines\template_url_model.h" - > - </File> - <File - RelativePath=".\search_engines\template_url_parser.cc" - > - </File> - <File - RelativePath=".\search_engines\template_url_parser.h" - > - </File> - <File - RelativePath=".\search_engines\template_url_prepopulate_data.cc" - > - </File> - <File - RelativePath=".\search_engines\template_url_prepopulate_data.h" - > - </File> - </Filter> - <Filter - Name="Metrics" - > - <File - RelativePath=".\metrics\metrics_log.cc" - > - </File> - <File - RelativePath=".\metrics\metrics_log.h" - > - </File> - <File - RelativePath=".\metrics\metrics_response.cc" - > - </File> - <File - RelativePath=".\metrics\metrics_response.h" - > - </File> - <File - RelativePath=".\metrics\metrics_service.cc" - > - </File> - <File - RelativePath=".\metrics\metrics_service.h" - > - </File> - <File - RelativePath=".\metrics\user_metrics.cc" - > - </File> - <File - RelativePath=".\metrics\user_metrics.h" - > - </File> - </Filter> - <Filter - Name="SSL" - > - <File - RelativePath=".\ssl\ssl_blocking_page.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_blocking_page.h" - > - </File> - <File - RelativePath=".\ssl\ssl_cert_error_handler.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_cert_error_handler.h" - > - </File> - <File - RelativePath=".\ssl\ssl_error_handler.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_error_handler.h" - > - </File> - <File - RelativePath=".\ssl\ssl_error_info.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_error_info.h" - > - </File> - <File - RelativePath=".\ssl\ssl_host_state.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_host_state.h" - > - </File> - <File - RelativePath=".\ssl\ssl_manager.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_manager.h" - > - </File> - <File - RelativePath=".\ssl\ssl_mixed_content_handler.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_mixed_content_handler.h" - > - </File> - <File - RelativePath=".\ssl\ssl_policy.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_policy.h" - > - </File> - <File - RelativePath=".\ssl\ssl_policy_backend.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_policy_backend.h" - > - </File> - <File - RelativePath=".\ssl\ssl_request_info.h" - > - </File> - </Filter> - <Filter - Name="Worker Host" - > - <File - RelativePath=".\worker_host\worker_process_host.cc" - > - </File> - <File - RelativePath=".\worker_host\worker_process_host.h" - > - </File> - <File - RelativePath=".\worker_host\worker_service.cc" - > - </File> - <File - RelativePath=".\worker_host\worker_service.h" - > - </File> - </Filter> - <File - RelativePath=".\blocked_popup_container.cc" - > - </File> - <File - RelativePath=".\blocked_popup_container.h" - > - </File> - <File - RelativePath=".\browser_trial.cc" - > - </File> - <File - RelativePath=".\browser_trial.h" - > - </File> - <File - RelativePath=".\cert_store.cc" - > - </File> - <File - RelativePath=".\cert_store.h" - > - </File> - <File - RelativePath=".\chrome_plugin_browsing_context.cc" - > - </File> - <File - RelativePath=".\chrome_plugin_browsing_context.h" - > - </File> - <File - RelativePath=".\chrome_plugin_host.cc" - > - </File> - <File - RelativePath=".\encoding_menu_controller.cc" - > - </File> - <File - RelativePath=".\encoding_menu_controller.h" - > - </File> - <File - RelativePath=".\external_protocol_handler.cc" - > - </File> - <File - RelativePath=".\external_protocol_handler.h" - > - </File> - <File - RelativePath=".\gears_integration.cc" - > - </File> - <File - RelativePath=".\gears_integration.h" - > - </File> - <File - RelativePath=".\google_update.cc" - > - </File> - <File - RelativePath=".\google_update.h" - > - </File> - <File - RelativePath=".\hung_renderer_dialog.h" - > - </File> - <File - RelativePath=".\modal_html_dialog_delegate.cc" - > - </File> - <File - RelativePath=".\modal_html_dialog_delegate.h" - > - </File> - <File - RelativePath=".\page_state.cc" - > - </File> - <File - RelativePath=".\page_state.h" - > - </File> - <File - RelativePath=".\plugin_installer.cc" - > - </File> - <File - RelativePath=".\plugin_installer.h" - > - </File> - <File - RelativePath="$(OutDir)\obj\global_intermediate\chrome\grit\theme_resources_map.cc" - > - </File> - <File - RelativePath=".\theme_resources_util.cc" - > - </File> - <File - RelativePath=".\theme_resources_util.h" - > - </File> - <File - RelativePath=".\toolbar_model.cc" - > - </File> - <File - RelativePath=".\toolbar_model.h" - > - </File> - <File - RelativePath=".\utility_process_host.cc" - > - </File> - <File - RelativePath=".\utility_process_host.h" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="browser"
+ ProjectGUID="{5BF908A7-68FB-4A4B-99E3-8C749F1FE4EA}"
+ RootNamespace="Browser"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ <ToolFile
+ RelativePath="..\tools\build\win\resource_text_file_copy.rules"
+ />
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\browser.vsprops;$(SolutionDir)..\build\debug.vsprops;..\tools\build\win\precompiled_wtl.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="Resource text file copy"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(IntDir)\..\global_intermediate\app"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\browser.vsprops;$(SolutionDir)..\build\release.vsprops;$(SolutionDir)\tools\build\win\js_engine.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="Resource text file copy"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(IntDir)\..\global_intermediate\app"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Autocomplete"
+ >
+ <File
+ RelativePath=".\autocomplete\autocomplete.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_accessibility.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_accessibility.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_edit.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_edit.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_edit_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_edit_view_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_edit_view_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_popup_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_popup_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_popup_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_popup_view_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\autocomplete_popup_view_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\history_contents_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\history_contents_provider.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\history_url_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\history_url_provider.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\keyword_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\keyword_provider.h"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\search_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autocomplete\search_provider.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Base"
+ >
+ <File
+ RelativePath=".\alternate_nav_url_fetcher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\alternate_nav_url_fetcher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_about_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_about_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_init.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_init.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_main.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_main_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_prefs.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_prefs.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_process.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_process.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_process_impl.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_process_impl.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_shutdown.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_shutdown.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_theme_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_theme_provider.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_url_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_url_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browsing_data_remover.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browsing_data_remover.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browsing_instance.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browsing_instance.h"
+ >
+ </File>
+ <File
+ RelativePath=".\cancelable_request.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\cancelable_request.h"
+ >
+ </File>
+ <File
+ RelativePath=".\character_encoding.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\character_encoding.h"
+ >
+ </File>
+ <File
+ RelativePath=".\child_process_security_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\child_process_security_policy.h"
+ >
+ </File>
+ <File
+ RelativePath=".\chrome_thread.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\chrome_thread.h"
+ >
+ </File>
+ <File
+ RelativePath=".\cross_site_request_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\cross_site_request_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\fav_icon_helper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\fav_icon_helper.h"
+ >
+ </File>
+ <File
+ RelativePath=".\first_run.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\first_run.h"
+ >
+ </File>
+ <File
+ RelativePath=".\first_run_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google_url_tracker.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google_url_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\google_util.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google_util.h"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_loader.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_loader.h"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_loader_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\icon_manager_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ime_input.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ime_input.h"
+ >
+ </File>
+ <File
+ RelativePath=".\input_window_dialog.h"
+ >
+ </File>
+ <File
+ RelativePath=".\input_window_dialog_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\jankometer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\jankometer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\memory_details.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\memory_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\meta_table_helper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\meta_table_helper.h"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_process_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_service.h"
+ >
+ </File>
+ <File
+ RelativePath="..\tools\build\win\precompiled_wtl.cc"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\tools\build\win\precompiled_wtl.h"
+ >
+ </File>
+ <File
+ RelativePath=".\process_singleton.h"
+ >
+ </File>
+ <File
+ RelativePath=".\process_singleton_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\profile.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\profile.h"
+ >
+ </File>
+ <File
+ RelativePath=".\profile_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\profile_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\session_startup_pref.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\session_startup_pref.h"
+ >
+ </File>
+ <File
+ RelativePath=".\shell_dialogs.h"
+ >
+ </File>
+ <File
+ RelativePath=".\shell_integration.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\shell_integration.h"
+ >
+ </File>
+ <File
+ RelativePath=".\spellcheck_worditerator.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\spellcheck_worditerator.h"
+ >
+ </File>
+ <File
+ RelativePath=".\spellchecker.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\spellchecker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\user_data_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\user_data_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\visitedlink_master.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\visitedlink_master.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Bookmarks"
+ >
+ <File
+ RelativePath=".\bookmarks\bookmark_codec.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_codec.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_context_menu.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_context_menu.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_context_menu_views.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_drag_data.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_drag_data.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_drop_info.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_drop_info.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_editor.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_folder_tree_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_folder_tree_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_html_writer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_html_writer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_index.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_index.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_storage.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_storage.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_table_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_table_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_utils.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_utils.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Browser Window"
+ >
+ <File
+ RelativePath=".\app_modal_dialog.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\app_modal_dialog.h"
+ >
+ </File>
+ <File
+ RelativePath=".\app_modal_dialog_queue.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\app_modal_dialog_queue.h"
+ >
+ </File>
+ <File
+ RelativePath=".\app_modal_dialog_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\back_forward_menu_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\back_forward_menu_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\back_forward_menu_model_views.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\back_forward_menu_model_views.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_list.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_list.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_window.h"
+ >
+ </File>
+ <File
+ RelativePath=".\command_updater.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\command_updater.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dock_info.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dock_info.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dock_info_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\find_bar.h"
+ >
+ </File>
+ <File
+ RelativePath=".\find_bar_controller.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\find_bar_controller.h"
+ >
+ </File>
+ <File
+ RelativePath=".\find_notification_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\jsmessage_box_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\jsmessage_box_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\load_from_memory_cache_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\load_notification_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\location_bar.h"
+ >
+ </File>
+ <File
+ RelativePath=".\login_prompt.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\login_prompt.h"
+ >
+ </File>
+ <File
+ RelativePath=".\options_page_base.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\options_page_base.h"
+ >
+ </File>
+ <File
+ RelativePath=".\options_window.h"
+ >
+ </File>
+ <File
+ RelativePath=".\status_bubble.h"
+ >
+ </File>
+ <File
+ RelativePath=".\task_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\task_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\task_manager_resource_providers.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\task_manager_resource_providers.h"
+ >
+ </File>
+ <File
+ RelativePath=".\task_manager_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\window_sizer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\window_sizer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\window_sizer_win.cc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Automation"
+ >
+ <File
+ RelativePath=".\automation\automation_autocomplete_edit_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_browser_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_constrained_window_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_extension_function.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_extension_function.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_provider.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_provider.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_provider_list.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_provider_list.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_provider_list_generic.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_resource_tracker.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_resource_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_tab_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\automation_window_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\extension_automation_constants.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\extension_automation_constants.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\extension_port_container.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\extension_port_container.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\ui_controls.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\ui_controls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_failed_dns_job.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_failed_dns_job.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_mock_http_job.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_mock_http_job.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_mock_net_error_job.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_mock_net_error_job.h"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_slow_download_job.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\automation\url_request_slow_download_job.h"
+ >
+ </File>
+ <File
+ RelativePath=".\view_ids.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="History"
+ >
+ <File
+ RelativePath=".\history\archived_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\archived_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\download_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\download_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\download_types.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\expire_history_backend.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\expire_history_backend.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_backend.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_backend.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_indexer.idl"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_marshaling.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_notifications.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_publisher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_publisher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_publisher_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_types.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\history_types.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\in_memory_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\in_memory_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\in_memory_history_backend.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\in_memory_history_backend.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\page_usage_data.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\page_usage_data.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\query_parser.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\query_parser.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\snippet.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\snippet.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\starred_url_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\starred_url_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\text_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\text_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\text_database_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\text_database_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\thumbnail_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\thumbnail_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\url_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\url_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visit_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visit_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visit_tracker.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visit_tracker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visitsegment_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\history\visitsegment_database.h"
+ >
+ </File>
+ <Filter
+ Name="HangMonitor"
+ >
+ <File
+ RelativePath=".\hang_monitor\hung_plugin_action.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\hang_monitor\hung_plugin_action.h"
+ >
+ </File>
+ <File
+ RelativePath=".\hang_monitor\hung_window_detector.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\hang_monitor\hung_window_detector.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Sessions and Tab Restore"
+ >
+ <File
+ RelativePath=".\sessions\base_session_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\base_session_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_backend.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_backend.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_command.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_command.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_id.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_id.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_restore.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_restore.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_types.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\session_types.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\tab_restore_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sessions\tab_restore_service.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="WebData"
+ >
+ <File
+ RelativePath=".\webdata\web_data_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\webdata\web_data_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\webdata\web_data_service_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\webdata\web_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\webdata\web_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\webdata\web_database_win.cc"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Importer"
+ >
+ <File
+ RelativePath=".\importer\firefox2_importer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox2_importer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox3_importer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox3_importer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox_importer_utils.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox_importer_utils.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox_profile_lock.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox_profile_lock.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\firefox_profile_lock_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\ie_importer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\ie_importer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\importer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\importer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\mork_reader.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\mork_reader.h"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\toolbar_importer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\importer\toolbar_importer.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Tabs"
+ >
+ <File
+ RelativePath=".\tabs\tab_strip_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tabs\tab_strip_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tabs\tab_strip_model_order_controller.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tabs\tab_strip_model_order_controller.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Printing"
+ >
+ <File
+ RelativePath=".\printing\page_number.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_number.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_overlays.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_overlays.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_range.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_range.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_setup.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\page_setup.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job_worker.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job_worker.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_job_worker_owner.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_settings.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_settings.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_view_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\print_view_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printed_document.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printed_document.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printed_page.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printed_page.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printed_pages_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printer_query.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\printer_query.h"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\win_printing_context.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\printing\win_printing_context.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Sandbox"
+ >
+ <File
+ RelativePath=".\sandbox_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\sandbox_policy.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Password Manager"
+ >
+ <File
+ RelativePath=".\password_manager\encryptor.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\encryptor_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\ie7_password.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\ie7_password.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_form_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_form_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store_default.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store_default.h"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_store_win.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="External Tab"
+ >
+ <File
+ RelativePath=".\external_tab_container.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\external_tab_container.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="DOM UI"
+ >
+ <File
+ RelativePath=".\dom_ui\chrome_url_data_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\chrome_url_data_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\debugger_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\debugger_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\devtools_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\devtools_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_factory.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_factory.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_favicon_source.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_favicon_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_theme_source.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_theme_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_thumbnail_source.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\dom_ui_thumbnail_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\downloads_dom_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\downloads_dom_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\downloads_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\downloads_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\fileicon_source.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\fileicon_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\history_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\history_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\html_dialog_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\html_dialog_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\new_tab_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\dom_ui\new_tab_ui.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Net"
+ >
+ <File
+ RelativePath=".\net\chrome_url_request_context.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\chrome_url_request_context.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_global.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_global.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_host_info.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_host_info.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_master.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\dns_master.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\referrer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\referrer.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\resolve_proxy_msg_helper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\resolve_proxy_msg_helper.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\sdch_dictionary_fetcher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\sdch_dictionary_fetcher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fetcher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fetcher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fetcher_protect.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fetcher_protect.h"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fixer_upper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\net\url_fixer_upper.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="RLZ"
+ >
+ <File
+ RelativePath=".\rlz\rlz.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\rlz\rlz.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Safe Browsing"
+ >
+ <File
+ RelativePath=".\safe_browsing\bloom_filter.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\bloom_filter.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\chunk_range.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\chunk_range.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\protocol_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\protocol_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\protocol_parser.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\protocol_parser.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_blocking_page.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_blocking_page.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_database.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_database.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_database_bloom.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_database_bloom.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_util.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\safe_browsing\safe_browsing_util.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Accessibility"
+ >
+ <File
+ RelativePath=".\browser_accessibility.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_accessibility.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_accessibility_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_accessibility_manager.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Download"
+ >
+ <File
+ RelativePath=".\download\download_exe.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_file.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_file.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_item_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_item_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_request_dialog_delegate.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_request_dialog_delegate_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_request_dialog_delegate_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_request_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_request_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_shelf.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_shelf.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_started_animation.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_util.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\download_util.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Save Page"
+ >
+ <File
+ RelativePath=".\download\save_file.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_file.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_file_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_file_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_item.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_item.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_package.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_package.h"
+ >
+ </File>
+ <File
+ RelativePath=".\download\save_types.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Autofill"
+ >
+ <File
+ RelativePath=".\autofill_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\autofill_manager.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Extensions"
+ >
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module_constants.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module_constants.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_browser_event_router.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_browser_event_router.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_creator.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_creator.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_event_names.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_event_names.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_function.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_function.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_function_dispatcher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_function_dispatcher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_message_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_message_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_page_actions_module.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_page_actions_module.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_page_actions_module_constants.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_page_actions_module_constants.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_process_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_process_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_protocols.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_protocols.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_shelf.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_shelf.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_tabs_module.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_tabs_module.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_tabs_module_constants.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_tabs_module_constants.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_view.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extensions_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extensions_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extensions_ui.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extensions_ui.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\user_script_master.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\user_script_master.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Renderer Host"
+ >
+ <File
+ RelativePath=".\renderer_host\async_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\async_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\audio_renderer_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\audio_renderer_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\backing_store.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\backing_store_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\backing_store_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\backing_store_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\browser_render_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\browser_render_process_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\buffered_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\buffered_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\cross_site_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\cross_site_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\download_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\download_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\download_throttling_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\download_throttling_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_process_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_view_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_view_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_view_host_delegate.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_view_host_factory.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_view_host_factory.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_helper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_helper.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_host_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_host_view_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\render_widget_host_view_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_dispatcher_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_dispatcher_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_message_filter.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_message_filter.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_message_filter_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\resource_request_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\safe_browsing_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\safe_browsing_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\save_file_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\save_file_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\sync_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\sync_resource_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\web_cache_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\web_cache_manager.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Tab Contents"
+ >
+ <File
+ RelativePath=".\tab_contents\constrained_window.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\infobar_delegate.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\infobar_delegate.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\interstitial_page.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\interstitial_page.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\navigation_controller.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\navigation_controller.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\navigation_entry.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\navigation_entry.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\page_navigator.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\provisional_load_details.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\provisional_load_details.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_context_menu.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_context_menu.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_context_menu_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_context_menu_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_host_delegate_helper.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_host_delegate_helper.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_host_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\render_view_host_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\repost_form_warning.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\security_style.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\site_instance.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\site_instance.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents_delegate.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents_view.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents_view.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents_view_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_contents_view_win.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_util.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\tab_util.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\web_drag_source.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\web_drag_source.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\web_drop_target.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\tab_contents\web_drop_target.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Search Engines"
+ >
+ <File
+ RelativePath=".\search_engines\template_url.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url.h"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_fetcher.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_fetcher.h"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_parser.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_parser.h"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_prepopulate_data.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\search_engines\template_url_prepopulate_data.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Metrics"
+ >
+ <File
+ RelativePath=".\metrics\metrics_log.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\metrics_log.h"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\metrics_response.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\metrics_response.h"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\metrics_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\metrics_service.h"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\user_metrics.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\metrics\user_metrics.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="SSL"
+ >
+ <File
+ RelativePath=".\ssl\ssl_blocking_page.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_blocking_page.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_cert_error_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_cert_error_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_info.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_info.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_host_state.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_host_state.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_mixed_content_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_mixed_content_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy_backend.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy_backend.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_request_info.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Worker Host"
+ >
+ <File
+ RelativePath=".\worker_host\worker_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_process_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_service.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\blocked_popup_container.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\blocked_popup_container.h"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_trial.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\browser_trial.h"
+ >
+ </File>
+ <File
+ RelativePath=".\cert_store.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\cert_store.h"
+ >
+ </File>
+ <File
+ RelativePath=".\chrome_plugin_browsing_context.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\chrome_plugin_browsing_context.h"
+ >
+ </File>
+ <File
+ RelativePath=".\chrome_plugin_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\encoding_menu_controller.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\encoding_menu_controller.h"
+ >
+ </File>
+ <File
+ RelativePath=".\external_protocol_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\external_protocol_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\gears_integration.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\gears_integration.h"
+ >
+ </File>
+ <File
+ RelativePath=".\google_update.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google_update.h"
+ >
+ </File>
+ <File
+ RelativePath=".\hung_renderer_dialog.h"
+ >
+ </File>
+ <File
+ RelativePath=".\modal_html_dialog_delegate.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\modal_html_dialog_delegate.h"
+ >
+ </File>
+ <File
+ RelativePath=".\page_state.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\page_state.h"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_installer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\plugin_installer.h"
+ >
+ </File>
+ <File
+ RelativePath="$(OutDir)\obj\global_intermediate\chrome\grit\theme_resources_map.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\theme_resources_util.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\theme_resources_util.h"
+ >
+ </File>
+ <File
+ RelativePath=".\toolbar_model.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\toolbar_model.h"
+ >
+ </File>
+ <File
+ RelativePath=".\utility_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\utility_process_host.h"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/chrome/browser/browser_init.cc b/chrome/browser/browser_init.cc index 12adeb0..a65c79e 100644 --- a/chrome/browser/browser_init.cc +++ b/chrome/browser/browser_init.cc @@ -4,6 +4,9 @@ #include "chrome/browser/browser_init.h" +#if defined(OS_WIN) +#include "app/win_util.h" +#endif #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/basictypes.h" @@ -11,6 +14,7 @@ #include "base/compiler_specific.h" #include "base/event_recorder.h" #include "base/file_path.h" +#include "base/file_util.h" #include "base/histogram.h" #include "base/path_service.h" #include "base/string_util.h" @@ -21,6 +25,9 @@ #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_window.h" +#if defined(OS_WIN) // TODO(port) +#include "chrome/browser/extensions/extension_creator.h" +#endif #include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/extensions/user_script_master.h" #include "chrome/browser/first_run.h" @@ -689,6 +696,43 @@ bool BrowserInit::ProcessCmdLineImpl(const CommandLine& command_line, profile->GetExtensionsService()->LoadExtension(path); profile->GetUserScriptMaster()->AddWatchedPath(path); } + + if (command_line.HasSwitch(switches::kPackExtension)) { + // Input Paths. + FilePath src_dir = FilePath::FromWStringHack(command_line.GetSwitchValue( + switches::kPackExtension)); + FilePath private_key_path; + if (command_line.HasSwitch(switches::kPackExtensionKey)) { + private_key_path = FilePath::FromWStringHack( + command_line.GetSwitchValue(switches::kPackExtensionKey)); + } + + // Output Paths. + FilePath output(src_dir.DirName().Append(src_dir.BaseName().value())); + FilePath crx_path(output); + crx_path = crx_path.ReplaceExtension(chrome::kExtensionFileExtension); + FilePath output_private_key_path; + if (private_key_path.empty()) { + output_private_key_path = FilePath(output); + output_private_key_path = + output_private_key_path.ReplaceExtension(FILE_PATH_LITERAL("pem")); + } + + // TODO(port): Creation & running is removed from mac & linux because + // ExtensionCreator depends on base/crypto/rsa_private_key and + // base/crypto/signature_creator, both of which only have windows + // implementations. +#if defined(OS_WIN) + scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); + if (!creator->Run(src_dir, crx_path, private_key_path, + output_private_key_path)) { + win_util::MessageBox(NULL, UTF8ToWide(creator->error_message()), + L"Extension Packaging Error", MB_OK | MB_SETFOREGROUND); + return false; + } +#endif // defined(OS_WIN) + return false; + } } // Allow the command line to override the persisted setting of home page. diff --git a/chrome/browser/extensions/extension_creator.cc b/chrome/browser/extensions/extension_creator.cc new file mode 100755 index 0000000..d5400e0 --- /dev/null +++ b/chrome/browser/extensions/extension_creator.cc @@ -0,0 +1,275 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/extensions/extension_creator.h" + +#include <vector> +#include <string> + +#include "base/crypto/rsa_private_key.h" +#include "base/crypto/signature_creator.h" +#include "base/file_util.h" +#include "base/scoped_handle.h" +#include "base/string_util.h" +#include "chrome/browser/extensions/extensions_service.h" +#include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/extension_error_reporter.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/common/extensions/extension.h" +#include "chrome/common/json_value_serializer.h" +#include "chrome/common/zip.h" +#include "net/base/base64.h" + +namespace { + const int kRSAKeySize = 1024; +}; + +DictionaryValue* ExtensionCreator::InitializeInput( + const FilePath& extension_dir, + const FilePath& private_key_path, + const FilePath& private_key_output_path) { + // Validate input |extension_dir|. + if (extension_dir.value().empty() || + !file_util::DirectoryExists(extension_dir)) { + error_message_ = "Input directory must exist."; + return false; + } + + // Validate input |private_key| (if provided). + if (!private_key_path.value().empty() && + !file_util::PathExists(private_key_path)) { + error_message_ = "Input value for private key must be a valid path."; + return false; + } + + // If an |output_private_key| path is given, make sure it doesn't over-write + // an existing private key. + if (private_key_path.value().empty() && + !private_key_output_path.value().empty() && + file_util::PathExists(private_key_output_path)) { + error_message_ = "Private key exists next to input directory. Try using " + "--pack-extension-key"; + return false; + } + + // Read the manifest. + FilePath manifest_path = extension_dir.AppendASCII( + Extension::kManifestFilename); + if (!file_util::PathExists(manifest_path)) { + error_message_ = "Extension must contain '"; + error_message_.append(Extension::kManifestFilename); + error_message_.append("'."); + return false; + } + + JSONFileValueSerializer serializer(manifest_path); + std::string serialization_error; + Value* input_manifest = (serializer.Deserialize(&serialization_error)); + if (!input_manifest) { + error_message_ = "Invalid manifest.json: "; + error_message_.append(serialization_error); + return false; + } + + if (!input_manifest->IsType(Value::TYPE_DICTIONARY)) { + error_message_ = "Invalid manifest.json"; + return false; + } + + return static_cast<DictionaryValue*>(input_manifest); +} + +base::RSAPrivateKey* ExtensionCreator::ReadInputKey(const FilePath& + private_key_path) { + if (!file_util::PathExists(private_key_path)) { + error_message_ = "Input value for private key must exist."; + return false; + } + + std::string private_key_contents; + if (!file_util::ReadFileToString(private_key_path, + &private_key_contents)) { + error_message_ = "Failed to read private key."; + return false; + } + + std::string private_key_bytes; + if (!Extension::ParsePEMKeyBytes(private_key_contents, + &private_key_bytes)) { + error_message_ = "Invalid private key."; + return false; + } + + return base::RSAPrivateKey::CreateFromPrivateKeyInfo( + std::vector<uint8>(private_key_bytes.begin(), private_key_bytes.end())); +} + +base::RSAPrivateKey* ExtensionCreator::GenerateKey(const FilePath& + output_private_key_path) { + scoped_ptr<base::RSAPrivateKey> key_pair( + base::RSAPrivateKey::Create(kRSAKeySize)); + if (!key_pair.get()) { + error_message_ = "Yikes! Failed to generate random RSA private key."; + return NULL; + } + + std::vector<uint8> private_key_vector; + if (!key_pair->ExportPrivateKey(&private_key_vector)) { + error_message_ = "Failed to export private key."; + return NULL; + } + std::string private_key_bytes(private_key_vector.begin(), + private_key_vector.end()); + + std::string private_key; + if (!Extension::ProducePEM(private_key_bytes, &private_key)) { + error_message_ = "Failed to output private key."; + return NULL; + } + std::string pem_output; + if (!Extension::FormatPEMForFileOutput(private_key, &pem_output, + false)) { + error_message_ = "Failed to output private key."; + return NULL; + } + + if (!output_private_key_path.empty()) { + if (-1 == file_util::WriteFile(output_private_key_path, + pem_output.c_str(), pem_output.size())) { + error_message_ = "Failed to write private key."; + return NULL; + } + } + + return key_pair.release(); +} + +bool ExtensionCreator::CreateAndSignZip(const FilePath& extension_dir, + base::RSAPrivateKey *key_pair, + FilePath* zip_path, + std::string* signature) { + file_util::CreateNewTempDirectory(FILE_PATH_LITERAL("chrome_"), zip_path); + *zip_path = zip_path->Append(FILE_PATH_LITERAL("extension.zip")); + + if (!Zip(extension_dir, *zip_path)) { + error_message_ = "Failed to create temporary zip file during packaging."; + return false; + } + + scoped_ptr<base::SignatureCreator> signature_creator( + base::SignatureCreator::Create(key_pair)); + ScopedStdioHandle zip_handle(file_util::OpenFile(*zip_path, "rb")); + uint8 buffer[1 << 16]; + int bytes_read = -1; + while ((bytes_read = fread(buffer, 1, sizeof(buffer), + zip_handle.get())) > 0) { + if (!signature_creator->Update(buffer, bytes_read)) { + error_message_ = "Error while signing extension."; + return false; + } + } + zip_handle.Close(); + + std::vector<uint8> signature_vector; + signature_creator->Final(&signature_vector); + std::string signature_bytes(signature_vector.begin(), signature_vector.end()); + bool result = net::Base64Encode(signature_bytes, signature); + DCHECK(result); + return true; +} + +bool ExtensionCreator::PrepareManifestForExport(base::RSAPrivateKey *key_pair, + const std::string& signature, + DictionaryValue* manifest) { + std::vector<uint8> public_key_vector; + if (!key_pair->ExportPublicKey(&public_key_vector)) { + error_message_ = "Failed to export public key."; + return false; + } + + std::string public_key_bytes(public_key_vector.begin(), + public_key_vector.end()); + std::string public_key; + if (!net::Base64Encode(public_key_bytes, &public_key)) { + error_message_ = "Error while signing extension."; + return false; + } + + manifest->SetString(Extension::kSignatureKey, signature); + manifest->SetString(Extension::kPublicKeyKey, public_key); + + return true; +} + +bool ExtensionCreator::WriteCRX(const FilePath& crx_path, + DictionaryValue* manifest, + const FilePath& zip_path) { + std::string manifest_string; + JSONStringValueSerializer serializer(&manifest_string); + if (!serializer.Serialize(*manifest)) { + error_message_ = "Failed to write crx."; + return false; + } + + if (file_util::PathExists(crx_path)) + file_util::Delete(crx_path, false); + ScopedStdioHandle crx_handle(file_util::OpenFile(crx_path, "wb")); + + ExtensionsService::ExtensionHeader header; + memcpy(&header.magic, ExtensionsService::kExtensionFileMagic, + sizeof(ExtensionsService::kExtensionFileMagic)); + header.version = 1; // kExpectedVersion + header.header_size = sizeof(ExtensionsService::ExtensionHeader); + header.manifest_size = manifest_string.size(); + + fwrite(&header, sizeof(ExtensionsService::ExtensionHeader), 1, + crx_handle.get()); + fwrite(manifest_string.c_str(), sizeof(char), manifest_string.size(), + crx_handle.get()); + + uint8 buffer[1 << 16]; + int bytes_read = -1; + ScopedStdioHandle zip_handle(file_util::OpenFile(zip_path, "rb")); + while ((bytes_read = fread(buffer, 1, sizeof(buffer), + zip_handle.get())) > 0) { + fwrite(buffer, sizeof(char), bytes_read, crx_handle.get()); + } + + return true; +} + +bool ExtensionCreator::Run(const FilePath& extension_dir, + const FilePath& crx_path, + const FilePath& private_key_path, + const FilePath& output_private_key_path) { + // Check input diretory and read manifest. + scoped_ptr<DictionaryValue> manifest(InitializeInput(extension_dir, + private_key_path, output_private_key_path)); + if (!manifest.get()) + return false; + + // Initialize Key Pair + scoped_ptr<base::RSAPrivateKey> key_pair; + if (!private_key_path.value().empty()) + key_pair.reset(ReadInputKey(private_key_path)); + else + key_pair.reset(GenerateKey(output_private_key_path)); + if (!key_pair.get()) + return false; + + // Zip up the extension. + FilePath zip_path; + std::string signature; + if (!CreateAndSignZip(extension_dir, key_pair.get(), &zip_path, &signature)) + return false; + + if (!PrepareManifestForExport(key_pair.get(), signature, manifest.get())) + return false; + + // Write the final crx out to disk. + if (!WriteCRX(crx_path, manifest.get(), zip_path)) + return false; + + return true; +} diff --git a/chrome/browser/extensions/extension_creator.h b/chrome/browser/extensions/extension_creator.h new file mode 100755 index 0000000..6cdb6bc --- /dev/null +++ b/chrome/browser/extensions/extension_creator.h @@ -0,0 +1,69 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_CREATOR_H_ +#define CHROME_COMMON_EXTENSIONS_EXTENSION_CREATOR_H_ + +#include "base/command_line.h" +#include "base/crypto/rsa_private_key.h" +#include "base/file_path.h" +#include "base/values.h" + +// This class create an installable extension (.crx file) given an input +// directory that contains a valid manifest.json and the extension's resources +// contained within that directory. The output .crx file is always signed with a +// private key that is either provided in |private_key_path| or is internal +// generated randomly (and optionally written to |output_private_key_path|. +class ExtensionCreator { + public: + ExtensionCreator() {} + + bool Run(const FilePath& extension_dir, + const FilePath& crx_path, + const FilePath& private_key_path, + const FilePath& private_key_output_path); + + // Returns the error message that will be present if Run(...) returned false. + std::string error_message() { return error_message_; } + + private: + // Verifies input directory's existance, and reads manifest. |extension_dir| + // Is the source directory that should contain all the extension resources. + // |private_key_path| is the optional path to an existing private key to sign + // the extension. If not provided, a random key will be created (in which case + // it is written to |private_key_output_path| -- if provided). + DictionaryValue* InitializeInput(const FilePath& extension_dir, + const FilePath& private_key_path, + const FilePath& private_key_output_path); + + // Reads private key from |private_key_path|. + base::RSAPrivateKey* ReadInputKey(const FilePath& private_key_path); + + // Generates a key pair and writes the private key to |private_key_path| + // if provided. + base::RSAPrivateKey* GenerateKey(const FilePath& private_key_path); + + // Creates temporary zip file and generates a signature for it. + bool CreateAndSignZip(const FilePath& extension_dir, + base::RSAPrivateKey* key_pair, + FilePath* zip_path, + std::string* signature); + + // Inserts generated keys (signature, public_key) into manifest. + bool PrepareManifestForExport(base::RSAPrivateKey* key_pair, + const std::string& signature, + DictionaryValue* manifest); + + // Export installable .crx to |crx_path|. + bool WriteCRX(const FilePath& crx_path, + DictionaryValue *manifest, + const FilePath& zip_path); + + // Holds a message for any error that is raised during Run(...). + std::string error_message_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionCreator); +}; + +#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_CREATOR_H_ diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc index 388bd71..9fce244 100644 --- a/chrome/browser/extensions/extensions_service.cc +++ b/chrome/browser/extensions/extensions_service.cc @@ -50,19 +50,9 @@ const char* ExtensionsService::kInstallDirectoryName = "Extensions"; const char* ExtensionsService::kCurrentVersionFileName = "Current Version"; const char* ExtensionsServiceBackend::kTempExtensionName = "TEMP_INSTALL"; -namespace { -// Chromium Extension magic number -const char kExtensionFileMagic[] = "Cr24"; - -struct ExtensionHeader { - char magic[sizeof(kExtensionFileMagic) - 1]; - uint32 version; - size_t header_size; - size_t manifest_size; -}; +const char* ExtensionsService::kExtensionFileMagic = "Cr24"; -const size_t kZipHashBytes = 32; // SHA-256 -const size_t kZipHashHexBytes = kZipHashBytes * 2; // Hex string is 2x size. +namespace { // A preference that keeps track of extension settings. This is a dictionary // object read from the Preferences file, keyed off of extension id's. diff --git a/chrome/browser/extensions/extensions_service.h b/chrome/browser/extensions/extensions_service.h index 2d149f1..47578bc 100644 --- a/chrome/browser/extensions/extensions_service.h +++ b/chrome/browser/extensions/extensions_service.h @@ -35,6 +35,16 @@ typedef std::vector<Extension*> ExtensionList; class ExtensionsService : public base::RefCountedThreadSafe<ExtensionsService> { public: + static const int kExtensionFileMagicSize = 4; + static const char* kExtensionFileMagic; + + struct ExtensionHeader { + char magic[kExtensionFileMagicSize]; + uint32 version; + size_t header_size; + size_t manifest_size; + }; + ExtensionsService(Profile* profile, MessageLoop* frontend_loop, MessageLoop* backend_loop, diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc index 630e71f..720b3a6 100644 --- a/chrome/browser/extensions/extensions_service_unittest.cc +++ b/chrome/browser/extensions/extensions_service_unittest.cc @@ -12,6 +12,7 @@ #include "base/path_service.h" #include "base/string_util.h" #include "base/time.h" +#include "chrome/browser/extensions/extension_creator.h" #include "chrome/browser/extensions/extensions_service.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/url_pattern.h" @@ -420,6 +421,70 @@ TEST_F(ExtensionsServiceTest, InstallExtension) { // TODO(erikkay): add tests for upgrade cases. } +#if defined(OS_WIN) // TODO(port) +// Test Packaging and installing an extension. +// TODO(aa): add a test that uses an openssl-generate private key. +// TODO(rafaelw): add more tests for failure cases. +TEST_F(ExtensionsServiceTest, PackExtension) { + SetExtensionsEnabled(true); + + FilePath extensions_path; + ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); + extensions_path = extensions_path.AppendASCII("extensions"); + FilePath input_directory = extensions_path.AppendASCII("good") + .AppendASCII("extension1").AppendASCII("1"); + + FilePath output_directory; + file_util::CreateNewTempDirectory(FILE_PATH_LITERAL("chrome_"), + &output_directory); + FilePath crx_path(output_directory.AppendASCII("ex1.crx")); + FilePath privkey_path(output_directory.AppendASCII("privkey.pem")); + + scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); + ASSERT_TRUE(creator->Run(input_directory, crx_path, FilePath(), + privkey_path)); + + InstallExtension(crx_path, true); + + ASSERT_TRUE(file_util::PathExists(privkey_path)); + + file_util::Delete(crx_path, false); + file_util::Delete(privkey_path, false); +} + +// Test Packaging and installing an extension using an openssl generated key. +// The openssl is generated with the following: +// > openssl genrsa -out privkey.pem 1024
+// > openssl pkcs8 -topk8 -nocrypt -in privkey.pem -out privkey_asn1.pem
+// The privkey.pem is a PrivateKey, and the pcks8 -topk8 creates a +// PrivateKeyInfo ASN.1 structure, we our RSAPrivateKey expects. +TEST_F(ExtensionsServiceTest, PackExtensionOpenSSLKey) { + SetExtensionsEnabled(true); + + FilePath extensions_path; + ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); + extensions_path = extensions_path.AppendASCII("extensions"); + FilePath input_directory = extensions_path.AppendASCII("good") + .AppendASCII("extension1").AppendASCII("1"); + FilePath privkey_path(extensions_path.AppendASCII( + "openssl_privkey_asn1.pem")); + ASSERT_TRUE(file_util::PathExists(privkey_path)); + + FilePath output_directory; + file_util::CreateNewTempDirectory(FILE_PATH_LITERAL("chrome_"), + &output_directory); + FilePath crx_path(output_directory.AppendASCII("ex1.crx")); + + scoped_ptr<ExtensionCreator> creator(new ExtensionCreator()); + ASSERT_TRUE(creator->Run(input_directory, crx_path, privkey_path, + FilePath())); + + InstallExtension(crx_path, true); + + file_util::Delete(crx_path, false); +} +#endif // defined(OS_WIN) + TEST_F(ExtensionsServiceTest, InstallTheme) { FilePath extensions_path; ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 02e1860..e0a5454 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -818,6 +818,8 @@ 'browser/extensions/extension_bookmarks_module.h', 'browser/extensions/extension_bookmarks_module_constants.cc', 'browser/extensions/extension_bookmarks_module_constants.h', + 'browser/extensions/extension_creator.cc', + 'browser/extensions/extension_creator.h', 'browser/extensions/extension_event_names.cc', 'browser/extensions/extension_event_names.h', 'browser/extensions/extension_function.cc', @@ -1881,6 +1883,7 @@ 'browser/browser_accessibility.cc', 'browser/browser_accessibility_manager.cc', 'browser/extensions/extension_shelf.cc', + 'browser/extensions/extension_creator.cc' 'browser/dom_ui/html_dialog_contents.cc', 'browser/encoding_menu_controller_delegate.cc', 'browser/external_tab_container.cc', diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 78ad058..a9335ed 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -393,6 +393,12 @@ const wchar_t kInstallExtension[] = L"install-extension"; // Load an extension from the specified directory. const wchar_t kLoadExtension[] = L"load-extension"; +// Package an extension to a .crx installable file from a given directory. +const wchar_t kPackExtension[] = L"pack-extension"; + +// Optional PEM private key is to use in signing packaged .crx. +const wchar_t kPackExtensionKey[] = L"pack-extension-key"; + // Load an NPAPI plugin from the specified path. const wchar_t kLoadPlugin[] = L"load-plugin"; diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 2432050..50666c8 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -143,6 +143,8 @@ extern const wchar_t kEnableUserScripts[]; extern const wchar_t kEnableExtensions[]; extern const wchar_t kInstallExtension[]; extern const wchar_t kLoadExtension[]; +extern const wchar_t kPackExtension[]; +extern const wchar_t kPackExtensionKey[]; extern const wchar_t kLoadPlugin[]; extern const wchar_t kUserScriptsDir[]; diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc index ffed0d5..bf7d3a5 100644 --- a/chrome/common/extensions/extension.cc +++ b/chrome/common/extensions/extension.cc @@ -14,13 +14,28 @@ #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/user_script.h" #include "chrome/common/url_constants.h" +#include "net/base/base64.h" #if defined(OS_WIN) #include "base/registry.h" #endif +namespace { + const int kPEMOutputColumns = 65; + + // KEY MARKERS + const char kKeyBeginHeaderMarker[] = "-----BEGIN"; + const char kKeyBeginFooterMarker[] = "-----END"; + const char kKeyInfoEndMarker[] = "KEY-----"; + const char kPublic[] = "PUBLIC"; + const char kPrivate[] = "PRIVATE"; + + const int kRSAKeySize = 1024; +}; + const char Extension::kManifestFilename[] = "manifest.json"; +const wchar_t* Extension::kBackgroundKey = L"background_page"; const wchar_t* Extension::kContentScriptsKey = L"content_scripts"; const wchar_t* Extension::kCssKey = L"css"; const wchar_t* Extension::kDescriptionKey = L"description"; @@ -34,8 +49,9 @@ const wchar_t* Extension::kPermissionsKey = L"permissions"; const wchar_t* Extension::kPluginsKey = L"plugins"; const wchar_t* Extension::kPluginsPathKey = L"path"; const wchar_t* Extension::kPluginsPublicKey = L"public"; -const wchar_t* Extension::kBackgroundKey = L"background_page"; +const wchar_t* Extension::kPublicKeyKey = L"key"; const wchar_t* Extension::kRunAtKey = L"run_at"; +const wchar_t* Extension::kSignatureKey = L"signature"; const wchar_t* Extension::kThemeKey = L"theme"; const wchar_t* Extension::kThemeImagesKey = L"images"; const wchar_t* Extension::kThemeColorsKey = L"colors"; @@ -45,7 +61,6 @@ const wchar_t* Extension::kToolstripsKey = L"toolstrips"; const wchar_t* Extension::kTooltipKey = L"tooltip"; const wchar_t* Extension::kTypeKey = L"type"; const wchar_t* Extension::kVersionKey = L"version"; -const wchar_t* Extension::kZipHashKey = L"zip_hash"; const char* Extension::kRunAtDocumentStartValue = "document_start"; const char* Extension::kRunAtDocumentEndValue = "document_end"; @@ -58,9 +73,10 @@ static const wchar_t* kValidThemeKeys[] = { Extension::kIconPathKey, Extension::kIdKey, Extension::kNameKey, + Extension::kPublicKeyKey, + Extension::kSignatureKey, Extension::kThemeKey, - Extension::kVersionKey, - Extension::kZipHashKey + Extension::kVersionKey }; // Extension-related error messages. Some of these are simple patterns, where a @@ -476,6 +492,76 @@ Extension::Extension(const FilePath& path) { #endif } + +// TODO(rafaelw): Move ParsePEMKeyBytes, ProducePEM & FormatPEMForOutput to a +// util class in base: +// http://code.google.com/p/chromium/issues/detail?id=13572 +bool Extension::ParsePEMKeyBytes(const std::string& input, + std::string* output) { + CHECK(output); + if (input.length() == 0) + return false; + + std::string working = input; + if (StartsWithASCII(working, kKeyBeginHeaderMarker, true)) { + working = CollapseWhitespaceASCII(working, true); + size_t header_pos = working.find(kKeyInfoEndMarker, + sizeof(kKeyBeginHeaderMarker) - 1); + if (header_pos == std::string::npos) + return false; + size_t start_pos = header_pos + sizeof(kKeyInfoEndMarker) - 1; + size_t end_pos = working.rfind(kKeyBeginFooterMarker); + if (end_pos == std::string::npos) + return false; + if (start_pos >= end_pos) + return false; + + working = working.substr(start_pos, end_pos - start_pos); + if (working.length() == 0) + return false; + } + + return net::Base64Decode(working, output); +} + +bool Extension::ProducePEM(const std::string& input, + std::string* output) { + CHECK(output); + if (input.length() == 0) + return false; + + return net::Base64Encode(input, output); +} + +bool Extension::FormatPEMForFileOutput(const std::string input, + std::string* output, + bool is_public) { + CHECK(output); + if (input.length() == 0) + return false; + *output = ""; + output->append(kKeyBeginHeaderMarker); + output->append(" "); + output->append(is_public ? kPublic : kPrivate); + output->append(" "); + output->append(kKeyInfoEndMarker); + output->append("\n"); + for (size_t i = 0; i < input.length(); ) { + int slice = std::min<int>(input.length() - i, kPEMOutputColumns); + output->append(input.substr(i, slice)); + output->append("\n"); + i += slice; + } + output->append(kKeyBeginFooterMarker); + output->append(" "); + output->append(is_public ? kPublic : kPrivate); + output->append(" "); + output->append(kKeyInfoEndMarker); + output->append("\n"); + + return true; +} + bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, std::string* error) { // Initialize id. @@ -537,16 +623,6 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, } } - // Initialize zip hash (only present in zip) - // There's no need to verify it at this point. If it's in a bogus format - // it won't pass the hash verify step. - if (source.HasKey(kZipHashKey)) { - if (!source.GetString(kZipHashKey, &zip_hash_)) { - *error = kInvalidZipHashError; - return false; - } - } - // Initialize themes. is_theme_ = false; if (source.HasKey(kThemeKey)) { diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h index 245d7b6..9a5bfbf 100644 --- a/chrome/common/extensions/extension.h +++ b/chrome/common/extensions/extension.h @@ -48,6 +48,7 @@ class Extension { static const char kManifestFilename[]; // Keys used in JSON representation of extensions. + static const wchar_t* kBackgroundKey; static const wchar_t* kContentScriptsKey; static const wchar_t* kCssKey; static const wchar_t* kDescriptionKey; @@ -61,8 +62,8 @@ class Extension { static const wchar_t* kPluginsKey; static const wchar_t* kPluginsPathKey; static const wchar_t* kPluginsPublicKey; - - static const wchar_t* kBackgroundKey; + static const wchar_t* kPublicKeyKey; + static const wchar_t* kSignatureKey; static const wchar_t* kRunAtKey; static const wchar_t* kThemeKey; static const wchar_t* kThemeImagesKey; @@ -73,7 +74,6 @@ class Extension { static const wchar_t* kTooltipKey; static const wchar_t* kTypeKey; static const wchar_t* kVersionKey; - static const wchar_t* kZipHashKey; // Some values expected in manifests. static const char* kRunAtDocumentStartValue; @@ -164,6 +164,20 @@ class Extension { return GetResourcePath(path(), relative_path); } + // |input| is expected to be the text of an rsa public or private key. It + // tolerates the presence or absence of bracking header/footer like this: + // -----(BEGIN|END) [RSA PUBLIC/PRIVATE] KEY----- + // and may contain newlines. + static bool ParsePEMKeyBytes(const std::string& input, std::string* output); + + // Does a simple base64 encoding of |input| into |output|. + static bool ProducePEM(const std::string& input, std::string* output); + + // Expects base64 encoded |input| and formats into |output| including + // the appropriate header & footer. + static bool FormatPEMForFileOutput(const std::string input, + std::string* output, bool is_public); + // Initialize the extension from a parsed manifest. // If |require_id| is true, will return an error if the "id" key is missing // from the value. diff --git a/chrome/common/extensions/extension_unpacker.cc b/chrome/common/extensions/extension_unpacker.cc index bc7b25a..d07b6b4 100644 --- a/chrome/common/extensions/extension_unpacker.cc +++ b/chrome/common/extensions/extension_unpacker.cc @@ -148,43 +148,6 @@ DictionaryValue* ExtensionUnpacker::ReadPackageHeader() { } DictionaryValue* manifest = static_cast<DictionaryValue*>(val.get()); - std::string zip_hash; - if (!manifest->GetString(Extension::kZipHashKey, &zip_hash)) { - SetError("missing zip_hash key"); - return NULL; - } - if (zip_hash.size() != kZipHashHexBytes) { - SetError("invalid zip_hash key"); - return NULL; - } - - // Read the rest of the zip file and compute a hash to compare against - // what the manifest claims. Compute the hash incrementally since the - // zip file could be large. - const unsigned char* ubuf = reinterpret_cast<const unsigned char*>(buf); - SHA256Context ctx; - SHA256_Begin(&ctx); - while ((len = fread(buf, 1, sizeof(buf), file.get())) > 0) - SHA256_Update(&ctx, ubuf, len); - uint8 hash[32]; - SHA256_End(&ctx, hash, NULL, sizeof(hash)); - - std::vector<uint8> zip_hash_bytes; - if (!HexStringToBytes(zip_hash, &zip_hash_bytes)) { - SetError("invalid zip_hash key"); - return NULL; - } - if (zip_hash_bytes.size() != kZipHashBytes) { - SetError("invalid zip_hash key"); - return NULL; - } - for (size_t i = 0; i < kZipHashBytes; ++i) { - if (zip_hash_bytes[i] != hash[i]) { - SetError("zip_hash key didn't match zip hash"); - return NULL; - } - } - // TODO(erikkay): The manifest will also contain a signature of the hash // (or perhaps the whole manifest) for authentication purposes. diff --git a/chrome/test/data/extensions/good.crx b/chrome/test/data/extensions/good.crx Binary files differindex 1c927cb..d479794 100644 --- a/chrome/test/data/extensions/good.crx +++ b/chrome/test/data/extensions/good.crx diff --git a/chrome/test/data/extensions/good2.crx b/chrome/test/data/extensions/good2.crx Binary files differindex 5dadf8a..d475b5e 100755 --- a/chrome/test/data/extensions/good2.crx +++ b/chrome/test/data/extensions/good2.crx diff --git a/chrome/test/data/extensions/openssl_privkey_asn1.pem b/chrome/test/data/extensions/openssl_privkey_asn1.pem new file mode 100644 index 0000000..e96d859 --- /dev/null +++ b/chrome/test/data/extensions/openssl_privkey_asn1.pem @@ -0,0 +1,16 @@ +-----BEGIN PRIVATE KEY----- +MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBANg1QqzBj6LSt3aD +YGc/t/RusNNGHCJjrPorCPC4wvf051xDelT7Y21AA+XfHJxv/NOwlUpxabhTEw9j +Z6vKsZ9kAoiRsN0oZEAY9+daoN3Qypc4v7FqTSmwuWmJpgZ5NzPy8HlNXaah5AWa +ssZ+y+YKx3AQ59z+qy70YTH+Lz4HAgMBAAECgYEA1d55geJGb035ZSY36mpBUW1d +ROCJXAs1RJHlWhmp4xVC9yVYkU/K3nsAYBb/ek/czJpUUzs01Lx4kjRGjM0IPU1B +tTYWvnWfATLSqhaxrx3ciQusu1akiDAU+WOm5LYLQymYeTysc3EvYyG8ecO0wLY5 +7uLCLP1YaoDeh/8OFqECQQDzKVnZxnKMZgBuGxcfpGc+Dz4kNnIQmq3Z4kNfaO3Z +O3+/8DYtzEIy8pLKmmJzID28qR76eQf9efpkpxB43uhtAkEA45+Y/ghg7NhkJe1M +6nX82o5Vru54R8UITrV/oQldMKviPXmX2LvNnC++yRVkQA4D6HqTIGFHxxccjAbc +3dsfwwJBAKo+PUYXhoN9trdgCCSDOjVc/qjj5aBya12s6HaYRE5fNeXwDD6sT3zU +EKoAxQTNgevgjGvY6Rsyl3h47zNw/VECQEaO42LjgAAK98hV7cDEADRTaLYID9rX +dcLIOh7WA0AiF8hMl8hENvEST8aPTfsZHRcEX/TqktBhFqVFP1O6J/cCQQC9Otdn +C0ADYHROyq85OcxfucOYEe8DYTJK1byEVcJkcg6rcO6bg4QSdAJPwKbxKWwkNm2u +4ZsAMwkNRoIv6ShZ +-----END PRIVATE KEY----- diff --git a/chrome/test/data/extensions/page_action.crx b/chrome/test/data/extensions/page_action.crx Binary files differindex c9cba21..8b4ec7c 100644 --- a/chrome/test/data/extensions/page_action.crx +++ b/chrome/test/data/extensions/page_action.crx diff --git a/chrome/test/data/extensions/theme.crx b/chrome/test/data/extensions/theme.crx Binary files differindex a87d32c..bed2237 100644 --- a/chrome/test/data/extensions/theme.crx +++ b/chrome/test/data/extensions/theme.crx diff --git a/chrome/test/data/extensions/theme2.crx b/chrome/test/data/extensions/theme2.crx Binary files differindex 434f12d..66fd919 100644 --- a/chrome/test/data/extensions/theme2.crx +++ b/chrome/test/data/extensions/theme2.crx |