diff options
22 files changed, 3101 insertions, 2936 deletions
diff --git a/chrome/browser/browser.vcproj b/chrome/browser/browser.vcproj index 7642876..874f30e 100644 --- a/chrome/browser/browser.vcproj +++ b/chrome/browser/browser.vcproj @@ -1,2672 +1,2680 @@ -<?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" - /> - <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" - /> - <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=".\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=".\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_win.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_menu_controller_win.cc" - > - </File> - <File - RelativePath=".\bookmarks\bookmark_menu_controller_win.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_win.cc" - > - </File> - <File - RelativePath=".\back_forward_menu_model_win.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=".\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_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=".\window_sizer.cc" - > - </File> - <File - RelativePath=".\window_sizer.h" - > - </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_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\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_form_manager_win.cc" - > - </File> - <File - RelativePath=".\password_manager\password_manager.cc" - > - </File> - <File - RelativePath=".\password_manager\password_manager.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_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_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.cc" - > - </File> - <File - RelativePath=".\extensions\extension.h" - > - </File> - <File - RelativePath=".\extensions\extension_bookmarks_module.cc" - > - </File> - <File - RelativePath=".\extensions\extension_bookmarks_module.h" - > - </File> - <File - RelativePath=".\extensions\extension_browser_event_router.cc" - > - </File> - <File - RelativePath=".\extensions\extension_browser_event_router.h" - > - </File> - <File - RelativePath=".\extensions\extension_error_reporter.cc" - > - </File> - <File - RelativePath=".\extensions\extension_error_reporter.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_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_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.cc" - > - </File> - <File - RelativePath=".\renderer_host\backing_store.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\media_resource_handler.cc" - > - </File> - <File - RelativePath=".\renderer_host\media_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\renderer_security_policy.cc" - > - </File> - <File - RelativePath=".\renderer_host\renderer_security_policy.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_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_policy.cc" - > - </File> - <File - RelativePath=".\ssl\ssl_policy.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=".\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_delegate.cc" - > - </File> - <File - RelativePath=".\encoding_menu_controller_delegate.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)\grit_derived_sources\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> - </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"
+ />
+ <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"
+ />
+ <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=".\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=".\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_win.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_menu_controller_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\bookmarks\bookmark_menu_controller_win.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_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\back_forward_menu_model_win.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=".\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_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=".\window_sizer.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\window_sizer.h"
+ >
+ </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_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\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_form_manager_win.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\password_manager\password_manager.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_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_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.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_bookmarks_module.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_browser_event_router.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_browser_event_router.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_error_reporter.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_error_reporter.h"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_error_utils.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\extensions\extension_error_utils.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_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_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.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\backing_store.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\media_resource_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\media_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\renderer_security_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\renderer_host\renderer_security_policy.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_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_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy.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=".\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_delegate.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\encoding_menu_controller_delegate.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)\grit_derived_sources\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>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/chrome/browser/extensions/extension.cc b/chrome/browser/extensions/extension.cc index 0e83f3e..993deff 100644 --- a/chrome/browser/extensions/extension.cc +++ b/chrome/browser/extensions/extension.cc @@ -11,6 +11,7 @@ #include "base/string_util.h" #include "net/base/net_util.h" #include "chrome/browser/extensions/extension_error_reporter.h" +#include "chrome/browser/extensions/extension_error_utils.h" #include "chrome/common/extensions/user_script.h" #include "chrome/common/url_constants.h" @@ -210,23 +211,6 @@ FilePath Extension::GetResourcePath(const FilePath& extension_path, return ret_val; } -// Creates an error messages from a pattern. -static std::string FormatErrorMessage(const std::string& format, - const std::string s1) { - std::string ret_val = format; - ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s1); - return ret_val; -} - -static std::string FormatErrorMessage(const std::string& format, - const std::string s1, - const std::string s2) { - std::string ret_val = format; - ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s1); - ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s2); - return ret_val; -} - Extension::Extension(const FilePath& path) { DCHECK(path.IsAbsolute()); @@ -254,8 +238,8 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, if (content_script->HasKey(kRunAtKey)) { std::string run_location; if (!content_script->GetString(kRunAtKey, &run_location)) { - *error = FormatErrorMessage(kInvalidRunAtError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidRunAtError, + IntToString(definition_index)); return false; } @@ -264,8 +248,8 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, } else if (run_location == kRunAtDocumentEndValue) { result->set_run_location(UserScript::DOCUMENT_END); } else { - *error = FormatErrorMessage(kInvalidRunAtError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidRunAtError, + IntToString(definition_index)); return false; } } @@ -273,30 +257,28 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, // matches ListValue* matches = NULL; if (!content_script->GetList(kMatchesKey, &matches)) { - *error = FormatErrorMessage(kInvalidMatchesError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidMatchesError, + IntToString(definition_index)); return false; } if (matches->GetSize() == 0) { - *error = FormatErrorMessage(kInvalidMatchCountError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidMatchCountError, + IntToString(definition_index)); return false; } for (size_t j = 0; j < matches->GetSize(); ++j) { std::string match_str; if (!matches->GetString(j, &match_str)) { - *error = FormatErrorMessage(kInvalidMatchError, - IntToString(definition_index), - IntToString(j)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidMatchError, + IntToString(definition_index), IntToString(j)); return false; } URLPattern pattern; if (!pattern.Parse(match_str)) { - *error = FormatErrorMessage(kInvalidMatchError, - IntToString(definition_index), - IntToString(j)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidMatchError, + IntToString(definition_index), IntToString(j)); return false; } @@ -307,23 +289,23 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, ListValue* js = NULL; if (content_script->HasKey(kJsKey) && !content_script->GetList(kJsKey, &js)) { - *error = FormatErrorMessage(kInvalidJsListError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidJsListError, + IntToString(definition_index)); return false; } ListValue* css = NULL; if (content_script->HasKey(kCssKey) && !content_script->GetList(kCssKey, &css)) { - *error = FormatErrorMessage(kInvalidCssListError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidCssListError, + IntToString(definition_index)); return false; } // The manifest needs to have at least one js or css user script definition. if (((js ? js->GetSize() : 0) + (css ? css->GetSize() : 0)) == 0) { - *error = FormatErrorMessage(kMissingFileError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kMissingFileError, + IntToString(definition_index)); return false; } @@ -333,9 +315,8 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, Value* value; std::wstring relative; if (!js->Get(script_index, &value) || !value->GetAsString(&relative)) { - *error = FormatErrorMessage(kInvalidJsError, - IntToString(definition_index), - IntToString(script_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidJsError, + IntToString(definition_index), IntToString(script_index)); return false; } // TODO(georged): Make GetResourceURL accept wstring too @@ -351,9 +332,8 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script, Value* value; std::wstring relative; if (!css->Get(script_index, &value) || !value->GetAsString(&relative)) { - *error = FormatErrorMessage(kInvalidCssError, - IntToString(definition_index), - IntToString(script_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidCssError, + IntToString(definition_index), IntToString(script_index)); return false; } // TODO(georged): Make GetResourceURL accept wstring too @@ -377,14 +357,14 @@ PageAction* Extension::LoadPageActionHelper( // Read the page action |icon|. std::string icon; if (!page_action->GetString(kIconPathKey, &icon)) { - *error = FormatErrorMessage(kInvalidPageActionIconPathError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPageActionIconPathError, IntToString(definition_index)); return NULL; } FilePath icon_path = path_.AppendASCII(icon); if (!file_util::PathExists(icon_path)) { - *error = FormatErrorMessage(kMissingPageActionIcon, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kMissingPageActionIcon, + IntToString(definition_index)); return NULL; } result->set_icon_path(icon_path); @@ -392,7 +372,8 @@ PageAction* Extension::LoadPageActionHelper( // Read the page action |id|. std::string id; if (!page_action->GetString(kIdKey, &id)) { - *error = FormatErrorMessage(kInvalidIdError, IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidIdError, + IntToString(definition_index)); return NULL; } result->set_id(id); @@ -400,8 +381,8 @@ PageAction* Extension::LoadPageActionHelper( // Read the page action |name|. std::string name; if (!page_action->GetString(kNameKey, &name)) { - *error = FormatErrorMessage(kInvalidNameError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidNameError, + IntToString(definition_index)); return NULL; } result->set_name(name); @@ -409,8 +390,8 @@ PageAction* Extension::LoadPageActionHelper( // Read the page action |tooltip|. std::string tooltip; if (!page_action->GetString(kTooltipKey, &tooltip)) { - *error = FormatErrorMessage(kInvalidPageActionTooltipError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPageActionTooltipError, IntToString(definition_index)); return NULL; } result->set_tooltip(tooltip); @@ -422,8 +403,8 @@ PageAction* Extension::LoadPageActionHelper( result->set_type(PageAction::PERMANENT); } else if (!LowerCaseEqualsASCII(type, kPageActionTypeTab) && !LowerCaseEqualsASCII(type, kPageActionTypePermanent)) { - *error = FormatErrorMessage(kInvalidPageActionTypeValueError, - IntToString(definition_index)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPageActionTypeValueError, IntToString(definition_index)); return NULL; } else { if (LowerCaseEqualsASCII(type, kPageActionTypeTab)) @@ -614,7 +595,8 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, for (size_t i = 0; i < list_value->GetSize(); ++i) { std::string toolstrip; if (!list_value->GetString(i, &toolstrip)) { - *error = FormatErrorMessage(kInvalidToolstripError, IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidToolstripError, + IntToString(i)); return false; } toolstrips_.push_back(toolstrip); @@ -632,8 +614,8 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, for (size_t i = 0; i < list_value->GetSize(); ++i) { DictionaryValue* content_script; if (!list_value->GetDictionary(i, &content_script)) { - *error = FormatErrorMessage(kInvalidContentScriptError, - IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidContentScriptError, IntToString(i)); return false; } @@ -656,8 +638,8 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, for (size_t i = 0; i < list_value->GetSize(); ++i) { DictionaryValue* page_action_value; if (!list_value->GetDictionary(i, &page_action_value)) { - *error = FormatErrorMessage(kInvalidPageActionError, - IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPageActionError, IntToString(i)); return false; } @@ -673,7 +655,8 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, if (source.HasKey(kPermissionsKey)) { ListValue* hosts = NULL; if (!source.GetList(kPermissionsKey, &hosts)) { - *error = FormatErrorMessage(kInvalidPermissionsError, ""); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPermissionsError, ""); return false; } @@ -685,23 +668,23 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id, for (size_t i = 0; i < hosts->GetSize(); ++i) { std::string host_str; if (!hosts->GetString(i, &host_str)) { - *error = FormatErrorMessage(kInvalidPermissionError, - IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPermissionError, IntToString(i)); return false; } URLPattern pattern; if (!pattern.Parse(host_str)) { - *error = FormatErrorMessage(kInvalidPermissionError, - IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPermissionError, IntToString(i)); return false; } // Only accept http/https persmissions at the moment. if ((pattern.scheme() != chrome::kHttpScheme) && (pattern.scheme() != chrome::kHttpsScheme)) { - *error = FormatErrorMessage(kInvalidPermissionSchemeError, - IntToString(i)); + *error = ExtensionErrorUtils::FormatErrorMessage( + kInvalidPermissionSchemeError, IntToString(i)); return false; } diff --git a/chrome/browser/extensions/extension_error_utils.cc b/chrome/browser/extensions/extension_error_utils.cc new file mode 100755 index 0000000..c43587b --- /dev/null +++ b/chrome/browser/extensions/extension_error_utils.cc @@ -0,0 +1,25 @@ +// 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_error_utils.h" + +#include "base/string_util.h" + +std::string ExtensionErrorUtils::FormatErrorMessage( + const std::string& format, + const std::string s1) { + std::string ret_val = format; + ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s1); + return ret_val; +} + +std::string ExtensionErrorUtils::FormatErrorMessage( + const std::string& format, + const std::string s1, + const std::string s2) { + std::string ret_val = format; + ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s1); + ReplaceFirstSubstringAfterOffset(&ret_val, 0, "*", s2); + return ret_val; +} diff --git a/chrome/browser/extensions/extension_error_utils.h b/chrome/browser/extensions/extension_error_utils.h new file mode 100755 index 0000000..1d7283a --- /dev/null +++ b/chrome/browser/extensions/extension_error_utils.h @@ -0,0 +1,24 @@ +// Copyright (c) 2006-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_BROWSER_EXTENSIONS_EXTENSION_ERROR_UTILS_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_UTILS_H_ + +#include <string> + +class ExtensionErrorUtils { +public: + // Creates an error messages from a pattern. Places first instance if "*" + // with |s1|. + static std::string FormatErrorMessage(const std::string& format, + const std::string s1); + + // Creates an error messages from a pattern. Places first instance if "*" + // with |s1| and second instance of "*" with |s2|. + static std::string FormatErrorMessage(const std::string& format, + const std::string s1, + const std::string s2); +}; + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FORMAT_MESSAGE_UTILS_H_ diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc index 6b22998..bfc2f2c 100644 --- a/chrome/browser/extensions/extension_function.cc +++ b/chrome/browser/extensions/extension_function.cc @@ -10,14 +10,8 @@ void ExtensionFunction::SendResponse(bool success) { if (bad_message_) { dispatcher_->HandleBadMessage(this); - } else if (success) { - if (has_callback()) { - dispatcher_->SendResponse(this); - } } else { - // TODO(aa): In case of failure, send the error message to an error - // callback. - LOG(WARNING) << error_; + dispatcher_->SendResponse(this, success); } } @@ -28,4 +22,3 @@ std::string ExtensionFunction::extension_id() { Profile* ExtensionFunction::profile() { return dispatcher_->profile(); } - diff --git a/chrome/browser/extensions/extension_function.h b/chrome/browser/extensions/extension_function.h index af1fc6e..b9074b7 100644 --- a/chrome/browser/extensions/extension_function.h +++ b/chrome/browser/extensions/extension_function.h @@ -33,16 +33,14 @@ class ExtensionFunction { } void set_args(Value* args) { args_ = args; } - void set_callback_id(int callback_id) { callback_id_ = callback_id; } - int callback_id() { return callback_id_; } + void set_request_id(int request_id) { request_id_ = request_id; } + int request_id() { return request_id_; } Value* result() { return result_.get(); } const std::string& error() { return error_; } - // Whether the extension has registered a callback and is waiting for a - // response. APIs can use this to avoid doing unnecessary work in the case - // that the extension is not expecting a response. - bool has_callback() { return callback_id_ != -1; } + void set_has_callback(bool has_callback) { has_callback_ = has_callback; } + bool has_callback() { return has_callback_; } // Execute the API. Clients should call set_args() and set_callback_id() // before calling this method. Derived classes should populate result_ and @@ -75,8 +73,12 @@ class ExtensionFunction { ExtensionFunctionDispatcher* dispatcher_; private: - // Id of js function to callback upon completion. -1 represents no callback. - int callback_id_; + // Id of this request, used to map the response back to the caller. + int request_id_; + + // True if the js caller provides a callback function to receive the response + // of this call. + bool has_callback_; DISALLOW_COPY_AND_ASSIGN(ExtensionFunction); }; diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index b303778..bdc930a 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -57,8 +57,8 @@ FactoryRegistry::FactoryRegistry() { factories_["GetWindow"] = &NewExtensionFunction<GetWindowFunction>; factories_["GetCurrentWindow"] = &NewExtensionFunction<GetCurrentWindowFunction>; - factories_["GetFocusedWindow"] = - &NewExtensionFunction<GetFocusedWindowFunction>; + factories_["GetLastFocusedWindow"] = + &NewExtensionFunction<GetLastFocusedWindowFunction>; factories_["GetAllWindows"] = &NewExtensionFunction<GetAllWindowsFunction>; factories_["CreateWindow"] = &NewExtensionFunction<CreateWindowFunction>; factories_["RemoveWindow"] = &NewExtensionFunction<RemoveWindowFunction>; @@ -140,7 +140,8 @@ Browser* ExtensionFunctionDispatcher::GetBrowser() { void ExtensionFunctionDispatcher::HandleRequest(const std::string& name, const std::string& args, - int callback_id) { + int request_id, + bool has_callback) { scoped_ptr<Value> value; if (!args.empty()) { JSONReader reader; @@ -160,18 +161,21 @@ void ExtensionFunctionDispatcher::HandleRequest(const std::string& name, FactoryRegistry::instance()->NewFunction(name)); function->set_dispatcher(this); function->set_args(value.get()); - function->set_callback_id(callback_id); + function->set_request_id(request_id); + function->set_has_callback(has_callback); function->Run(); } -void ExtensionFunctionDispatcher::SendResponse(ExtensionFunction* function) { +void ExtensionFunctionDispatcher::SendResponse(ExtensionFunction* function, + bool success) { std::string json; // Some functions might not need to return any results. - if (function->result()) + if (success && function->result()) JSONWriter::Write(function->result(), false, &json); - render_view_host_->SendExtensionResponse(function->callback_id(), json); + render_view_host_->SendExtensionResponse(function->request_id(), success, + json, function->error()); } void ExtensionFunctionDispatcher::HandleBadMessage(ExtensionFunction* api) { diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h index 43d2a36..fed54791 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.h +++ b/chrome/browser/extensions/extension_function_dispatcher.h @@ -35,10 +35,10 @@ class ExtensionFunctionDispatcher { // Handle a request to execute an extension function. void HandleRequest(const std::string& name, const std::string& args, - int callback_id); + int request_id, bool has_callback); // Send a response to a function. - void SendResponse(ExtensionFunction* api); + void SendResponse(ExtensionFunction* api, bool success); // Gets the browser extension functions should operate relative to. For // example, for positioning windows, or alert boxes, or creating tabs. diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc index 39066c3..6e61976 100644 --- a/chrome/browser/extensions/extension_tabs_module.cc +++ b/chrome/browser/extensions/extension_tabs_module.cc @@ -7,6 +7,7 @@ #include "base/string_util.h" #include "chrome/browser/browser.h" #include "chrome/browser/browser_list.h" +#include "chrome/browser/extensions/extension_error_utils.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" #include "chrome/browser/renderer_host/render_view_host_delegate.h" #include "chrome/browser/tab_contents/navigation_entry.h" @@ -33,13 +34,29 @@ const wchar_t* kTopKey = L"top"; const wchar_t* kWidthKey = L"width"; const wchar_t* kHeightKey = L"height"; const wchar_t* kTabsKey = L"tabs"; + +// errors +const char* kWindowNotFoundError = "No window with id: *."; +const char* kTabNotFoundError = "No tab with id: *."; +const char* kInvalidUrlError = "Invalid url: \"*\"."; } // Forward declare static helper functions defined below. static DictionaryValue* CreateWindowValue(Browser* browser, bool populate_tabs); static ListValue* CreateTabList(Browser* browser); + +// |error_message| can optionally be passed in a will be set with an appropriate +// message if the window cannot be found by id. static Browser* GetBrowserInProfileWithId(Profile* profile, - const int window_id); + const int window_id, + std::string* error_message); + +// |error_message| can optionally be passed in a will be set with an appropriate +// message if the tab cannot be found by id. +static bool GetTabById(int tab_id, Profile* profile, Browser** browser, + TabStripModel** tab_strip, + TabContents** contents, + int* tab_index, std::string* error_message); // ExtensionTabUtil int ExtensionTabUtil::GetWindowId(const Browser* browser) { @@ -123,35 +140,30 @@ bool ExtensionTabUtil::GetTabById(int tab_id, Profile* profile, return false; } -static bool GetWindowFunctionHelper(Browser* browser, Profile* profile, - scoped_ptr<Value>* result) { - // TODO(rafaelw): need "not found" error message. - if (browser == NULL || browser->profile() != profile) - return false; - - result->reset(CreateWindowValue(browser, false)); - - return true; -} - // Windows --------------------------------------------------------------------- bool GetWindowFunction::RunImpl() { int window_id; EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id)); - Browser* target = GetBrowserInProfileWithId(profile(), window_id); - return GetWindowFunctionHelper(target, profile(), &result_); + Browser* browser = GetBrowserInProfileWithId(profile(), window_id, &error_); + if (!browser) + return false; + + result_.reset(CreateWindowValue(browser, false)); + return true; } bool GetCurrentWindowFunction::RunImpl() { - return GetWindowFunctionHelper(dispatcher_->GetBrowser(), profile(), - &result_); + Browser* browser = dispatcher_->GetBrowser(); + result_.reset(CreateWindowValue(browser, false)); + return true; } -bool GetFocusedWindowFunction::RunImpl() { - return GetWindowFunctionHelper(BrowserList::GetLastActive(), profile(), - &result_); +bool GetLastFocusedWindowFunction::RunImpl() { + Browser* browser = BrowserList::GetLastActiveWithProfile(profile()); + result_.reset(CreateWindowValue(browser, false)); + return true; } bool GetAllWindowsFunction::RunImpl() { @@ -185,7 +197,8 @@ bool CreateWindowFunction::RunImpl() { EXTENSION_FUNCTION_VALIDATE(args->GetString(kUrlKey, &url_input)); url.reset(new GURL(url_input)); if (!url->is_valid()) { - // TODO(rafaelw): need error message/callback here + error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidUrlError, + url_input); return false; } } @@ -244,24 +257,11 @@ bool RemoveWindowFunction::RunImpl() { int window_id; EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id)); - Browser* target = NULL; - for (BrowserList::const_iterator browser = BrowserList::begin(); - browser != BrowserList::end(); ++browser) { - // Only examine browsers in the current profile. - if ((*browser)->profile() == profile()) { - if (ExtensionTabUtil::GetWindowId(*browser) == window_id) { - target = *browser; - break; - } - } - } - - if (target == NULL) { - // TODO(rafaelw): need error message. + Browser* browser = GetBrowserInProfileWithId(profile(), window_id, &error_); + if (!browser) return false; - } - target->CloseWindow(); + browser->CloseWindow(); return true; } @@ -269,12 +269,15 @@ bool RemoveWindowFunction::RunImpl() { // Tabs --------------------------------------------------------------------- bool GetSelectedTabFunction::RunImpl() { - int window_id; Browser* browser; // windowId defaults to "current" window. + int window_id = -1; + if (!args_->IsType(Value::TYPE_NULL)) { EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id)); - browser = GetBrowserInProfileWithId(profile(), window_id); + browser = GetBrowserInProfileWithId(profile(), window_id, &error_); + if (!browser) + return false; } else { browser = dispatcher_->GetBrowser(); } @@ -288,12 +291,14 @@ bool GetSelectedTabFunction::RunImpl() { } bool GetAllTabsInWindowFunction::RunImpl() { - int window_id; Browser* browser; // windowId defaults to "current" window. + int window_id = -1; if (!args_->IsType(Value::TYPE_NULL)) { EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id)); - browser = GetBrowserInProfileWithId(profile(), window_id); + browser = GetBrowserInProfileWithId(profile(), window_id, &error_); + if (!browser) + return false; } else { browser = dispatcher_->GetBrowser(); } @@ -307,14 +312,16 @@ bool CreateTabFunction::RunImpl() { EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_DICTIONARY)); const DictionaryValue* args = static_cast<const DictionaryValue*>(args_); - int window_id; - Browser* browser; + Browser *browser; // windowId defaults to "current" window. + int window_id = -1; if (args->HasKey(kWindowIdKey)) { EXTENSION_FUNCTION_VALIDATE(args->GetInteger(kWindowIdKey, &window_id)); - browser = GetBrowserInProfileWithId(profile(), window_id); + browser = GetBrowserInProfileWithId(profile(), window_id, &error_); + if (!browser) + return false; } else { - browser = dispatcher_->GetBrowser(); + browser = dispatcher_->GetBrowser(); } TabStripModel* tab_strip = browser->tabstrip_model(); @@ -328,9 +335,11 @@ bool CreateTabFunction::RunImpl() { if (args->HasKey(kUrlKey)) { EXTENSION_FUNCTION_VALIDATE(args->GetString(kUrlKey, &url_string)); url.reset(new GURL(url_string)); - // TODO(rafaelw): return an "invalid url" error. - if (!url->is_valid()) + if (!url->is_valid()) { + error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidUrlError, + url_string); return false; + } } // Default to foreground for the new tab. The presence of 'selected' property @@ -371,9 +380,8 @@ bool GetTabFunction::RunImpl() { TabStripModel* tab_strip = NULL; TabContents* contents = NULL; int tab_index = -1; - // TODO(rafaelw): return "tab_id not found" error. - if (!ExtensionTabUtil::GetTabById(tab_id, profile(), NULL, &tab_strip, - &contents, &tab_index)) + if (!GetTabById(tab_id, profile(), NULL, &tab_strip, &contents, &tab_index, + &error_)) return false; result_.reset(ExtensionTabUtil::CreateTabValue(contents, tab_strip, @@ -392,9 +400,8 @@ bool UpdateTabFunction::RunImpl() { TabStripModel* tab_strip = NULL; TabContents* contents = NULL; int tab_index = -1; - // TODO(rafaelw): return "tab_id not found" error. - if (!ExtensionTabUtil::GetTabById(tab_id, profile(), NULL, &tab_strip, - &contents, &tab_index)) + if (!GetTabById(tab_id, profile(), NULL, &tab_strip, &contents, &tab_index, + &error_)) return false; NavigationController& controller = contents->controller(); @@ -409,9 +416,10 @@ bool UpdateTabFunction::RunImpl() { EXTENSION_FUNCTION_VALIDATE(update_props->GetString(kUrlKey, &url)); GURL new_gurl(url); - // TODO(rafaelw): return "invalid url" here. - if (!new_gurl.is_valid()) + if (!new_gurl.is_valid()) { + error_ = ExtensionErrorUtils::FormatErrorMessage(kInvalidUrlError, url); return false; + } controller.LoadURL(new_gurl, GURL(), PageTransition::LINK); } @@ -445,19 +453,18 @@ bool MoveTabFunction::RunImpl() { Browser* source_browser = NULL; TabStripModel* source_tab_strip = NULL; int tab_index = -1; - // TODO(rafaelw): return "tab_id not found" error. - if (!ExtensionTabUtil::GetTabById(tab_id, profile(), &source_browser, - &source_tab_strip, NULL, - &tab_index)) + if (!GetTabById(tab_id, profile(), &source_browser, &source_tab_strip, NULL, + &tab_index, &error_)) return false; if (update_props->HasKey(kWindowIdKey)) { + Browser* target_browser; int window_id; EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(kWindowIdKey, &window_id)); - Browser* target_browser = GetBrowserInProfileWithId(profile(), window_id); - // TODO(rafaelw): return "window_id not found" error. - if (!target_browser) + target_browser = GetBrowserInProfileWithId(profile(), window_id, + &error_); + if (!target_browser) return false; // If windowId is different from the current window, move between windows. @@ -465,10 +472,12 @@ bool MoveTabFunction::RunImpl() { ExtensionTabUtil::GetWindowId(source_browser)) { TabStripModel* target_tab_strip = target_browser->tabstrip_model(); TabContents *contents = source_tab_strip->DetachTabContentsAt(tab_index); - // TODO(rafaelw): return a "tab not found" error. - if (!contents) + if (!contents) { + error_ = ExtensionErrorUtils::FormatErrorMessage( + kTabNotFoundError, IntToString(tab_id)); return false; - + } + // Clamp move location to the last position. // This is ">" because it can append to a new index position. if (new_index > target_tab_strip->count()) @@ -478,15 +487,15 @@ bool MoveTabFunction::RunImpl() { false, true); return true; - } + } } - + // Perform a simple within-window move. // Clamp move location to the last position. // This is ">=" because the move must be to an existing location. if (new_index >= source_tab_strip->count()) new_index = source_tab_strip->count() - 1; - + if (new_index != tab_index) source_tab_strip->MoveTabContentsAt(tab_index, new_index, false); @@ -495,16 +504,12 @@ bool MoveTabFunction::RunImpl() { bool RemoveTabFunction::RunImpl() { - // TODO(rafaelw): This should have a callback, but it can't because it could - // close it's own tab. int tab_id; EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&tab_id)); Browser* browser = NULL; TabContents* contents = NULL; - // TODO(rafaelw): return "tab_id not found" error. - if (!ExtensionTabUtil::GetTabById(tab_id, profile(), &browser, NULL, - &contents, NULL)) + if (!GetTabById(tab_id, profile(), &browser, NULL, &contents, NULL, &error_)) return false; browser->CloseTabContents(contents); @@ -512,6 +517,7 @@ bool RemoveTabFunction::RunImpl() { } // static helpers + // if |populate| is true, each window gets a list property |tabs| which contains // fully populated tab objects. static DictionaryValue* CreateWindowValue(Browser* browser, @@ -546,12 +552,34 @@ static ListValue* CreateTabList(Browser* browser) { } static Browser* GetBrowserInProfileWithId(Profile* profile, - const int window_id) { + const int window_id, + std::string* error_message) { for (BrowserList::const_iterator browser = BrowserList::begin(); browser != BrowserList::end(); ++browser) { if ((*browser)->profile() == profile && ExtensionTabUtil::GetWindowId(*browser) == window_id) return *browser; } + + if (error_message) + *error_message= ExtensionErrorUtils::FormatErrorMessage( + kWindowNotFoundError, IntToString(window_id)); + return NULL; } + +static bool GetTabById(int tab_id, Profile* profile, Browser** browser, + TabStripModel** tab_strip, + TabContents** contents, + int* tab_index, + std::string* error_message) { + if (ExtensionTabUtil::GetTabById(tab_id, profile, browser, tab_strip, + contents, tab_index)) + return true; + + if (error_message) + *error_message = ExtensionErrorUtils::FormatErrorMessage( + kTabNotFoundError, IntToString(tab_id)); + + return false; +} diff --git a/chrome/browser/extensions/extension_tabs_module.h b/chrome/browser/extensions/extension_tabs_module.h index 04f884f..b8763fc 100644 --- a/chrome/browser/extensions/extension_tabs_module.h +++ b/chrome/browser/extensions/extension_tabs_module.h @@ -36,7 +36,7 @@ class GetWindowFunction : public SyncExtensionFunction { class GetCurrentWindowFunction : public SyncExtensionFunction { virtual bool RunImpl(); }; -class GetFocusedWindowFunction : public SyncExtensionFunction { +class GetLastFocusedWindowFunction : public SyncExtensionFunction { virtual bool RunImpl(); }; class GetAllWindowsFunction : public SyncExtensionFunction { diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc index 4900f93..0083ad9 100644 --- a/chrome/browser/renderer_host/render_view_host.cc +++ b/chrome/browser/renderer_host/render_view_host.cc @@ -1384,16 +1384,20 @@ void RenderViewHost::ForwardMessageFromExternalHost(const std::string& message, void RenderViewHost::OnExtensionRequest(const std::string& name, const std::string& args, - int callback_id) { + int request_id, + bool has_callback) { // TODO(aa): Here is where we can check that this renderer was supposed to be // able to call extension APIs. DCHECK(extension_function_dispatcher_.get()); - extension_function_dispatcher_->HandleRequest(name, args, callback_id); + extension_function_dispatcher_->HandleRequest(name, args, request_id, + has_callback); } -void RenderViewHost::SendExtensionResponse(int callback_id, - const std::string& response) { - Send(new ViewMsg_ExtensionResponse(routing_id(), callback_id, response)); +void RenderViewHost::SendExtensionResponse(int request_id, bool success, + const std::string& response, + const std::string& error) { + Send(new ViewMsg_ExtensionResponse(routing_id(), request_id, success, + response, error)); } void RenderViewHost::OnExtensionPostMessage( diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h index 1e7bc4f..25ff89b 100644 --- a/chrome/browser/renderer_host/render_view_host.h +++ b/chrome/browser/renderer_host/render_view_host.h @@ -421,7 +421,10 @@ class RenderViewHost : public RenderWidgetHost { // Creates a new RenderWidget with the given route id. void CreateNewWidget(int route_id, bool activatable); - void SendExtensionResponse(int callback_id, const std::string& response); + // Senf the response to an extension api call. + void SendExtensionResponse(int request_id, bool success, + const std::string& response, + const std::string& error); protected: // RenderWidgetHost protected overrides. @@ -545,7 +548,7 @@ class RenderViewHost : public RenderWidgetHost { const std::wstring& value); void OnExtensionRequest(const std::string& name, const std::string& args, - int callback_id); + int request_id, bool has_callback); void OnExtensionPostMessage(int port_id, const std::string& message); // Helper function to send a navigation message. If a cross-site request is diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index ce8c001..2bb811b 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -856,6 +856,8 @@ 'browser/extensions/extension_bookmarks_module.h', 'browser/extensions/extension_error_reporter.cc', 'browser/extensions/extension_error_reporter.h', + 'browser/extensions/extension_error_utils.cc', + 'browser/extensions/extension_error_utils.h', 'browser/extensions/extension_function.cc', 'browser/extensions/extension_function.h', 'browser/extensions/extension_function_dispatcher.cc', diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index 0cf0905..1966f9e 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -528,10 +528,12 @@ IPC_BEGIN_MESSAGES(View) // started. IPC_MESSAGE_ROUTED0(ViewMsg_MoveOrResizeStarted) - // The browser sends this message when an extension API has a response. - IPC_MESSAGE_ROUTED2(ViewMsg_ExtensionResponse, - int /* callback id */, - std::string /* response */) + // The browser sends this message in response to all extension api calls. + IPC_MESSAGE_ROUTED4(ViewMsg_ExtensionResponse, + int /* request_id */, + bool /* success */, + std::string /* response */, + std::string /* error */) // Tell the extension process about a new channel that has been opened from a // renderer. source_port_id identifies the port that the extension can @@ -1300,11 +1302,12 @@ IPC_BEGIN_MESSAGES(ViewHost) double /* right_channel */) // A renderer sends this message when an extension process starts an API - // request. If callback id is -1, no response will be sent. - IPC_MESSAGE_ROUTED3(ViewHostMsg_ExtensionRequest, + // request. The browser will always respond with a ViewMsg_ExtensionResponse. + IPC_MESSAGE_ROUTED4(ViewHostMsg_ExtensionRequest, std::string /* name */, std::string /* argument */, - int /* callback id */) + int /* callback id */, + bool /* has_callback */) // Notify the browser that this renderer added a listener to an event. IPC_MESSAGE_CONTROL1(ViewHostMsg_ExtensionAddListener, diff --git a/chrome/renderer/extensions/extension_api_client_unittest.cc b/chrome/renderer/extensions/extension_api_client_unittest.cc index 7e786b7..6104bab 100644 --- a/chrome/renderer/extensions/extension_api_client_unittest.cc +++ b/chrome/renderer/extensions/extension_api_client_unittest.cc @@ -91,8 +91,9 @@ TEST_F(ExtensionAPIClientTest, CallbackDispatching) { ASSERT_TRUE(callback_id >= 0); // Now send the callback a response - ExtensionProcessBindings::ExecuteCallbackInFrame( - GetMainFrame(), callback_id, "{\"foo\":\"bar\"}"); + ExtensionProcessBindings::CallContext call(GetMainFrame(), "CreateTab"); + ExtensionProcessBindings::ExecuteResponseInFrame( + &call, callback_id, true, "{\"foo\":\"bar\"}", ""); // And verify that it worked ASSERT_EQ("pass", GetConsoleMessage()); @@ -138,19 +139,19 @@ TEST_F(ExtensionAPIClientTest, GetCurentWindow) { "GetCurrentWindow", "null"); } -TEST_F(ExtensionAPIClientTest, GetFocusedWindow) { - ExpectJsFail("chrome.windows.getFocused(function(){}, 20);", +TEST_F(ExtensionAPIClientTest, GetLastFocusedWindow) { + ExpectJsFail("chrome.windows.getLastFocused(function(){}, 20);", "Uncaught Error: Too many arguments."); - ExpectJsFail("chrome.windows.getFocused();", + ExpectJsFail("chrome.windows.getLastFocused();", "Uncaught Error: Parameter 0 is required."); - ExpectJsFail("chrome.windows.getFocused('abc');", + ExpectJsFail("chrome.windows.getLastFocused('abc');", "Uncaught Error: Invalid value for argument 0. " "Expected 'function' but got 'string'."); - ExpectJsPass("chrome.windows.getFocused(function(){})", - "GetFocusedWindow", "null"); + ExpectJsPass("chrome.windows.getLastFocused(function(){})", + "GetLastFocusedWindow", "null"); } TEST_F(ExtensionAPIClientTest, GetAllWindows) { @@ -302,10 +303,23 @@ TEST_F(ExtensionAPIClientTest, MoveTab) { } TEST_F(ExtensionAPIClientTest, RemoveTab) { - ExpectJsFail("chrome.tabs.remove('foobar', function(){});", + ExpectJsFail("chrome.tabs.remove(32, function(){}, 20);", "Uncaught Error: Too many arguments."); - ExpectJsPass("chrome.tabs.remove(21)", "RemoveTab", "21"); + + ExpectJsFail("chrome.tabs.remove('abc', function(){});", + "Uncaught Error: Invalid value for argument 0. " + "Expected 'integer' but got 'string'."); + + ExpectJsFail("chrome.tabs.remove(1, 1);", + "Uncaught Error: Invalid value for argument 1. " + "Expected 'function' but got 'integer'."); + + ExpectJsPass("chrome.tabs.remove(2, function(){})", + "RemoveTab", "2"); + + ExpectJsPass("chrome.tabs.remove(2)", + "RemoveTab", "2"); } // Bookmark API tests diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 032d4570..dccc32a 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -46,8 +46,8 @@ class ExtensionImpl : public v8::Extension { v8::Handle<v8::String> name) { std::set<std::string>* names = GetFunctionNameSet(); - if (name->Equals(v8::String::New("GetNextCallbackId"))) - return v8::FunctionTemplate::New(GetNextCallbackId); + if (name->Equals(v8::String::New("GetNextRequestId"))) + return v8::FunctionTemplate::New(GetNextRequestId); else if (names->find(*v8::String::AsciiValue(name)) != names->end()) return v8::FunctionTemplate::New(StartRequest, name); @@ -63,9 +63,9 @@ class ExtensionImpl : public v8::Extension { return &Singleton<SingletonData>()->function_names_; } - static v8::Handle<v8::Value> GetNextCallbackId(const v8::Arguments& args) { - static int next_callback_id = 0; - return v8::Integer::New(next_callback_id++); + static v8::Handle<v8::Value> GetNextRequestId(const v8::Arguments& args) { + static int next_request_id = 0; + return v8::Integer::New(next_request_id++); } static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { @@ -76,14 +76,17 @@ class ExtensionImpl : public v8::Extension { if (!webframe || !renderview) return v8::Undefined(); - if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsInt32()) + if (args.Length() != 3 || !args[0]->IsString() || !args[1]->IsInt32() || + !args[2]->IsBoolean()) return v8::Undefined(); - int callback_id = args[1]->Int32Value(); + int request_id = args[1]->Int32Value(); + bool has_callback = args[2]->BooleanValue(); + renderview->SendExtensionRequest( std::string(*v8::String::AsciiValue(args.Data())), std::string(*v8::String::Utf8Value(args[0])), - callback_id, webframe); + request_id, has_callback, webframe); return v8::Undefined(); } @@ -100,17 +103,31 @@ void ExtensionProcessBindings::SetFunctionNames( ExtensionImpl::SetFunctionNames(names); } -void ExtensionProcessBindings::ExecuteCallbackInFrame( - WebFrame* frame, int callback_id, const std::string& response) { - std::string code = "chrome.dispatchCallback_("; - code += IntToString(callback_id); - code += ", '"; +void ExtensionProcessBindings::ExecuteResponseInFrame( + CallContext *call, int request_id, bool success, + const std::string& response, + const std::string& error) { + std::string code = "chrome.handleResponse_("; + code += IntToString(request_id); + + code += ", '" + call->name_; + + if (success) + code += "', true"; + else + code += "', false"; + code += ", '"; size_t offset = code.length(); code += response; ReplaceSubstringsAfterOffset(&code, offset, "\\", "\\\\"); ReplaceSubstringsAfterOffset(&code, offset, "'", "\\'"); + code += "', '"; + offset = code.length(); + code += error; + ReplaceSubstringsAfterOffset(&code, offset, "\\", "\\\\"); + ReplaceSubstringsAfterOffset(&code, offset, "'", "\\'"); code += "')"; - frame->ExecuteScript(WebScriptSource(WebString::fromUTF8(code))); + call->frame_->ExecuteScript(WebScriptSource(WebString::fromUTF8(code))); } diff --git a/chrome/renderer/extensions/extension_process_bindings.h b/chrome/renderer/extensions/extension_process_bindings.h index 51b13a7..a24e4e5 100644 --- a/chrome/renderer/extensions/extension_process_bindings.h +++ b/chrome/renderer/extensions/extension_process_bindings.h @@ -16,10 +16,21 @@ class WebFrame; class ExtensionProcessBindings { public: + struct CallContext { + public : + CallContext(WebFrame *frame, const std::string& name) + : frame_(frame), + name_(name) {} + WebFrame* frame_; + std::string name_; + }; + static void SetFunctionNames(const std::vector<std::string>& names); static v8::Extension* Get(); - static void ExecuteCallbackInFrame(WebFrame* frame, int callback_id, - const std::string& response); + static void ExecuteResponseInFrame(CallContext *call, int request_id, + bool success, + const std::string& response, + const std::string& error); }; #endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_PROCESS_BINDINGS_H_ diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index d28faa7..8f36c76 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -1461,20 +1461,21 @@ void RenderView::DidCancelClientRedirect(WebView* webview, void RenderView::WillCloseFrame(WebView* view, WebFrame* frame) { // Remove all the pending extension callbacks for this frame. - if (pending_extension_callbacks_.IsEmpty()) + if (pending_extension_requests_.IsEmpty()) return; - std::vector<int> orphaned_callbacks; - for (IDMap<WebFrame>::const_iterator iter = - pending_extension_callbacks_.begin(); - iter != pending_extension_callbacks_.end(); ++iter) { - if (iter->second == frame) - orphaned_callbacks.push_back(iter->first); + std::vector<int> orphaned_requests; + for (IDMap<ExtensionProcessBindings::CallContext>::const_iterator iter = + pending_extension_requests_.begin(); + iter != pending_extension_requests_.end(); ++iter) { + if (iter->second->frame_ == frame) + orphaned_requests.push_back(iter->first); } - for (std::vector<int>::const_iterator iter = orphaned_callbacks.begin(); - iter != orphaned_callbacks.end(); ++iter) { - pending_extension_callbacks_.Remove(*iter); + for (std::vector<int>::const_iterator iter = orphaned_requests.begin(); + iter != orphaned_requests.end(); ++iter) { + delete pending_extension_requests_.Lookup(*iter); + pending_extension_requests_.Remove(*iter); } } @@ -2908,25 +2909,33 @@ void RenderView::OnSetBackground(const SkBitmap& background) { void RenderView::SendExtensionRequest(const std::string& name, const std::string& args, - int callback_id, - WebFrame* callback_frame) { - if (callback_id != -1) { - DCHECK(callback_frame) << "Callback specified without frame"; - pending_extension_callbacks_.AddWithID(callback_frame, callback_id); - } - - Send(new ViewHostMsg_ExtensionRequest(routing_id_, name, args, callback_id)); -} - -void RenderView::OnExtensionResponse(int callback_id, - const std::string& response) { - WebFrame* web_frame = pending_extension_callbacks_.Lookup(callback_id); - if (!web_frame) + int request_id, + bool has_callback, + WebFrame* request_frame) { + DCHECK(request_frame) << "Request specified without frame"; + pending_extension_requests_.AddWithID( + new ExtensionProcessBindings::CallContext(request_frame, name), + request_id); + + Send(new ViewHostMsg_ExtensionRequest(routing_id_, name, args, request_id, + has_callback)); +} + +void RenderView::OnExtensionResponse(int request_id, + bool success, + const std::string& response, + const std::string& error) { + ExtensionProcessBindings::CallContext* call = + pending_extension_requests_.Lookup(request_id); + + if (!call) return; // The frame went away. - ExtensionProcessBindings::ExecuteCallbackInFrame(web_frame, callback_id, - response); - pending_extension_callbacks_.Remove(callback_id); + ExtensionProcessBindings::ExecuteResponseInFrame(call, request_id, + success, response, + error); + pending_extension_requests_.Remove(request_id); + delete call; } // Dump all load time histograms. diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index 3463ad8..7b5665d 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -20,6 +20,7 @@ #include "build/build_config.h" #include "chrome/renderer/automation/dom_automation_controller.h" #include "chrome/renderer/dom_ui_bindings.h" +#include "chrome/renderer/extensions/extension_process_bindings.h" #include "chrome/renderer/external_host_bindings.h" #include "chrome/renderer/render_widget.h" #include "skia/include/SkBitmap.h" @@ -374,8 +375,11 @@ class RenderView : public RenderWidget, void OnClearFocusedNode(); void SendExtensionRequest(const std::string& name, const std::string& args, - int callback_id, WebFrame* web_frame); - void OnExtensionResponse(int callback_id, const std::string& response); + int request_id, bool has_callback, + WebFrame* web_frame); + void OnExtensionResponse(int request_id, bool success, + const std::string& response, + const std::string& error); protected: // RenderWidget override. @@ -784,8 +788,8 @@ class RenderView : public RenderWidget, // change but is overridden by tests. int delay_seconds_for_form_state_sync_; - // Maps pending callback IDs to their frames. - IDMap<WebFrame> pending_extension_callbacks_; + // Maps pending request IDs to their frames. + IDMap<ExtensionProcessBindings::CallContext> pending_extension_requests_; scoped_refptr<AudioMessageFilter> audio_message_filter_; diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd index cda253b..c59e98c 100644 --- a/chrome/renderer/renderer_resources.grd +++ b/chrome/renderer/renderer_resources.grd @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- This comment is only here because changes to resources are not picked up -without changes to the corresponding grd file. --> +without changes to the corresponding grd file. --> <grit latest_public_release="0" current_release="1"> <outputs> <output filename="grit/renderer_resources.h" type="rc_header"> diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js index 70df0fb..8b17e63 100644 --- a/chrome/renderer/resources/extension_process_bindings.js +++ b/chrome/renderer/resources/extension_process_bindings.js @@ -9,10 +9,10 @@ var chrome; (function() { - native function GetNextCallbackId(); + native function GetNextRequestId(); native function GetWindow(); native function GetCurrentWindow(); - native function GetFocusedWindow(); + native function GetLastFocusedWindow(); native function CreateWindow(); native function RemoveWindow(); native function GetAllWindows(); @@ -71,27 +71,37 @@ var chrome; // TODO(aa): This function should not be publicly exposed. Pass it into V8 // instead and hold one per-context. See the way event_bindings.js works. var callbacks = []; - chrome.dispatchCallback_ = function(callbackId, str) { + chrome.handleResponse_ = function(requestId, name, success, response, error) { try { - if (str) { - callbacks[callbackId](goog.json.parse(str)); - } else { - callbacks[callbackId](); + if (!success) { + if (!error) + error = "Unknown error." + console.error("Error during " + name + ": " + error); + return; + } + + if (callbacks[requestId]) { + if (response) { + callbacks[requestId](goog.json.parse(response)); + } else { + callbacks[requestId](); + } } } finally { - delete callbacks[callbackId]; + delete callbacks[requestId]; } }; // Send an API request and optionally register a callback. function sendRequest(request, args, callback) { var sargs = goog.json.serialize(args); - var callbackId = -1; + var requestId = GetNextRequestId(); + var hasCallback = false; if (callback) { - callbackId = GetNextCallbackId(); - callbacks[callbackId] = callback; + hasCallback = true; + callbacks[requestId] = callback; } - request(sargs, callbackId); + request(sargs, requestId, hasCallback); } //---------------------------------------------------------------------------- @@ -118,12 +128,12 @@ var chrome; chrome.types.fun ]; - chrome.windows.getFocused = function(callback) { + chrome.windows.getLastFocused = function(callback) { validate(arguments, arguments.callee.params); - sendRequest(GetFocusedWindow, null, callback); + sendRequest(GetLastFocusedWindow, null, callback); }; - chrome.windows.getFocused.params = [ + chrome.windows.getLastFocused.params = [ chrome.types.fun ]; @@ -137,11 +147,11 @@ var chrome; chrome.types.fun ]; - chrome.windows.createWindow = function(createData, callback) { + chrome.windows.create = function(createData, callback) { validate(arguments, arguments.callee.params); sendRequest(CreateWindow, createData, callback); }; - chrome.windows.createWindow.params = [ + chrome.windows.create.params = [ { type: "object", properties: { @@ -156,12 +166,12 @@ var chrome; chrome.types.optFun ]; - chrome.windows.removeWindow = function(windowId, callback) { + chrome.windows.remove = function(windowId, callback) { validate(arguments, arguments.callee.params); sendRequest(RemoveWindow, windowId, callback); }; - chrome.windows.removeWindow.params = [ + chrome.windows.remove.params = [ chrome.types.pInt, chrome.types.optFun ]; @@ -267,13 +277,14 @@ var chrome; chrome.types.optFun ]; - chrome.tabs.remove = function(tabId) { + chrome.tabs.remove = function(tabId, callback) { validate(arguments, arguments.callee.params); - sendRequest(RemoveTab, tabId); + sendRequest(RemoveTab, tabId, callback); }; chrome.tabs.remove.params = [ - chrome.types.pInt + chrome.types.pInt, + chrome.types.optFun ]; // Sends ({Tab}). diff --git a/chrome/test/data/extensions/samples/tabs/tabs_api.html b/chrome/test/data/extensions/samples/tabs/tabs_api.html index 56cd878..7a60db7 100644 --- a/chrome/test/data/extensions/samples/tabs/tabs_api.html +++ b/chrome/test/data/extensions/samples/tabs/tabs_api.html @@ -12,7 +12,7 @@ currentWindowId = undefined; function bootStrap() { chrome.windows.getCurrent(function(currentWindow) { currentWindowId = currentWindow.id; - chrome.windows.getFocused(function(focusedWindow) { + chrome.windows.getLastFocused(function(focusedWindow) { focusedWindowId = focusedWindow.id; loadWindowList(); }); @@ -117,6 +117,16 @@ function moveAll() { } } +function removeTab(tabId) { + try { + chrome.tabs.remove(tabId, function() { + appendToLog('tab: ' + tabId + ' removed.'); + }); + } catch (e) { + alert(e); + } +} + function appendToLog(logLine) { var log = document.getElementById('log'); log.innerHTML = '<div> > ' + logLine + '</div>' + log.innerHTML; @@ -197,7 +207,7 @@ function createWindow() { delete args.url; try { - chrome.windows.createWindow(args); + chrome.windows.create(args); } catch(e) { alert(e); } @@ -216,6 +226,16 @@ function refreshWindow(windowId) { }); } +function removeWindow(windowId) { + try { + chrome.windows.remove(windowId, function() { + appendToLog('window: ' + windowId + ' removed.'); + }); + } catch (e) { + alert(e); + } +} + function refreshTab(tabId) { chrome.tabs.get(tabId, function(tab) { var input = new JsExprContext(tab); @@ -276,11 +296,11 @@ function refreshSelectedTab(windowId) { <div><input type="checkbox" jsvalues="checked:selected; id:'selected_' + id" /> Selected</div> </div> <button onclick="updateTab(this.jstdata)" jsvalues=".jstdata:id">Update Tab</button> - <button onclick="chrome.tabs.remove(this.jstdata);" jsvalues=".jstdata:id">Close Tab</button> + <button onclick="removeTab(this.jstdata);" jsvalues=".jstdata:id">Close Tab</button> </div> </div> </div> - <button onclick="chrome.windows.removeWindow(this.jstdata);" jsvalues=".jstdata:id">Close Window</button> + <button onclick="removeWindow(this.jstdata);" jsvalues=".jstdata:id">Close Window</button> <button onclick="refreshSelectedTab(this.jstdata);" jsvalues=".jstdata:id">Refresh Selected Tab</button> </div> </div> @@ -329,7 +349,7 @@ function refreshSelectedTab(windowId) { <button onclick="updateAll();">Update All</button> <button onclick="moveAll();">Move All</button> <button onclick="clearLog();">-->Clear Log</button> - <button onclick="chrome.windows.createWindow();">New Window</button> + <button onclick="chrome.windows.create();">New Window</button> </div> <div id="log" style="background-color: #EEAAEE; margin: 20px; padding: 8px"> </div> |