summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-14 05:46:24 +0000
committerabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-14 05:46:24 +0000
commit1d89a82f68b6981928c0d32cf8ec37e3b07b5b9e (patch)
tree944c1af45521b01498fae7f92a3657277e152ca6
parent8dfc98d0c2e7291a1a0d215bb34bd891680e46f5 (diff)
downloadchromium_src-1d89a82f68b6981928c0d32cf8ec37e3b07b5b9e.zip
chromium_src-1d89a82f68b6981928c0d32cf8ec37e3b07b5b9e.tar.gz
chromium_src-1d89a82f68b6981928c0d32cf8ec37e3b07b5b9e.tar.bz2
Refactor the inner classes from SSLManager to their own files to reduce the complexity of SSLManager. Heading towards unit testability of this code.
TBR=jcampan TEST=No functionality change. Review URL: http://codereview.chromium.org/113391 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16041 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/browser.vcproj5380
-rw-r--r--chrome/browser/ssl/ssl_blocking_page.cc15
-rw-r--r--chrome/browser/ssl/ssl_blocking_page.h13
-rw-r--r--chrome/browser/ssl/ssl_cert_error_handler.h58
-rw-r--r--chrome/browser/ssl/ssl_error_handler.cc209
-rw-r--r--chrome/browser/ssl/ssl_error_handler.h176
-rw-r--r--chrome/browser/ssl/ssl_manager.cc278
-rw-r--r--chrome/browser/ssl/ssl_manager.h281
-rw-r--r--chrome/browser/ssl/ssl_mixed_content_handler.h38
-rw-r--r--chrome/browser/ssl/ssl_policy.cc101
-rw-r--r--chrome/browser/ssl/ssl_policy.h16
-rw-r--r--chrome/browser/ssl/ssl_request_info.h65
-rw-r--r--chrome/chrome.gyp5
13 files changed, 3362 insertions, 3273 deletions
diff --git a/chrome/browser/browser.vcproj b/chrome/browser/browser.vcproj
index 874f30e..646bd17 100644
--- a/chrome/browser/browser.vcproj
+++ b/chrome/browser/browser.vcproj
@@ -1,2680 +1,2700 @@
-<?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>
+<?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_cert_error_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_handler.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_info.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_error_info.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_host_state.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_host_state.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_manager.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_manager.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_mixed_content_handler.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_policy.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ssl\ssl_request_info.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Worker Host"
+ >
+ <File
+ RelativePath=".\worker_host\worker_process_host.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_process_host.h"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_service.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\worker_host\worker_service.h"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\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/ssl/ssl_blocking_page.cc b/chrome/browser/ssl/ssl_blocking_page.cc
index 24794c0..e7fe5bc 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/cert_store.h"
#include "chrome/browser/dom_operation_notification_details.h"
+#include "chrome/browser/ssl/ssl_cert_error_handler.h"
#include "chrome/browser/ssl/ssl_error_info.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
@@ -41,10 +42,10 @@ void RecordSSLBlockingPageStats(SSLBlockingPageEvent event) {
// Note that we always create a navigation entry with SSL errors.
// No error happening loading a sub-resource triggers an interstitial so far.
-SSLBlockingPage::SSLBlockingPage(SSLManager::CertError* error,
+SSLBlockingPage::SSLBlockingPage(SSLCertErrorHandler* handler,
Delegate* delegate)
- : InterstitialPage(error->GetTabContents(), true, error->request_url()),
- error_(error),
+ : InterstitialPage(handler->GetTabContents(), true, handler->request_url()),
+ handler_(handler),
delegate_(delegate),
delegate_has_been_notified_(false) {
RecordSSLBlockingPageStats(SHOW);
@@ -61,7 +62,7 @@ SSLBlockingPage::~SSLBlockingPage() {
std::string SSLBlockingPage::GetHTMLContents() {
// Let's build the html error page.
DictionaryValue strings;
- SSLErrorInfo error_info = delegate_->GetSSLErrorInfo(error_);
+ SSLErrorInfo error_info = delegate_->GetSSLErrorInfo(handler_);
strings.SetString(L"title",
l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_TITLE));
strings.SetString(L"headLine", error_info.title());
@@ -88,7 +89,7 @@ std::string SSLBlockingPage::GetHTMLContents() {
}
void SSLBlockingPage::UpdateEntry(NavigationEntry* entry) {
- const net::SSLInfo& ssl_info = error_->ssl_info();
+ const net::SSLInfo& ssl_info = handler_->ssl_info();
int cert_id = CertStore::GetSharedInstance()->StoreCert(
ssl_info.cert, tab()->render_view_host()->process()->pid());
@@ -130,14 +131,14 @@ void SSLBlockingPage::DontProceed() {
void SSLBlockingPage::NotifyDenyCertificate() {
DCHECK(!delegate_has_been_notified_);
- delegate_->OnDenyCertificate(error_);
+ delegate_->OnDenyCertificate(handler_);
delegate_has_been_notified_ = true;
}
void SSLBlockingPage::NotifyAllowCertificate() {
DCHECK(!delegate_has_been_notified_);
- delegate_->OnAllowCertificate(error_);
+ delegate_->OnAllowCertificate(handler_);
delegate_has_been_notified_ = true;
}
diff --git a/chrome/browser/ssl/ssl_blocking_page.h b/chrome/browser/ssl/ssl_blocking_page.h
index e6c6971..b83e16a 100644
--- a/chrome/browser/ssl/ssl_blocking_page.h
+++ b/chrome/browser/ssl/ssl_blocking_page.h
@@ -7,10 +7,11 @@
#include <string>
-#include "chrome/browser/ssl/ssl_manager.h"
+#include "chrome/browser/ssl/ssl_error_info.h"
#include "chrome/browser/tab_contents/interstitial_page.h"
class DictionaryValue;
+class SSLCertErrorHandler;
// This class is responsible for showing/hiding the interstitial page that is
// shown when a certificate error happens.
@@ -23,16 +24,16 @@ class SSLBlockingPage : public InterstitialPage {
public:
// Should return the information about the error that causes this blocking
// page.
- virtual SSLErrorInfo GetSSLErrorInfo(SSLManager::CertError* error) = 0;
+ virtual SSLErrorInfo GetSSLErrorInfo(SSLCertErrorHandler* handler) = 0;
// Notification that the user chose to reject the certificate.
- virtual void OnDenyCertificate(SSLManager::CertError* error) = 0;
+ virtual void OnDenyCertificate(SSLCertErrorHandler* handler) = 0;
// Notification that the user chose to accept the certificate.
- virtual void OnAllowCertificate(SSLManager::CertError* error) = 0;
+ virtual void OnAllowCertificate(SSLCertErrorHandler* handler) = 0;
};
- SSLBlockingPage(SSLManager::CertError* error, Delegate* delegate);
+ SSLBlockingPage(SSLCertErrorHandler* handler, Delegate* delegate);
virtual ~SSLBlockingPage();
// A method that sets strings in the specified dictionary from the passed
@@ -56,7 +57,7 @@ class SSLBlockingPage : public InterstitialPage {
// The error we represent. We will either call CancelRequest() or
// ContinueRequest() on this object.
- scoped_refptr<SSLManager::CertError> error_;
+ scoped_refptr<SSLCertErrorHandler> handler_;
// Our delegate. It provides useful information, like the title and details
// about this error.
diff --git a/chrome/browser/ssl/ssl_cert_error_handler.h b/chrome/browser/ssl/ssl_cert_error_handler.h
new file mode 100644
index 0000000..632927b
--- /dev/null
+++ b/chrome/browser/ssl/ssl_cert_error_handler.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
+#define CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
+
+#include "chrome/browser/ssl/ssl_error_handler.h"
+#include "chrome/browser/ssl/ssl_manager.h"
+#include "net/base/ssl_info.h"
+#include "net/base/x509_certificate.h"
+
+// A CertError represents an error that occurred with the certificate in an
+// SSL session. A CertError object exists both on the IO thread and on the UI
+// thread and allows us to cancel/continue a request it is associated with.
+class SSLCertErrorHandler : public SSLErrorHandler {
+ public:
+ // Construct on the IO thread.
+ // We mark this method as private because it is tricky to correctly
+ // construct a CertError object.
+ SSLCertErrorHandler(ResourceDispatcherHost* rdh,
+ URLRequest* request,
+ ResourceType::Type resource_type,
+ const std::string& frame_origin,
+ const std::string& main_frame_origin,
+ int cert_error,
+ net::X509Certificate* cert,
+ MessageLoop* ui_loop)
+ : SSLErrorHandler(rdh, request, resource_type, frame_origin,
+ main_frame_origin, ui_loop),
+ cert_error_(cert_error) {
+ DCHECK(request == resource_dispatcher_host_->GetURLRequest(request_id_));
+
+ // We cannot use the request->ssl_info(), it's not been initialized yet, so
+ // we have to set the fields manually.
+ ssl_info_.cert = cert;
+ ssl_info_.SetCertError(cert_error);
+ }
+
+ virtual SSLCertErrorHandler* AsSSLCertErrorHandler() { return this; }
+
+ // These accessors are available on either thread
+ const net::SSLInfo& ssl_info() const { return ssl_info_; }
+ int cert_error() const { return cert_error_; }
+
+ private:
+ // SSLErrorHandler methods
+ virtual void OnDispatchFailed() { CancelRequest(); }
+ virtual void OnDispatched() { manager_->OnCertError(this); }
+
+ // These read-only members may be accessed on any thread.
+ net::SSLInfo ssl_info_;
+ const int cert_error_; // The error we represent.
+
+ DISALLOW_COPY_AND_ASSIGN(SSLCertErrorHandler);
+};
+
+#endif // CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
diff --git a/chrome/browser/ssl/ssl_error_handler.cc b/chrome/browser/ssl/ssl_error_handler.cc
new file mode 100644
index 0000000..b5b435b
--- /dev/null
+++ b/chrome/browser/ssl/ssl_error_handler.cc
@@ -0,0 +1,209 @@
+// 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/ssl/ssl_error_handler.h"
+
+#include "base/message_loop.h"
+#include "chrome/browser/ssl/ssl_cert_error_handler.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/tab_contents/tab_util.h"
+#include "net/base/net_errors.h"
+#include "net/url_request/url_request.h"
+
+SSLErrorHandler::SSLErrorHandler(ResourceDispatcherHost* rdh,
+ URLRequest* request,
+ ResourceType::Type resource_type,
+ const std::string& frame_origin,
+ const std::string& main_frame_origin,
+ MessageLoop* ui_loop)
+ : ui_loop_(ui_loop),
+ io_loop_(MessageLoop::current()),
+ manager_(NULL),
+ request_id_(0, 0),
+ resource_dispatcher_host_(rdh),
+ request_url_(request->url()),
+ resource_type_(resource_type),
+ frame_origin_(frame_origin),
+ main_frame_origin_(main_frame_origin),
+ request_has_been_notified_(false) {
+ DCHECK(MessageLoop::current() != ui_loop);
+
+ ResourceDispatcherHost::ExtraRequestInfo* info =
+ ResourceDispatcherHost::ExtraInfoForRequest(request);
+ request_id_.process_id = info->process_id;
+ request_id_.request_id = info->request_id;
+
+ if (!tab_util::GetTabContentsID(request,
+ &render_process_host_id_,
+ &tab_contents_id_))
+ NOTREACHED();
+
+ // This makes sure we don't disappear on the IO thread until we've given an
+ // answer to the URLRequest.
+ //
+ // Release in CompleteCancelRequest, CompleteContinueRequest,
+ // CompleteStartRequest or CompleteTakeNoAction.
+ AddRef();
+}
+
+void SSLErrorHandler::Dispatch() {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ TabContents* tab_contents =
+ tab_util::GetTabContentsByID(render_process_host_id_, tab_contents_id_);
+
+ if (!tab_contents) {
+ // We arrived on the UI thread, but the tab we're looking for is no longer
+ // here.
+ OnDispatchFailed();
+ return;
+ }
+
+ // Hand ourselves off to the SSLManager.
+ manager_ = tab_contents->controller().ssl_manager();
+ OnDispatched();
+}
+
+TabContents* SSLErrorHandler::GetTabContents() {
+ return tab_util::GetTabContentsByID(render_process_host_id_,
+ tab_contents_id_);
+}
+
+void SSLErrorHandler::CancelRequest() {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ // We need to complete this task on the IO thread.
+ io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &SSLErrorHandler::CompleteCancelRequest,
+ net::ERR_ABORTED));
+}
+
+void SSLErrorHandler::DenyRequest() {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ // We need to complete this task on the IO thread.
+ io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &SSLErrorHandler::CompleteCancelRequest,
+ net::ERR_INSECURE_RESPONSE));
+}
+
+void SSLErrorHandler::ContinueRequest() {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ // We need to complete this task on the IO thread.
+ io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &SSLErrorHandler::CompleteContinueRequest));
+}
+
+void SSLErrorHandler::StartRequest(FilterPolicy::Type filter_policy) {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ // We need to complete this task on the IO thread.
+ io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &SSLErrorHandler::CompleteStartRequest, filter_policy));
+}
+
+void SSLErrorHandler::TakeNoAction() {
+ DCHECK(MessageLoop::current() == ui_loop_);
+
+ // We need to complete this task on the IO thread.
+ io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &SSLErrorHandler::CompleteTakeNoAction));
+}
+
+void SSLErrorHandler::CompleteCancelRequest(int error) {
+ DCHECK(MessageLoop::current() == io_loop_);
+
+ // It is important that we notify the URLRequest only once. If we try to
+ // notify the request twice, it may no longer exist and |this| might have
+ // already have been deleted.
+ DCHECK(!request_has_been_notified_);
+
+ if (!request_has_been_notified_) {
+ URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
+ if (request) {
+ // The request can be NULL if it was cancelled by the renderer (as the
+ // result of the user navigating to a new page from the location bar).
+ DLOG(INFO) << "CompleteCancelRequest() url: " << request->url().spec();
+ SSLCertErrorHandler* cert_error = AsSSLCertErrorHandler();
+ if (cert_error)
+ request->SimulateSSLError(error, cert_error->ssl_info());
+ else
+ request->SimulateError(error);
+ }
+ request_has_been_notified_ = true;
+
+ // We're done with this object on the IO thread.
+ Release();
+ }
+}
+
+void SSLErrorHandler::CompleteContinueRequest() {
+ DCHECK(MessageLoop::current() == io_loop_);
+
+ // It is important that we notify the URLRequest only once. If we try to
+ // notify the request twice, it may no longer exist and |this| might have
+ // already have been deleted.
+ DCHECK(!request_has_been_notified_);
+
+ if (!request_has_been_notified_) {
+ URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
+ if (request) {
+ // The request can be NULL if it was cancelled by the renderer (as the
+ // result of the user navigating to a new page from the location bar).
+ DLOG(INFO) << "CompleteContinueRequest() url: " << request->url().spec();
+ request->ContinueDespiteLastError();
+ }
+ request_has_been_notified_ = true;
+
+ // We're done with this object on the IO thread.
+ Release();
+ }
+}
+
+void SSLErrorHandler::CompleteStartRequest(FilterPolicy::Type filter_policy) {
+ DCHECK(MessageLoop::current() == io_loop_);
+
+ // It is important that we notify the URLRequest only once. If we try to
+ // notify the request twice, it may no longer exist and |this| might have
+ // already have been deleted.
+ DCHECK(!request_has_been_notified_);
+
+ if (request_has_been_notified_)
+ return;
+
+ URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
+ if (request) {
+ // The request can be NULL if it was cancelled by the renderer (as the
+ // result of the user navigating to a new page from the location bar).
+ DLOG(INFO) << "CompleteStartRequest() url: " << request->url().spec();
+ // The request should not have been started (SUCCESS is the initial state).
+ DCHECK(request->status().status() == URLRequestStatus::SUCCESS);
+ ResourceDispatcherHost::ExtraRequestInfo* info =
+ ResourceDispatcherHost::ExtraInfoForRequest(request);
+ info->filter_policy = filter_policy;
+ request->Start();
+ }
+ request_has_been_notified_ = true;
+
+ // We're done with this object on the IO thread.
+ Release();
+}
+
+void SSLErrorHandler::CompleteTakeNoAction() {
+ DCHECK(MessageLoop::current() == io_loop_);
+
+ // It is important that we notify the URLRequest only once. If we try to
+ // notify the request twice, it may no longer exist and |this| might have
+ // already have been deleted.
+ DCHECK(!request_has_been_notified_);
+
+ if (!request_has_been_notified_) {
+ request_has_been_notified_ = true;
+
+ // We're done with this object on the IO thread.
+ Release();
+ }
+}
+
diff --git a/chrome/browser/ssl/ssl_error_handler.h b/chrome/browser/ssl/ssl_error_handler.h
new file mode 100644
index 0000000..9ef1b04
--- /dev/null
+++ b/chrome/browser/ssl/ssl_error_handler.h
@@ -0,0 +1,176 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_
+#define CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/ref_counted.h"
+#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
+#include "chrome/common/filter_policy.h"
+#include "googleurl/src/gurl.h"
+#include "webkit/glue/resource_type.h"
+
+class MessageLoop;
+class SSLCertErrorHandler;
+class SSLManager;
+class TabContents;
+class URLRequest;
+
+// An SSLErrorHandler carries information from the IO thread to the UI thread
+// and is dispatched to the appropriate SSLManager when it arrives on the
+// UI thread. Subclasses should override the OnDispatched/OnDispatchFailed
+// methods to implement the actions that should be taken on the UI thread.
+// These methods can call the different convenience methods ContinueRequest/
+// CancelRequest/StartRequest to perform any required action on the URLRequest
+// the ErrorHandler was created with.
+//
+// IMPORTANT NOTE:
+//
+// If you are not doing anything in OnDispatched/OnDispatchFailed, make sure
+// you call TakeNoAction(). This is necessary for ensuring the instance is
+// not leaked.
+//
+class SSLErrorHandler : public base::RefCountedThreadSafe<SSLErrorHandler> {
+ public:
+ virtual ~SSLErrorHandler() { }
+
+ virtual SSLCertErrorHandler* AsSSLCertErrorHandler() { return NULL; }
+
+ // Find the appropriate SSLManager for the URLRequest and begin handling
+ // this error.
+ //
+ // Call on UI thread.
+ void Dispatch();
+
+ // Available on either thread.
+ const GURL& request_url() const { return request_url_; }
+
+ // Available on either thread.
+ ResourceType::Type resource_type() const { return resource_type_; }
+
+ // Available on either thread.
+ const std::string& frame_origin() const { return frame_origin_; }
+
+ // Available on either thread.
+ const std::string& main_frame_origin() const { return main_frame_origin_; }
+
+ // Call on the UI thread.
+ SSLManager* manager() const { return manager_; }
+
+ // Returns the TabContents this object is associated with. Should be
+ // called from the UI thread.
+ TabContents* GetTabContents();
+
+ // Cancels the associated URLRequest.
+ // This method can be called from OnDispatchFailed and OnDispatched.
+ void CancelRequest();
+
+ // Continue the URLRequest ignoring any previous errors. Note that some
+ // errors cannot be ignored, in which case this will result in the request
+ // being canceled.
+ // This method can be called from OnDispatchFailed and OnDispatched.
+ void ContinueRequest();
+
+ // Cancels the associated URLRequest and mark it as denied. The renderer
+ // processes such request in a special manner, optionally replacing them
+ // with alternate content (typically frames content is replaced with a
+ // warning message).
+ // This method can be called from OnDispatchFailed and OnDispatched.
+ void DenyRequest();
+
+ // Starts the associated URLRequest. |filter_policy| specifies whether the
+ // ResourceDispatcher should attempt to filter the loaded content in order
+ // to make it secure (ex: images are made slightly transparent and are
+ // stamped).
+ // Should only be called when the URLRequest has not already been started.
+ // This method can be called from OnDispatchFailed and OnDispatched.
+ void StartRequest(FilterPolicy::Type filter_policy);
+
+ // Does nothing on the URLRequest but ensures the current instance ref
+ // count is decremented appropriately. Subclasses that do not want to
+ // take any specific actions in their OnDispatched/OnDispatchFailed should
+ // call this.
+ void TakeNoAction();
+
+ protected:
+ // Construct on the IO thread.
+ SSLErrorHandler(ResourceDispatcherHost* resource_dispatcher_host,
+ URLRequest* request,
+ ResourceType::Type resource_type,
+ const std::string& frame_origin,
+ const std::string& main_frame_origin,
+ MessageLoop* ui_loop);
+
+ // The following 2 methods are the methods subclasses should implement.
+ virtual void OnDispatchFailed() { TakeNoAction(); }
+
+ // Can use the manager_ member.
+ virtual void OnDispatched() { TakeNoAction(); }
+
+ // We cache the message loops to be able to proxy events across the thread
+ // boundaries.
+ MessageLoop* ui_loop_;
+ MessageLoop* io_loop_;
+
+ // Should only be accessed on the UI thread.
+ SSLManager* manager_; // Our manager.
+
+ // The id of the URLRequest associated with this object.
+ // Should only be accessed from the IO thread.
+ ResourceDispatcherHost::GlobalRequestID request_id_;
+
+ // The ResourceDispatcherHost we are associated with.
+ ResourceDispatcherHost* resource_dispatcher_host_;
+
+ private:
+ // Completes the CancelRequest operation on the IO thread.
+ // Call on the IO thread.
+ void CompleteCancelRequest(int error);
+
+ // Completes the ContinueRequest operation on the IO thread.
+ //
+ // Call on the IO thread.
+ void CompleteContinueRequest();
+
+ // Completes the StartRequest operation on the IO thread.
+ // Call on the IO thread.
+ void CompleteStartRequest(FilterPolicy::Type filter_policy);
+
+ // Derefs this instance.
+ // Call on the IO thread.
+ void CompleteTakeNoAction();
+
+ // We use these members to find the correct SSLManager when we arrive on
+ // the UI thread.
+ int render_process_host_id_;
+ int tab_contents_id_;
+
+ // The URL that we requested.
+ // This read-only member can be accessed on any thread.
+ const GURL request_url_;
+
+ // What kind of resource is associated with the requested that generated
+ // that error.
+ // This read-only member can be accessed on any thread.
+ const ResourceType::Type resource_type_;
+
+ // The origin of the frame associated with this request.
+ // This read-only member can be accessed on any thread.
+ const std::string frame_origin_;
+
+ // The origin of the main frame associated with this request.
+ // This read-only member can be accessed on any thread.
+ const std::string main_frame_origin_;
+
+ // A flag to make sure we notify the URLRequest exactly once.
+ // Should only be accessed on the IO thread
+ bool request_has_been_notified_;
+
+ DISALLOW_COPY_AND_ASSIGN(SSLErrorHandler);
+};
+
+#endif // CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_
diff --git a/chrome/browser/ssl/ssl_manager.cc b/chrome/browser/ssl/ssl_manager.cc
index 0510810..c46a20b 100644
--- a/chrome/browser/ssl/ssl_manager.cc
+++ b/chrome/browser/ssl/ssl_manager.cc
@@ -12,9 +12,13 @@
#include "chrome/browser/load_from_memory_cache_details.h"
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/renderer_host/resource_request_details.h"
+#include "chrome/browser/ssl/ssl_cert_error_handler.h"
#include "chrome/browser/ssl/ssl_error_info.h"
+#include "chrome/browser/ssl/ssl_error_handler.h"
#include "chrome/browser/ssl/ssl_host_state.h"
+#include "chrome/browser/ssl/ssl_mixed_content_handler.h"
#include "chrome/browser/ssl/ssl_policy.h"
+#include "chrome/browser/ssl/ssl_request_info.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
@@ -90,9 +94,6 @@ class SSLInfoBarDelegate : public ConfirmInfoBarDelegate {
DISALLOW_COPY_AND_ASSIGN(SSLInfoBarDelegate);
};
-////////////////////////////////////////////////////////////////////////////////
-// SSLManager
-
// static
void SSLManager::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterIntegerPref(prefs::kMixedContentFiltering,
@@ -231,230 +232,6 @@ bool SSLManager::ProcessedSSLErrorFromRequest() const {
return net::IsCertStatusError(entry->ssl().cert_status());
}
-////////////////////////////////////////////////////////////////////////////////
-// ErrorHandler
-
-SSLManager::ErrorHandler::ErrorHandler(ResourceDispatcherHost* rdh,
- URLRequest* request,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- MessageLoop* ui_loop)
- : ui_loop_(ui_loop),
- io_loop_(MessageLoop::current()),
- manager_(NULL),
- request_id_(0, 0),
- resource_dispatcher_host_(rdh),
- request_url_(request->url()),
- resource_type_(resource_type),
- frame_origin_(frame_origin),
- main_frame_origin_(main_frame_origin),
- request_has_been_notified_(false) {
- DCHECK(MessageLoop::current() != ui_loop);
-
- ResourceDispatcherHost::ExtraRequestInfo* info =
- ResourceDispatcherHost::ExtraInfoForRequest(request);
- request_id_.process_id = info->process_id;
- request_id_.request_id = info->request_id;
-
- if (!tab_util::GetTabContentsID(request,
- &render_process_host_id_,
- &tab_contents_id_))
- NOTREACHED();
-
- // This makes sure we don't disappear on the IO thread until we've given an
- // answer to the URLRequest.
- //
- // Release in CompleteCancelRequest, CompleteContinueRequest,
- // CompleteStartRequest or CompleteTakeNoAction.
- AddRef();
-}
-
-void SSLManager::ErrorHandler::Dispatch() {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- TabContents* tab_contents =
- tab_util::GetTabContentsByID(render_process_host_id_, tab_contents_id_);
-
- if (!tab_contents) {
- // We arrived on the UI thread, but the tab we're looking for is no longer
- // here.
- OnDispatchFailed();
- return;
- }
-
- // Hand ourselves off to the SSLManager.
- manager_ = tab_contents->controller().ssl_manager();
- OnDispatched();
-}
-
-TabContents* SSLManager::ErrorHandler::GetTabContents() {
- return tab_util::GetTabContentsByID(render_process_host_id_,
- tab_contents_id_);
-}
-
-void SSLManager::ErrorHandler::CancelRequest() {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- // We need to complete this task on the IO thread.
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SSLManager::ErrorHandler::CompleteCancelRequest,
- net::ERR_ABORTED));
-}
-
-void SSLManager::ErrorHandler::DenyRequest() {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- // We need to complete this task on the IO thread.
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SSLManager::ErrorHandler::CompleteCancelRequest,
- net::ERR_INSECURE_RESPONSE));
-}
-
-void SSLManager::ErrorHandler::ContinueRequest() {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- // We need to complete this task on the IO thread.
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SSLManager::ErrorHandler::CompleteContinueRequest));
-}
-
-void SSLManager::ErrorHandler::StartRequest(FilterPolicy::Type filter_policy) {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- // We need to complete this task on the IO thread.
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SSLManager::ErrorHandler::CompleteStartRequest, filter_policy));
-}
-
-void SSLManager::ErrorHandler::TakeNoAction() {
- DCHECK(MessageLoop::current() == ui_loop_);
-
- // We need to complete this task on the IO thread.
- io_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SSLManager::ErrorHandler::CompleteTakeNoAction));
-}
-
-void SSLManager::ErrorHandler::CompleteCancelRequest(int error) {
- DCHECK(MessageLoop::current() == io_loop_);
-
- // It is important that we notify the URLRequest only once. If we try to
- // notify the request twice, it may no longer exist and |this| might have
- // already have been deleted.
- DCHECK(!request_has_been_notified_);
-
- if (!request_has_been_notified_) {
- URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
- if (request) {
- // The request can be NULL if it was cancelled by the renderer (as the
- // result of the user navigating to a new page from the location bar).
- DLOG(INFO) << "CompleteCancelRequest() url: " << request->url().spec();
- SSLManager::CertError* cert_error = AsCertError();
- if (cert_error)
- request->SimulateSSLError(error, cert_error->ssl_info());
- else
- request->SimulateError(error);
- }
- request_has_been_notified_ = true;
-
- // We're done with this object on the IO thread.
- Release();
- }
-}
-
-void SSLManager::ErrorHandler::CompleteContinueRequest() {
- DCHECK(MessageLoop::current() == io_loop_);
-
- // It is important that we notify the URLRequest only once. If we try to
- // notify the request twice, it may no longer exist and |this| might have
- // already have been deleted.
- DCHECK(!request_has_been_notified_);
-
- if (!request_has_been_notified_) {
- URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
- if (request) {
- // The request can be NULL if it was cancelled by the renderer (as the
- // result of the user navigating to a new page from the location bar).
- DLOG(INFO) << "CompleteContinueRequest() url: " << request->url().spec();
- request->ContinueDespiteLastError();
- }
- request_has_been_notified_ = true;
-
- // We're done with this object on the IO thread.
- Release();
- }
-}
-
-void SSLManager::ErrorHandler::CompleteStartRequest(
- FilterPolicy::Type filter_policy) {
- DCHECK(MessageLoop::current() == io_loop_);
-
- // It is important that we notify the URLRequest only once. If we try to
- // notify the request twice, it may no longer exist and |this| might have
- // already have been deleted.
- DCHECK(!request_has_been_notified_);
-
- if (request_has_been_notified_)
- return;
-
- URLRequest* request = resource_dispatcher_host_->GetURLRequest(request_id_);
- if (request) {
- // The request can be NULL if it was cancelled by the renderer (as the
- // result of the user navigating to a new page from the location bar).
- DLOG(INFO) << "CompleteStartRequest() url: " << request->url().spec();
- // The request should not have been started (SUCCESS is the initial state).
- DCHECK(request->status().status() == URLRequestStatus::SUCCESS);
- ResourceDispatcherHost::ExtraRequestInfo* info =
- ResourceDispatcherHost::ExtraInfoForRequest(request);
- info->filter_policy = filter_policy;
- request->Start();
- }
- request_has_been_notified_ = true;
-
- // We're done with this object on the IO thread.
- Release();
-}
-
-void SSLManager::ErrorHandler::CompleteTakeNoAction() {
- DCHECK(MessageLoop::current() == io_loop_);
-
- // It is important that we notify the URLRequest only once. If we try to
- // notify the request twice, it may no longer exist and |this| might have
- // already have been deleted.
- DCHECK(!request_has_been_notified_);
-
- if (!request_has_been_notified_) {
- request_has_been_notified_ = true;
-
- // We're done with this object on the IO thread.
- Release();
- }
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
-// CertError
-
-SSLManager::CertError::CertError(
- ResourceDispatcherHost* rdh,
- URLRequest* request,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- int cert_error,
- net::X509Certificate* cert,
- MessageLoop* ui_loop)
- : ErrorHandler(rdh, request, resource_type, frame_origin,
- main_frame_origin, ui_loop),
- cert_error_(cert_error) {
- DCHECK(request == resource_dispatcher_host_->GetURLRequest(request_id_));
-
- // We cannot use the request->ssl_info(), it's not been initialized yet, so
- // we have to set the fields manually.
- ssl_info_.cert = cert;
- ssl_info_.SetCertError(cert_error);
-}
-
// static
void SSLManager::OnSSLCertificateError(ResourceDispatcherHost* rdh,
URLRequest* request,
@@ -468,18 +245,18 @@ void SSLManager::OnSSLCertificateError(ResourceDispatcherHost* rdh,
ResourceDispatcherHost::ExtraInfoForRequest(request);
DCHECK(info);
- // A certificate error occurred. Construct a CertError object and hand it
- // over to the UI thread for processing.
+ // A certificate error occurred. Construct a SSLCertErrorHandler object and
+ // hand it over to the UI thread for processing.
ui_loop->PostTask(FROM_HERE,
- NewRunnableMethod(new CertError(rdh,
- request,
- info->resource_type,
- info->frame_origin,
- info->main_frame_origin,
- cert_error,
- cert,
- ui_loop),
- &CertError::Dispatch));
+ NewRunnableMethod(new SSLCertErrorHandler(rdh,
+ request,
+ info->resource_type,
+ info->frame_origin,
+ info->main_frame_origin,
+ cert_error,
+ cert,
+ ui_loop),
+ &SSLCertErrorHandler::Dispatch));
}
// static
@@ -500,21 +277,22 @@ bool SSLManager::ShouldStartRequest(ResourceDispatcherHost* rdh,
ui_loop->PostTask(FROM_HERE,
- NewRunnableMethod(new MixedContentHandler(rdh, request,
- info->resource_type,
- info->frame_origin,
- info->main_frame_origin,
- info->process_id,
- ui_loop),
- &MixedContentHandler::Dispatch));
+ NewRunnableMethod(new SSLMixedContentHandler(rdh,
+ request,
+ info->resource_type,
+ info->frame_origin,
+ info->main_frame_origin,
+ info->process_id,
+ ui_loop),
+ &SSLMixedContentHandler::Dispatch));
return false;
}
-void SSLManager::OnCertError(CertError* error) {
- delegate()->OnCertError(error);
+void SSLManager::OnCertError(SSLCertErrorHandler* handler) {
+ delegate()->OnCertError(handler);
}
-void SSLManager::OnMixedContent(MixedContentHandler* handler) {
+void SSLManager::OnMixedContent(SSLMixedContentHandler* handler) {
delegate()->OnMixedContent(handler);
}
@@ -582,7 +360,7 @@ void SSLManager::DidLoadFromMemoryCache(LoadFromMemoryCacheDetails* details) {
// caches sub-resources.
// This resource must have been loaded with FilterPolicy::DONT_FILTER because
// filtered resouces aren't cachable.
- scoped_refptr<RequestInfo> info = new RequestInfo(
+ scoped_refptr<SSLRequestInfo> info = new SSLRequestInfo(
this,
details->url(),
ResourceType::SUB_RESOURCE,
@@ -646,7 +424,7 @@ void SSLManager::DidFailProvisionalLoadWithError(
void SSLManager::DidStartResourceResponse(ResourceRequestDetails* details) {
DCHECK(details);
- scoped_refptr<RequestInfo> info = new RequestInfo(
+ scoped_refptr<SSLRequestInfo> info = new SSLRequestInfo(
this,
details->url(),
details->resource_type(),
diff --git a/chrome/browser/ssl/ssl_manager.h b/chrome/browser/ssl/ssl_manager.h
index 5e6e77d..da77c05 100644
--- a/chrome/browser/ssl/ssl_manager.h
+++ b/chrome/browser/ssl/ssl_manager.h
@@ -32,8 +32,12 @@ class NavigationController;
class PrefService;
class ResourceRedirectDetails;
class ResourceRequestDetails;
+class SSLCertErrorHandler;
+class SSLErrorHandler;
class SSLErrorInfo;
class SSLHostState;
+class SSLMixedContentHandler;
+class SSLRequestInfo;
class Task;
class URLRequest;
class TabContents;
@@ -48,273 +52,6 @@ class TabContents;
class SSLManager : public NotificationObserver {
public:
- class CertError;
-
- // An ErrorHandler carries information from the IO thread to the UI thread
- // and is dispatched to the appropriate SSLManager when it arrives on the
- // UI thread. Subclasses should override the OnDispatched/OnDispatchFailed
- // methods to implement the actions that should be taken on the UI thread.
- // These methods can call the different convenience methods ContinueRequest/
- // CancelRequest/StartRequest to perform any required action on the URLRequest
- // the ErrorHandler was created with.
- // IMPORTANT NOTE: if you are not doing anything in
- // OnDispatched/OnDispatchFailed, make sure you call TakeNoAction(). This is
- // necessary for ensuring the instance is not leaked.
- class ErrorHandler : public base::RefCountedThreadSafe<ErrorHandler> {
- public:
- virtual ~ErrorHandler() { }
-
- virtual CertError* AsCertError() { return NULL; }
-
- // Find the appropriate SSLManager for the URLRequest and begin handling
- // this error.
- //
- // Call on UI thread.
- void Dispatch();
-
- // Available on either thread.
- const GURL& request_url() const { return request_url_; }
-
- // Available on either thread.
- ResourceType::Type resource_type() const { return resource_type_; }
-
- // Available on either thread.
- const std::string& frame_origin() const { return frame_origin_; }
-
- // Available on either thread.
- const std::string& main_frame_origin() const { return main_frame_origin_; }
-
- // Call on the UI thread.
- SSLManager* manager() const { return manager_; }
-
- // Returns the TabContents this object is associated with. Should be
- // called from the UI thread.
- TabContents* GetTabContents();
-
- // Cancels the associated URLRequest.
- // This method can be called from OnDispatchFailed and OnDispatched.
- void CancelRequest();
-
- // Continue the URLRequest ignoring any previous errors. Note that some
- // errors cannot be ignored, in which case this will result in the request
- // being canceled.
- // This method can be called from OnDispatchFailed and OnDispatched.
- void ContinueRequest();
-
- // Cancels the associated URLRequest and mark it as denied. The renderer
- // processes such request in a special manner, optionally replacing them
- // with alternate content (typically frames content is replaced with a
- // warning message).
- // This method can be called from OnDispatchFailed and OnDispatched.
- void DenyRequest();
-
- // Starts the associated URLRequest. |filter_policy| specifies whether the
- // ResourceDispatcher should attempt to filter the loaded content in order
- // to make it secure (ex: images are made slightly transparent and are
- // stamped).
- // Should only be called when the URLRequest has not already been started.
- // This method can be called from OnDispatchFailed and OnDispatched.
- void StartRequest(FilterPolicy::Type filter_policy);
-
- // Does nothing on the URLRequest but ensures the current instance ref
- // count is decremented appropriately. Subclasses that do not want to
- // take any specific actions in their OnDispatched/OnDispatchFailed should
- // call this.
- void TakeNoAction();
-
- protected:
- // Construct on the IO thread.
- ErrorHandler(ResourceDispatcherHost* resource_dispatcher_host,
- URLRequest* request,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- MessageLoop* ui_loop);
-
- // The following 2 methods are the methods subclasses should implement.
- virtual void OnDispatchFailed() { TakeNoAction(); }
-
- // Can use the manager_ member.
- virtual void OnDispatched() { TakeNoAction(); }
-
- // We cache the message loops to be able to proxy events across the thread
- // boundaries.
- MessageLoop* ui_loop_;
- MessageLoop* io_loop_;
-
- // Should only be accessed on the UI thread.
- SSLManager* manager_; // Our manager.
-
- // The id of the URLRequest associated with this object.
- // Should only be accessed from the IO thread.
- ResourceDispatcherHost::GlobalRequestID request_id_;
-
- // The ResourceDispatcherHost we are associated with.
- ResourceDispatcherHost* resource_dispatcher_host_;
-
- private:
- // Completes the CancelRequest operation on the IO thread.
- // Call on the IO thread.
- void CompleteCancelRequest(int error);
-
- // Completes the ContinueRequest operation on the IO thread.
- //
- // Call on the IO thread.
- void CompleteContinueRequest();
-
- // Completes the StartRequest operation on the IO thread.
- // Call on the IO thread.
- void CompleteStartRequest(FilterPolicy::Type filter_policy);
-
- // Derefs this instance.
- // Call on the IO thread.
- void CompleteTakeNoAction();
-
- // We use these members to find the correct SSLManager when we arrive on
- // the UI thread.
- int render_process_host_id_;
- int tab_contents_id_;
-
- // The URL that we requested.
- // This read-only member can be accessed on any thread.
- const GURL request_url_;
-
- // What kind of resource is associated with the requested that generated
- // that error.
- // This read-only member can be accessed on any thread.
- const ResourceType::Type resource_type_;
-
- // The origin of the frame associated with this request.
- // This read-only member can be accessed on any thread.
- const std::string frame_origin_;
-
- // The origin of the main frame associated with this request.
- // This read-only member can be accessed on any thread.
- const std::string main_frame_origin_;
-
- // A flag to make sure we notify the URLRequest exactly once.
- // Should only be accessed on the IO thread
- bool request_has_been_notified_;
-
- DISALLOW_COPY_AND_ASSIGN(ErrorHandler);
- };
-
- // A CertError represents an error that occurred with the certificate in an
- // SSL session. A CertError object exists both on the IO thread and on the UI
- // thread and allows us to cancel/continue a request it is associated with.
- class CertError : public ErrorHandler {
- public:
-
- virtual CertError* AsCertError() { return this; }
-
- // These accessors are available on either thread
- const net::SSLInfo& ssl_info() const { return ssl_info_; }
- int cert_error() const { return cert_error_; }
-
- private:
- // SSLManager is responsible for creating CertError objects.
- friend class SSLManager;
-
- // Construct on the IO thread.
- // We mark this method as private because it is tricky to correctly
- // construct a CertError object.
- CertError(ResourceDispatcherHost* resource_dispatcher_host,
- URLRequest* request,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- int cert_error,
- net::X509Certificate* cert,
- MessageLoop* ui_loop);
-
- // ErrorHandler methods
- virtual void OnDispatchFailed() { CancelRequest(); }
- virtual void OnDispatched() { manager_->OnCertError(this); }
-
- // These read-only members can be accessed on any thread.
- net::SSLInfo ssl_info_;
- const int cert_error_; // The error we represent.
-
- DISALLOW_COPY_AND_ASSIGN(CertError);
- };
-
- // The MixedContentHandler class is used to query what to do with
- // mixed content, from the IO thread to the UI thread.
- class MixedContentHandler : public ErrorHandler {
- public:
- // Created on the IO thread.
- MixedContentHandler(ResourceDispatcherHost* rdh,
- URLRequest* request,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- int pid,
- MessageLoop* ui_loop)
- : ErrorHandler(rdh, request, resource_type, frame_origin,
- main_frame_origin, ui_loop),
- pid_(pid) {}
-
- int pid() const { return pid_; }
-
- protected:
- virtual void OnDispatchFailed() { TakeNoAction(); }
- virtual void OnDispatched() { manager()->OnMixedContent(this); }
-
- private:
- int pid_;
-
- DISALLOW_COPY_AND_ASSIGN(MixedContentHandler);
- };
-
- // RequestInfo wraps up the information SSLPolicy needs about a request in
- // order to update our security IU. RequestInfo is RefCounted in case we need
- // to deal with the request asynchronously.
- class RequestInfo : public base::RefCounted<RequestInfo> {
- public:
- RequestInfo(SSLManager* manager,
- const GURL& url,
- ResourceType::Type resource_type,
- const std::string& frame_origin,
- const std::string& main_frame_origin,
- FilterPolicy::Type filter_policy,
- int pid,
- int ssl_cert_id,
- int ssl_cert_status)
- : manager_(manager),
- url_(url),
- resource_type_(resource_type),
- frame_origin_(frame_origin),
- main_frame_origin_(main_frame_origin),
- filter_policy_(filter_policy),
- pid_(pid),
- ssl_cert_id_(ssl_cert_id),
- ssl_cert_status_(ssl_cert_status) {
- }
-
- SSLManager* manager() const { return manager_; }
- const GURL& url() const { return url_; }
- ResourceType::Type resource_type() const { return resource_type_; }
- const std::string& frame_origin() const { return frame_origin_; }
- const std::string& main_frame_origin() const { return main_frame_origin_; }
- FilterPolicy::Type filter_policy() const { return filter_policy_; }
- int pid() const { return pid_; }
- int ssl_cert_id() const { return ssl_cert_id_; }
- int ssl_cert_status() const { return ssl_cert_status_; }
-
- private:
- SSLManager* manager_;
- GURL url_;
- ResourceType::Type resource_type_;
- std::string frame_origin_;
- std::string main_frame_origin_;
- FilterPolicy::Type filter_policy_;
- int pid_;
- int ssl_cert_id_;
- int ssl_cert_status_;
-
- DISALLOW_COPY_AND_ASSIGN(RequestInfo);
- };
-
// The SSLManager will ask its delegate to decide how to handle events
// relevant to SSL. Delegates are expected to be stateless and intended to be
// easily implementable.
@@ -327,15 +64,15 @@ class SSLManager : public NotificationObserver {
class Delegate {
public:
// An error occurred with the certificate in an SSL connection.
- virtual void OnCertError(CertError* error) = 0;
+ virtual void OnCertError(SSLCertErrorHandler* handler) = 0;
// A request for a mixed-content resource was made. Note that the resource
// request was not started yet and the delegate is responsible for starting
// it.
- virtual void OnMixedContent(MixedContentHandler* handler) = 0;
+ virtual void OnMixedContent(SSLMixedContentHandler* handler) = 0;
// We have started a resource request with the given info.
- virtual void OnRequestStarted(RequestInfo* info) = 0;
+ virtual void OnRequestStarted(SSLRequestInfo* info) = 0;
// Update the SSL information in |entry| to match the current state.
virtual void UpdateEntry(SSLManager* manager, NavigationEntry* entry) = 0;
@@ -438,14 +175,14 @@ class SSLManager : public NotificationObserver {
// the SSL manager. The error originated from the ResourceDispatcherHost.
//
// Called on the UI thread.
- void OnCertError(CertError* error);
+ void OnCertError(SSLCertErrorHandler* handler);
// Called by MixedContentHandler::Dispatch to kick off processing of the
// mixed-content resource request. The info originated from the
// ResourceDispatcherHost.
//
// Called on the UI thread.
- void OnMixedContent(MixedContentHandler* handler);
+ void OnMixedContent(SSLMixedContentHandler* handler);
// Entry point for navigation. This function begins the process of updating
// the security UI when the main frame navigates to a new URL.
diff --git a/chrome/browser/ssl/ssl_mixed_content_handler.h b/chrome/browser/ssl/ssl_mixed_content_handler.h
new file mode 100644
index 0000000..afb7e13
--- /dev/null
+++ b/chrome/browser/ssl/ssl_mixed_content_handler.h
@@ -0,0 +1,38 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SSL_SSL_MIXED_CONTENT_HANDLER_H_
+#define CHROME_BROWSER_SSL_SSL_MIXED_CONTENT_HANDLER_H_
+
+#include "chrome/browser/ssl/ssl_error_handler.h"
+
+// The SSLMixedContentHandler class is used to query what to do with
+// mixed content, from the IO thread to the UI thread.
+class SSLMixedContentHandler : public SSLErrorHandler {
+ public:
+ // Created on the IO thread.
+ SSLMixedContentHandler(ResourceDispatcherHost* rdh,
+ URLRequest* request,
+ ResourceType::Type resource_type,
+ const std::string& frame_origin,
+ const std::string& main_frame_origin,
+ int pid,
+ MessageLoop* ui_loop)
+ : SSLErrorHandler(rdh, request, resource_type, frame_origin,
+ main_frame_origin, ui_loop),
+ pid_(pid) {}
+
+ int pid() const { return pid_; }
+
+ protected:
+ virtual void OnDispatchFailed() { TakeNoAction(); }
+ virtual void OnDispatched() { manager()->OnMixedContent(this); }
+
+ private:
+ int pid_;
+
+ DISALLOW_COPY_AND_ASSIGN(SSLMixedContentHandler);
+};
+
+#endif // CHROME_BROWSER_SSL_SSL_MIXED_CONTENT_HANDLERR_H_
diff --git a/chrome/browser/ssl/ssl_policy.cc b/chrome/browser/ssl/ssl_policy.cc
index 6785eec..9c37117 100644
--- a/chrome/browser/ssl/ssl_policy.cc
+++ b/chrome/browser/ssl/ssl_policy.cc
@@ -11,7 +11,10 @@
#include "base/string_util.h"
#include "chrome/browser/cert_store.h"
#include "chrome/browser/renderer_host/render_view_host.h"
+#include "chrome/browser/ssl/ssl_cert_error_handler.h"
#include "chrome/browser/ssl/ssl_error_info.h"
+#include "chrome/browser/ssl/ssl_mixed_content_handler.h"
+#include "chrome/browser/ssl/ssl_request_info.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/jstemplate_builder.h"
@@ -52,7 +55,7 @@ static void AllowMixedContentForOrigin(SSLManager* manager,
manager->AllowMixedContentForHost(parsed_origin.host());
}
-static void UpdateStateForMixedContent(SSLManager::RequestInfo* info) {
+static void UpdateStateForMixedContent(SSLRequestInfo* info) {
if (info->resource_type() != ResourceType::MAIN_FRAME ||
info->resource_type() != ResourceType::SUB_FRAME) {
// The frame's origin now contains mixed content and therefore is broken.
@@ -66,7 +69,7 @@ static void UpdateStateForMixedContent(SSLManager::RequestInfo* info) {
}
}
-static void UpdateStateForUnsafeContent(SSLManager::RequestInfo* info) {
+static void UpdateStateForUnsafeContent(SSLRequestInfo* info) {
// This request as a broken cert, which means its host is broken.
info->manager()->MarkHostAsBroken(info->url().host(), info->pid());
@@ -75,19 +78,18 @@ static void UpdateStateForUnsafeContent(SSLManager::RequestInfo* info) {
class ShowMixedContentTask : public Task {
public:
- ShowMixedContentTask(SSLManager::MixedContentHandler* handler);
+ ShowMixedContentTask(SSLMixedContentHandler* handler);
virtual ~ShowMixedContentTask();
virtual void Run();
private:
- scoped_refptr<SSLManager::MixedContentHandler> handler_;
+ scoped_refptr<SSLMixedContentHandler> handler_;
DISALLOW_COPY_AND_ASSIGN(ShowMixedContentTask);
};
-ShowMixedContentTask::ShowMixedContentTask(
- SSLManager::MixedContentHandler* handler)
+ShowMixedContentTask::ShowMixedContentTask(SSLMixedContentHandler* handler)
: handler_(handler) {
}
@@ -101,8 +103,8 @@ void ShowMixedContentTask::Run() {
handler_->manager()->controller()->Reload(true);
}
-static void ShowErrorPage(SSLPolicy* policy, SSLManager::CertError* error) {
- SSLErrorInfo error_info = policy->GetSSLErrorInfo(error);
+static void ShowErrorPage(SSLPolicy* policy, SSLCertErrorHandler* handler) {
+ SSLErrorInfo error_info = policy->GetSSLErrorInfo(handler);
// Let's build the html error page.
DictionaryValue strings;
@@ -126,23 +128,23 @@ static void ShowErrorPage(SSLPolicy* policy, SSLManager::CertError* error) {
std::string html_text(jstemplate_builder::GetTemplateHtml(html, &strings,
"template_root"));
- TabContents* tab = error->GetTabContents();
+ TabContents* tab = handler->GetTabContents();
int cert_id = CertStore::GetSharedInstance()->StoreCert(
- error->ssl_info().cert, tab->render_view_host()->process()->pid());
+ handler->ssl_info().cert, tab->render_view_host()->process()->pid());
std::string security_info =
SSLManager::SerializeSecurityInfo(cert_id,
- error->ssl_info().cert_status,
- error->ssl_info().security_bits);
+ handler->ssl_info().cert_status,
+ handler->ssl_info().security_bits);
tab->render_view_host()->LoadAlternateHTMLString(html_text,
true,
- error->request_url(),
+ handler->request_url(),
security_info);
tab->controller().GetActiveEntry()->set_page_type(
NavigationEntry::ERROR_PAGE);
}
-static void ShowBlockingPage(SSLPolicy* policy, SSLManager::CertError* error) {
- SSLBlockingPage* blocking_page = new SSLBlockingPage(error, policy);
+static void ShowBlockingPage(SSLPolicy* policy, SSLCertErrorHandler* handler) {
+ SSLBlockingPage* blocking_page = new SSLBlockingPage(handler, policy);
blocking_page->Show();
}
@@ -154,8 +156,7 @@ static void InitializeEntryIfNeeded(NavigationEntry* entry) {
SECURITY_STYLE_AUTHENTICATED : SECURITY_STYLE_UNAUTHENTICATED);
}
-static void AddMixedContentWarningToConsole(
- SSLManager::MixedContentHandler* handler) {
+static void AddMixedContentWarningToConsole(SSLMixedContentHandler* handler) {
const std::wstring& text = l10n_util::GetStringF(
IDS_MIXED_CONTENT_LOG_MESSAGE,
UTF8ToWide(handler->frame_origin()),
@@ -173,14 +174,14 @@ SSLPolicy* SSLPolicy::GetDefaultPolicy() {
return Singleton<SSLPolicy>::get();
}
-void SSLPolicy::OnCertError(SSLManager::CertError* error) {
+void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) {
// First we check if we know the policy for this error.
net::X509Certificate::Policy::Judgment judgment =
- error->manager()->QueryPolicy(error->ssl_info().cert,
- error->request_url().host());
+ handler->manager()->QueryPolicy(handler->ssl_info().cert,
+ handler->request_url().host());
if (judgment == net::X509Certificate::Policy::ALLOWED) {
- error->ContinueRequest();
+ handler->ContinueRequest();
return;
}
@@ -188,35 +189,35 @@ void SSLPolicy::OnCertError(SSLManager::CertError* error) {
// For now we handle the DENIED as the UNKNOWN, which means a blocking
// page is shown to the user every time he comes back to the page.
- switch(error->cert_error()) {
+ switch(handler->cert_error()) {
case net::ERR_CERT_COMMON_NAME_INVALID:
case net::ERR_CERT_DATE_INVALID:
case net::ERR_CERT_AUTHORITY_INVALID:
- OnOverridableCertError(error);
+ OnOverridableCertError(handler);
break;
case net::ERR_CERT_NO_REVOCATION_MECHANISM:
// Ignore this error.
- error->ContinueRequest();
+ handler->ContinueRequest();
break;
case net::ERR_CERT_UNABLE_TO_CHECK_REVOCATION:
// We ignore this error and display an infobar.
- error->ContinueRequest();
- error->manager()->ShowMessage(l10n_util::GetString(
+ handler->ContinueRequest();
+ handler->manager()->ShowMessage(l10n_util::GetString(
IDS_CERT_ERROR_UNABLE_TO_CHECK_REVOCATION_INFO_BAR));
break;
case net::ERR_CERT_CONTAINS_ERRORS:
case net::ERR_CERT_REVOKED:
case net::ERR_CERT_INVALID:
- OnFatalCertError(error);
+ OnFatalCertError(handler);
break;
default:
NOTREACHED();
- error->CancelRequest();
+ handler->CancelRequest();
break;
}
}
-void SSLPolicy::OnMixedContent(SSLManager::MixedContentHandler* handler) {
+void SSLPolicy::OnMixedContent(SSLMixedContentHandler* handler) {
// Get the user's mixed content preference.
PrefService* prefs = handler->GetTabContents()->profile()->GetPrefs();
FilterPolicy::Type filter_policy =
@@ -239,7 +240,7 @@ void SSLPolicy::OnMixedContent(SSLManager::MixedContentHandler* handler) {
AddMixedContentWarningToConsole(handler);
}
-void SSLPolicy::OnRequestStarted(SSLManager::RequestInfo* info) {
+void SSLPolicy::OnRequestStarted(SSLRequestInfo* info) {
if (net::IsCertStatusError(info->ssl_cert_status()))
UpdateStateForUnsafeContent(info);
@@ -309,24 +310,24 @@ bool SSLPolicy::IsMixedContent(const GURL& url,
////////////////////////////////////////////////////////////////////////////////
// SSLBlockingPage::Delegate methods
-SSLErrorInfo SSLPolicy::GetSSLErrorInfo(SSLManager::CertError* error) {
+SSLErrorInfo SSLPolicy::GetSSLErrorInfo(SSLCertErrorHandler* handler) {
return SSLErrorInfo::CreateError(
- SSLErrorInfo::NetErrorToErrorType(error->cert_error()),
- error->ssl_info().cert, error->request_url());
+ SSLErrorInfo::NetErrorToErrorType(handler->cert_error()),
+ handler->ssl_info().cert, handler->request_url());
}
-void SSLPolicy::OnDenyCertificate(SSLManager::CertError* error) {
+void SSLPolicy::OnDenyCertificate(SSLCertErrorHandler* handler) {
// Default behavior for rejecting a certificate.
//
// While DenyCertForHost() executes synchronously on this thread,
// CancelRequest() gets posted to a different thread. Calling
// DenyCertForHost() first ensures deterministic ordering.
- error->manager()->DenyCertForHost(error->ssl_info().cert,
- error->request_url().host());
- error->CancelRequest();
+ handler->manager()->DenyCertForHost(handler->ssl_info().cert,
+ handler->request_url().host());
+ handler->CancelRequest();
}
-void SSLPolicy::OnAllowCertificate(SSLManager::CertError* error) {
+void SSLPolicy::OnAllowCertificate(SSLCertErrorHandler* handler) {
// Default behavior for accepting a certificate.
// Note that we should not call SetMaxSecurityStyle here, because the active
// NavigationEntry has just been deleted (in HideInterstitialPage) and the
@@ -337,33 +338,33 @@ void SSLPolicy::OnAllowCertificate(SSLManager::CertError* error) {
// While AllowCertForHost() executes synchronously on this thread,
// ContinueRequest() gets posted to a different thread. Calling
// AllowCertForHost() first ensures deterministic ordering.
- error->manager()->AllowCertForHost(error->ssl_info().cert,
- error->request_url().host());
- error->ContinueRequest();
+ handler->manager()->AllowCertForHost(handler->ssl_info().cert,
+ handler->request_url().host());
+ handler->ContinueRequest();
}
////////////////////////////////////////////////////////////////////////////////
// Certificate Error Routines
-void SSLPolicy::OnOverridableCertError(SSLManager::CertError* error) {
- if (error->resource_type() != ResourceType::MAIN_FRAME) {
+void SSLPolicy::OnOverridableCertError(SSLCertErrorHandler* handler) {
+ if (handler->resource_type() != ResourceType::MAIN_FRAME) {
// A sub-resource has a certificate error. The user doesn't really
// have a context for making the right decision, so block the
// request hard, without an info bar to allow showing the insecure
// content.
- error->DenyRequest();
+ handler->DenyRequest();
return;
}
// We need to ask the user to approve this certificate.
- ShowBlockingPage(this, error);
+ ShowBlockingPage(this, handler);
}
-void SSLPolicy::OnFatalCertError(SSLManager::CertError* error) {
- if (error->resource_type() != ResourceType::MAIN_FRAME) {
- error->DenyRequest();
+void SSLPolicy::OnFatalCertError(SSLCertErrorHandler* handler) {
+ if (handler->resource_type() != ResourceType::MAIN_FRAME) {
+ handler->DenyRequest();
return;
}
- error->CancelRequest();
- ShowErrorPage(this, error);
+ handler->CancelRequest();
+ ShowErrorPage(this, handler);
// No need to degrade our security indicators because we didn't continue.
}
diff --git a/chrome/browser/ssl/ssl_policy.h b/chrome/browser/ssl/ssl_policy.h
index 51a3a3a..570783f 100644
--- a/chrome/browser/ssl/ssl_policy.h
+++ b/chrome/browser/ssl/ssl_policy.h
@@ -22,9 +22,9 @@ class SSLPolicy : public SSLManager::Delegate,
static SSLPolicy* GetDefaultPolicy();
// SSLManager::Delegate methods.
- virtual void OnCertError(SSLManager::CertError* error);
- virtual void OnMixedContent(SSLManager::MixedContentHandler* handler);
- virtual void OnRequestStarted(SSLManager::RequestInfo* info);
+ virtual void OnCertError(SSLCertErrorHandler* handler);
+ virtual void OnMixedContent(SSLMixedContentHandler* handler);
+ virtual void OnRequestStarted(SSLRequestInfo* info);
virtual void UpdateEntry(SSLManager* manager, NavigationEntry* entry);
// This method is static because it is called from both the UI and the IO
@@ -35,9 +35,9 @@ class SSLPolicy : public SSLManager::Delegate,
const std::string& frame_origin);
// SSLBlockingPage::Delegate methods.
- virtual SSLErrorInfo GetSSLErrorInfo(SSLManager::CertError* error);
- virtual void OnDenyCertificate(SSLManager::CertError* error);
- virtual void OnAllowCertificate(SSLManager::CertError* error);
+ virtual SSLErrorInfo GetSSLErrorInfo(SSLCertErrorHandler* handler);
+ virtual void OnDenyCertificate(SSLCertErrorHandler* handler);
+ virtual void OnAllowCertificate(SSLCertErrorHandler* handler);
private:
// Construct via |GetDefaultPolicy|.
@@ -47,11 +47,11 @@ class SSLPolicy : public SSLManager::Delegate,
// Helper method for derived classes handling certificate errors that can be
// overridden by the user.
// Show a blocking page and let the user continue or cancel the request.
- void OnOverridableCertError(SSLManager::CertError* error);
+ void OnOverridableCertError(SSLCertErrorHandler* handler);
// Helper method for derived classes handling fatal certificate errors.
// Cancel the request and show an error page.
- void OnFatalCertError(SSLManager::CertError* error);
+ void OnFatalCertError(SSLCertErrorHandler* handler);
DISALLOW_COPY_AND_ASSIGN(SSLPolicy);
};
diff --git a/chrome/browser/ssl/ssl_request_info.h b/chrome/browser/ssl/ssl_request_info.h
new file mode 100644
index 0000000..bd1544a
--- /dev/null
+++ b/chrome/browser/ssl/ssl_request_info.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SSL_SSL_REQUEST_INFO_H_
+#define CHROME_BROWSER_SSL_SSL_REQUEST_INFO_H_
+
+#include <string>
+
+#include "chrome/common/filter_policy.h"
+#include "googleurl/src/gurl.h"
+#include "webkit/glue/resource_type.h"
+
+class SSLManager;
+
+// SSLRequestInfo wraps up the information SSLPolicy needs about a request in
+// order to update our security IU. SSLRequestInfo is RefCounted in case we
+// need to deal with the request asynchronously.
+class SSLRequestInfo : public base::RefCounted<SSLRequestInfo> {
+ public:
+ SSLRequestInfo(SSLManager* manager,
+ const GURL& url,
+ ResourceType::Type resource_type,
+ const std::string& frame_origin,
+ const std::string& main_frame_origin,
+ FilterPolicy::Type filter_policy,
+ int pid,
+ int ssl_cert_id,
+ int ssl_cert_status)
+ : manager_(manager),
+ url_(url),
+ resource_type_(resource_type),
+ frame_origin_(frame_origin),
+ main_frame_origin_(main_frame_origin),
+ filter_policy_(filter_policy),
+ pid_(pid),
+ ssl_cert_id_(ssl_cert_id),
+ ssl_cert_status_(ssl_cert_status) {
+ }
+
+ SSLManager* manager() const { return manager_; }
+ const GURL& url() const { return url_; }
+ ResourceType::Type resource_type() const { return resource_type_; }
+ const std::string& frame_origin() const { return frame_origin_; }
+ const std::string& main_frame_origin() const { return main_frame_origin_; }
+ FilterPolicy::Type filter_policy() const { return filter_policy_; }
+ int pid() const { return pid_; }
+ int ssl_cert_id() const { return ssl_cert_id_; }
+ int ssl_cert_status() const { return ssl_cert_status_; }
+
+ private:
+ SSLManager* manager_;
+ GURL url_;
+ ResourceType::Type resource_type_;
+ std::string frame_origin_;
+ std::string main_frame_origin_;
+ FilterPolicy::Type filter_policy_;
+ int pid_;
+ int ssl_cert_id_;
+ int ssl_cert_status_;
+
+ DISALLOW_COPY_AND_ASSIGN(SSLRequestInfo);
+};
+
+#endif // CHROME_BROWSER_SSL_SSL_REQUEST_INFO_H_
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index a023b9c..a37d2b0 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -1290,14 +1290,19 @@
'browser/spellchecker.h',
'browser/ssl/ssl_blocking_page.cc',
'browser/ssl/ssl_blocking_page.h',
+ 'browser/ssl/ssl_cert_error_handler.h',
+ 'browser/ssl/ssl_error_handler.cc',
+ 'browser/ssl/ssl_error_handler.h',
'browser/ssl/ssl_error_info.cc',
'browser/ssl/ssl_error_info.h',
'browser/ssl/ssl_host_state.cc',
'browser/ssl/ssl_host_state.h',
'browser/ssl/ssl_manager.cc',
'browser/ssl/ssl_manager.h',
+ 'browser/ssl/ssl_mixed_content_handler.h',
'browser/ssl/ssl_policy.cc',
'browser/ssl/ssl_policy.h',
+ 'browser/ssl/ssl_request_info.h',
'browser/status_bubble.h',
'browser/tab_contents/constrained_window.h',
'browser/tab_contents/infobar_delegate.cc',