summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser.vcproj5352
-rw-r--r--chrome/browser/extensions/extension.cc115
-rwxr-xr-xchrome/browser/extensions/extension_error_utils.cc25
-rwxr-xr-xchrome/browser/extensions/extension_error_utils.h24
-rw-r--r--chrome/browser/extensions/extension_function.cc9
-rw-r--r--chrome/browser/extensions/extension_function.h18
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.cc18
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.h4
-rw-r--r--chrome/browser/extensions/extension_tabs_module.cc174
-rw-r--r--chrome/browser/extensions/extension_tabs_module.h2
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc14
-rw-r--r--chrome/browser/renderer_host/render_view_host.h7
-rw-r--r--chrome/chrome.gyp2
-rw-r--r--chrome/common/render_messages_internal.h17
-rw-r--r--chrome/renderer/extensions/extension_api_client_unittest.cc34
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc45
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.h15
-rw-r--r--chrome/renderer/render_view.cc63
-rw-r--r--chrome/renderer/render_view.h12
-rw-r--r--chrome/renderer/renderer_resources.grd2
-rw-r--r--chrome/renderer/resources/extension_process_bindings.js55
-rw-r--r--chrome/test/data/extensions/samples/tabs/tabs_api.html30
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> &gt;&nbsp;' + 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>