# Copyright (c) 2006-2008 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.

Import('env')

env = env.Clone()

env.SConscript([
    '$CHROME_DIR/third_party/hunspell/using_hunspell.scons',
    '$CHROME_DIR/third_party/wtl/using_wtl.scons',
    '$GOOGLE_UPDATE_DIR/using_google_update.scons',
    '$GRIT_DIR/build/using_generated_resources.scons',
    '$GTEST_DIR/../using_gtest.scons',
    '$ICU38_DIR/using_icu38.scons',
    '$LIBPNG_DIR/using_libpng.scons',
    '$LIBXML_DIR/using_libxml.scons',
    '$MEDIA_DIR/using_media.scons',
    '$NPAPI_DIR/using_npapi.scons',
    '$SKIA_DIR/using_skia.scons',
    '$ZLIB_DIR/using_zlib.scons',
], {'env':env})

env.Append(
    LIBS = [
        'debugger',
        'glue',
        'views',
    ],
)

env.Prepend(
    CPPPATH = [
        '$CHROME_DIR/app',
        '$CHROME_SRC_DIR',
        # To get the #include of history_indexer.h,
        # generated from history/history_indexer.idl.
        'history',
    ],
)

if env.Bit('windows'):
  env.Prepend(
      CPPPATH = [
          '$CHROME_DIR/tools/build/win',
      ],
  )

# input_files initialized to common files + Windows specific ones.
input_files = ChromeFileList([
  # TODO(sgk):  violate standard indentation so we don't have to
  # reindent too much when we remove the explicit MSVSFilter() calls
  # in favor of generating the hierarchy to reflect the file system.
  MSVSFilter('Autocomplete', [
    'autocomplete/autocomplete.cc',
    'autocomplete/autocomplete.h',
    'autocomplete/autocomplete_accessibility.cc',
    'autocomplete/autocomplete_accessibility.h',
    'autocomplete/autocomplete_edit.cc',
    'autocomplete/autocomplete_edit.h',
    'autocomplete/autocomplete_popup_model.cc',
    'autocomplete/autocomplete_popup_model.h',
    'autocomplete/autocomplete_popup_view_win.cc',
    'autocomplete/autocomplete_popup_view.h',
    'autocomplete/edit_drop_target.cc',
    'autocomplete/edit_drop_target.h',
    'autocomplete/history_contents_provider.cc',
    'autocomplete/history_contents_provider.h',
    'autocomplete/history_url_provider.cc',
    'autocomplete/history_url_provider.h',
    'autocomplete/keyword_provider.cc',
    'autocomplete/keyword_provider.h',
    'autocomplete/search_provider.cc',
    'autocomplete/search_provider.h',
  ]),
  MSVSFilter('Base', [
    'alternate_nav_url_fetcher.cc',
    'alternate_nav_url_fetcher.h',
    'browser_about_handler.cc',
    'browser_about_handler.h',
    'browser_init.cc',
    'browser_init.h',
    'browser_main.cc',
    'browser_main_win.cc',
    'browser_prefs.cc',
    'browser_prefs.h',
    'browser_process.cc',
    'browser_process.h',
    'browser_process_impl.cc',
    'browser_process_impl.h',
    'browser_shutdown.cc',
    'browser_shutdown.h',
    'browser_url_handler.cc',
    'browser_url_handler.h',
    'browsing_data_remover.cc',
    'browsing_data_remover.h',
    'browsing_instance.cc',
    'browsing_instance.h',
    'cache_manager_host.h',
    'cancelable_request.cc',
    'cancelable_request.h',
    'character_encoding.cc',
    'character_encoding.h',
    'chrome_thread.cc',
    'chrome_thread.h',
    'cross_site_request_manager.cc',
    'cross_site_request_manager.h',
    'fav_icon_helper.cc',
    'fav_icon_helper.h',
    'first_run.cc',
    'first_run.h',
    'google_url_tracker.cc',
    'google_url_tracker.h',
    'google_util.cc',
    'google_util.h',
    'icon_loader.cc',
    'icon_loader.h',
    'icon_manager.cc',
    'icon_manager.h',
    'ime_input.cc',
    'ime_input.h',
    'jankometer.cc',
    'jankometer.h',
    'memory_details.cc',
    'memory_details.h',
    'meta_table_helper.cc',
    'meta_table_helper.h',
    'plugin_process_host.cc',
    'plugin_process_host.h',
    'plugin_service.cc',
    'plugin_service.h',
    '../tools/build/win/precompiled_wtl.cc',
    '../tools/build/win/precompiled_wtl.h',
    'profile.cc',
    'profile.h',
    'profile_manager.cc',
    'profile_manager.h',
    'session_startup_pref.cc',
    'session_startup_pref.h',
    'shell_dialogs.h',
    'shell_integration.cc',
    'shell_integration.h',
    'spellcheck_worditerator.cc',
    'spellcheck_worditerator.h',
    'spellchecker.cc',
    'spellchecker.h',
    'user_data_manager.cc',
    'user_data_manager.h',
    'visitedlink_master.cc',
    'visitedlink_master.h',
  ]),
  MSVSFilter('Bookmarks', [
    'bookmarks/bookmark_codec.cc',
    'bookmarks/bookmark_codec.h',
    'bookmarks/bookmark_context_menu.cc',
    'bookmarks/bookmark_context_menu.h',
    'bookmarks/bookmark_drag_data.cc',
    'bookmarks/bookmark_drag_data.h',
    'bookmarks/bookmark_drop_info.cc',
    'bookmarks/bookmark_drop_info.h',
    'bookmarks/bookmark_folder_tree_model.cc',
    'bookmarks/bookmark_folder_tree_model.h',
    'bookmarks/bookmark_html_writer.cc',
    'bookmarks/bookmark_html_writer.h',
    'bookmarks/bookmark_model.cc',
    'bookmarks/bookmark_model.h',
    'bookmarks/bookmark_service.h',
    'bookmarks/bookmark_storage.cc',
    'bookmarks/bookmark_storage.h',
    'bookmarks/bookmark_table_model.cc',
    'bookmarks/bookmark_table_model.h',
    'bookmarks/bookmark_utils.cc',
    'bookmarks/bookmark_utils.h',
  ]),
  MSVSFilter('Browser Window', [
    'app_modal_dialog_queue.cc',
    'app_modal_dialog_queue.h',
    'back_forward_menu_model.cc',
    'back_forward_menu_model.h',
    'back_forward_menu_model_win.cc',
    'back_forward_menu_model_win.h',
    'browser.cc',
    'browser.h',
    'browser_list.cc',
    'browser_list.h',
    'browser_window.h',
    'command_updater.cc',
    'controller.h',
    'dock_info.cc',
    'dock_info.h',
    'find_bar.h',
    'find_bar_controller.cc',
    'find_bar_controller.h',
    'find_notification_details.h',
    'js_before_unload_handler.h',
    'js_before_unload_handler_win.cc',
    'js_before_unload_handler_win.h',
    'jsmessage_box_handler.h',
    'jsmessage_box_handler_win.cc',
    'jsmessage_box_handler_win.h',
    'load_from_memory_cache_details.h',
    'load_notification_details.h',
    'login_prompt.cc',
    'login_prompt.h',
    'options_window.h',
    'task_manager.cc',
    'task_manager.h',
    'task_manager_resource_providers.cc',
    'task_manager_resource_providers.h',
    'window_sizer.cc',
    'window_sizer.h',
  ]),
  MSVSFilter('Automation', [
    'automation/automation_autocomplete_edit_tracker.h',
    'automation/automation_browser_tracker.h',
    'automation/automation_constrained_window_tracker.h',
    'automation/automation_provider.cc',
    'automation/automation_provider.h',
    'automation/automation_provider_list.cc',
    'automation/automation_provider_list_generic.cc',
    'automation/automation_provider_list_mac.mm',
    'automation/automation_provider_list.h',
    'automation/automation_resource_tracker.cc',
    'automation/automation_resource_tracker.h',
    'automation/automation_tab_tracker.h',
    'automation/automation_window_tracker.h',
    'automation/ui_controls.cc',
    'automation/ui_controls.h',
    'automation/url_request_failed_dns_job.cc',
    'automation/url_request_failed_dns_job.h',
    'automation/url_request_mock_http_job.cc',
    'automation/url_request_mock_http_job.h',
    'automation/url_request_mock_net_error_job.cc',
    'automation/url_request_mock_net_error_job.h',
    'automation/url_request_slow_download_job.cc',
    'automation/url_request_slow_download_job.h',
    'view_ids.h',
  ]),
  MSVSFilter('History', [
    'history/archived_database.cc',
    'history/archived_database.h',
    'history/download_database.cc',
    'history/download_database.h',
    'history/download_types.h',
    'history/expire_history_backend.cc',
    'history/expire_history_backend.h',
    'history/history.cc',
    'history/history.h',
    'history/history_backend.cc',
    'history/history_backend.h',
    'history/history_database.cc',
    'history/history_database.h',
    'history/history_indexer.idl',
    'history/history_marshaling.h',
    'history/history_notifications.h',
    'history/history_publisher.cc',
    'history/history_publisher_none.cc',
    'history/history_publisher_win.cc',
    'history/history_publisher.h',
    'history/history_types.cc',
    'history/history_types.h',
    'history/in_memory_database.cc',
    'history/in_memory_database.h',
    'history/in_memory_history_backend.cc',
    'history/in_memory_history_backend.h',
    'history/page_usage_data.cc',
    'history/page_usage_data.h',
    'history/query_parser.cc',
    'history/query_parser.h',
    'history/snippet.cc',
    'history/snippet.h',
    'history/starred_url_database.cc',
    'history/starred_url_database.h',
    'history/text_database.cc',
    'history/text_database.h',
    'history/text_database_manager.cc',
    'history/text_database_manager.h',
    'history/thumbnail_database.cc',
    'history/thumbnail_database.h',
    'history/url_database.cc',
    'history/url_database.h',
    'history/visit_database.cc',
    'history/visit_database.h',
    'history/visit_tracker.cc',
    'history/visit_tracker.h',
    'history/visitsegment_database.cc',
    'history/visitsegment_database.h',
    MSVSFilter('HangMonitor', [
      'hang_monitor/hung_plugin_action.cc',
      'hang_monitor/hung_plugin_action.h',
      'hang_monitor/hung_window_detector.cc',
      'hang_monitor/hung_window_detector.h',
    ]),
  ]),
  MSVSFilter('Sessions and Tab Restore', [
    'sessions/base_session_service.cc',
    'sessions/base_session_service.h',
    'sessions/session_backend.cc',
    'sessions/session_backend.h',
    'sessions/session_command.cc',
    'sessions/session_command.h',
    'sessions/session_id.cc',
    'sessions/session_id.h',
    'sessions/session_restore.cc',
    'sessions/session_restore.h',
    'sessions/session_service.cc',
    'sessions/session_service.h',
    'sessions/session_types.cc',
    'sessions/session_types.h',
    'sessions/tab_restore_service.cc',
    'sessions/tab_restore_service.h',
  ]),
  MSVSFilter('WebData', [
    'webdata/web_data_service.cc',
    'webdata/web_data_service.h',
    'webdata/web_database.cc',
    'webdata/web_database.h',
    'webdata/web_database_win.cc',
  ]),
  MSVSFilter('Importer', [
    'importer/firefox2_importer.cc',
    'importer/firefox2_importer.h',
    'importer/firefox3_importer.cc',
    'importer/firefox3_importer.h',
    'importer/firefox_importer_utils.cc',
    'importer/firefox_importer_utils.h',
    'importer/firefox_profile_lock.cc',
    'importer/firefox_profile_lock.h',
    'importer/firefox_profile_lock_win.cc',
    'importer/ie_importer.cc',
    'importer/ie_importer.h',
    'importer/importer.cc',
    'importer/importer.h',
    'importer/mork_reader.cc',
    'importer/mork_reader.h',
  ]),
  MSVSFilter('Drag & Drop', [
    'drag_utils.cc',
    'drag_utils.h',
  ]),
  MSVSFilter('Tabs', [
    'tabs/tab_strip_model.cc',
    'tabs/tab_strip_model.h',
    'tabs/tab_strip_model_order_controller.cc',
    'tabs/tab_strip_model_order_controller.h',
  ]),
  MSVSFilter('Printing', [
    'printing/page_number.cc',
    'printing/page_number.h',
    'printing/page_overlays.cc',
    'printing/page_overlays.h',
    'printing/page_range.cc',
    'printing/page_range.h',
    'printing/page_setup.cc',
    'printing/page_setup.h',
    'printing/print_job.cc',
    'printing/print_job.h',
    'printing/print_job_manager.cc',
    'printing/print_job_manager.h',
    'printing/print_job_worker.cc',
    'printing/print_job_worker.h',
    'printing/print_job_worker_owner.h',
    'printing/print_settings.cc',
    'printing/print_settings.h',
    'printing/print_view_manager.cc',
    'printing/print_view_manager.h',
    'printing/printed_document.cc',
    'printing/printed_document.h',
    'printing/printed_page.cc',
    'printing/printed_page.h',
    'printing/printed_pages_source.h',
    'printing/printer_query.cc',
    'printing/printer_query.h',
    'printing/win_printing_context.cc',
    'printing/win_printing_context.h',
  ]),
  MSVSFilter('Sandbox', [
    'sandbox_policy.cc',
    'sandbox_policy.h',
  ]),
  MSVSFilter('Password Manager', [
    'password_manager/encryptor.cc',
    'password_manager/encryptor.h',
    'password_manager/ie7_password.cc',
    'password_manager/ie7_password.h',
    'password_manager/password_form_manager.cc',
    'password_manager/password_form_manager.h',
    'password_manager/password_manager.cc',
    'password_manager/password_manager.h',
  ]),
  MSVSFilter('External Tab', [
    'external_tab_container.cc',
    'external_tab_container.h',
  ]),
  MSVSFilter('DOM UI', [
    'dom_ui/chrome_url_data_manager.cc',
    'dom_ui/chrome_url_data_manager.h',
    'dom_ui/debugger_ui.cc',
    'dom_ui/debugger_ui.h',
    'dom_ui/devtools_ui.cc',
    'dom_ui/devtools_ui.h',
    'dom_ui/dom_ui.cc',
    'dom_ui/dom_ui.h',
    'dom_ui/dom_ui_factory.cc',
    'dom_ui/dom_ui_factory.h',
    'dom_ui/dom_ui_favicon_source.cc',
    'dom_ui/dom_ui_favicon_source.h',
    'dom_ui/dom_ui_host.cc',
    'dom_ui/dom_ui_host.h',
    'dom_ui/dom_ui_thumbnail_source.cc',
    'dom_ui/dom_ui_thumbnail_source.h',
    'dom_ui/downloads_ui.cc',
    'dom_ui/downloads_ui.h',
    'dom_ui/fileicon_source.cc',
    'dom_ui/fileicon_source.h',
    'dom_ui/history_ui.cc',
    'dom_ui/history_ui.h',
    'dom_ui/html_dialog_contents.cc',
    'dom_ui/html_dialog_contents.h',
    'dom_ui/new_tab_ui.cc',
    'dom_ui/new_tab_ui.h',
  ]),
  MSVSFilter('Net', [
    'net/chrome_url_request_context.cc',
    'net/chrome_url_request_context.h',
    'net/dns_global.cc',
    'net/dns_global.h',
    'net/dns_host_info.cc',
    'net/dns_host_info.h',
    'net/dns_master.cc',
    'net/dns_master.h',
    'net/referrer.cc',
    'net/referrer.h',
    'net/resolve_proxy_msg_helper.cc',
    'net/resolve_proxy_msg_helper.h',
    'net/sdch_dictionary_fetcher.cc',
    'net/sdch_dictionary_fetcher.h',
    'net/url_fetcher.cc',
    'net/url_fetcher.h',
    'net/url_fetcher_protect.cc',
    'net/url_fetcher_protect.h',
    'net/url_fixer_upper.cc',
    'net/url_fixer_upper.h',
  ]),
  MSVSFilter('RLZ', [
    'rlz/rlz.cc',
    'rlz/rlz.h',
  ]),
  MSVSFilter('Safe Browsing', [
    'safe_browsing/bloom_filter.cc',
    'safe_browsing/bloom_filter.h',
    'safe_browsing/chunk_range.cc',
    'safe_browsing/chunk_range.h',
    'safe_browsing/protocol_manager.cc',
    'safe_browsing/protocol_manager.h',
    'safe_browsing/protocol_parser.cc',
    'safe_browsing/protocol_parser.h',
    'safe_browsing/safe_browsing_blocking_page.cc',
    'safe_browsing/safe_browsing_blocking_page.h',
    'safe_browsing/safe_browsing_database.cc',
    'safe_browsing/safe_browsing_database.h',
    'safe_browsing/safe_browsing_database_bloom.cc',
    'safe_browsing/safe_browsing_database_bloom.h',
    'safe_browsing/safe_browsing_database_impl.cc',
    'safe_browsing/safe_browsing_database_impl.h',
    'safe_browsing/safe_browsing_service.cc',
    'safe_browsing/safe_browsing_service.h',
    'safe_browsing/safe_browsing_util.cc',
    'safe_browsing/safe_browsing_util.h',
  ]),
  MSVSFilter('Accessibility', [
    'browser_accessibility.cc',
    'browser_accessibility.h',
    'browser_accessibility_manager.cc',
    'browser_accessibility_manager.h',
  ]),
  MSVSFilter('Download', [
    'download/download_exe.cc',
    'download/download_file.cc',
    'download/download_file.h',
    'download/download_item_model.cc',
    'download/download_item_model.h',
    'download/download_manager.cc',
    'download/download_manager.h',
    'download/download_request_dialog_delegate.h',
    'download/download_request_manager.cc',
    'download/download_request_manager.h',
    'download/download_shelf.cc',
    'download/download_shelf.h',
    'download/download_util.cc',
    'download/download_util.h',
  ]),
  MSVSFilter('Save Page', [
    'download/save_file.cc',
    'download/save_file.h',
    'download/save_file_manager.cc',
    'download/save_file_manager.h',
    'download/save_item.cc',
    'download/save_item.h',
    'download/save_package.cc',
    'download/save_package.h',
    'download/save_types.h',
  ]),
  MSVSFilter('Autofill', [
    'autofill_manager.cc',
    'autofill_manager.h',
  ]),
  MSVSFilter('Extensions', [
    'extensions/extension.cc',
    'extensions/extension.h',
    'extensions/extension_view.cc',
    'extensions/extension_view.h',
    'extensions/extension_error_reporter.cc',
    'extensions/extension_error_reporter.h',
    'extensions/extension_protocols.h',
    'extensions/extensions_service.cc',
    'extensions/extensions_service.h',
    'extensions/extensions_ui.cc',
    'extensions/extensions_ui.h',
    'extensions/user_script_master.cc',
    'extensions/user_script_master.h',
  ]),
  MSVSFilter('Renderer Host', [
    'renderer_host/async_resource_handler.cc',
    'renderer_host/async_resource_handler.h',
    'renderer_host/audio_renderer_host.cc',
    'renderer_host/audio_renderer_host.h',
    'renderer_host/backing_store.h',
    'renderer_host/backing_store.cc',
    'renderer_host/backing_store_win.cc',
    'renderer_host/browser_render_process_host.cc',
    'renderer_host/browser_render_process_host.h',
    'renderer_host/buffered_resource_handler.cc',
    'renderer_host/buffered_resource_handler.h',
    'renderer_host/cross_site_resource_handler.cc',
    'renderer_host/cross_site_resource_handler.h',
    'renderer_host/download_resource_handler.cc',
    'renderer_host/download_resource_handler.h',
    'renderer_host/download_throttling_resource_handler.cc',
    'renderer_host/download_throttling_resource_handler.h',
    'renderer_host/media_resource_handler.cc',
    'renderer_host/media_resource_handler.h',
    'renderer_host/render_process_host.cc',
    'renderer_host/render_process_host.h',
    'renderer_host/render_view_host.cc',
    'renderer_host/render_view_host.h',
    'renderer_host/render_view_host_delegate.h',
    'renderer_host/render_widget_helper.cc',
    'renderer_host/render_widget_helper.h',
    'renderer_host/render_widget_host.cc',
    'renderer_host/render_widget_host.h',
    'renderer_host/render_widget_host_view.h',
    'renderer_host/render_widget_host_view_win.cc',
    'renderer_host/render_widget_host_view_win.h',
    'renderer_host/renderer_security_policy.cc',
    'renderer_host/renderer_security_policy.h',
    'renderer_host/resource_dispatcher_host.cc',
    'renderer_host/resource_dispatcher_host.h',
    'renderer_host/resource_handler.h',
    'renderer_host/resource_message_filter.cc',
    'renderer_host/resource_message_filter.h',
    'renderer_host/resource_message_filter_gtk.cc',
    'renderer_host/resource_request_details.h',
    'renderer_host/safe_browsing_resource_handler.cc',
    'renderer_host/safe_browsing_resource_handler.h',
    'renderer_host/save_file_resource_handler.cc',
    'renderer_host/save_file_resource_handler.h',
    'renderer_host/sync_resource_handler.cc',
    'renderer_host/sync_resource_handler.h',
    'renderer_host/web_cache_manager.cc',
  ]),
  MSVSFilter('Tab Contents', [
    'tab_contents/constrained_window.h',
    'tab_contents/infobar_delegate.cc',
    'tab_contents/infobar_delegate.h',
    'tab_contents/interstitial_page.cc',
    'tab_contents/interstitial_page.h',
    'tab_contents/navigation_controller.cc',
    'tab_contents/navigation_controller.h',
    'tab_contents/navigation_entry.cc',
    'tab_contents/navigation_entry.h',
    'tab_contents/page_navigator.h',
    'tab_contents/provisional_load_details.cc',
    'tab_contents/provisional_load_details.h',
    'tab_contents/render_view_context_menu.cc',
    'tab_contents/render_view_context_menu.h',
    'tab_contents/render_view_host_manager.cc',
    'tab_contents/render_view_host_manager.h',
    'tab_contents/repost_form_warning.h',
    'tab_contents/security_style.h',
    'tab_contents/site_instance.cc',
    'tab_contents/site_instance.h',
    'tab_contents/tab_contents.cc',
    'tab_contents/tab_contents.h',
    'tab_contents/tab_contents_delegate.h',
    'tab_contents/tab_contents_factory.cc',
    'tab_contents/tab_contents_factory.h',
    'tab_contents/tab_contents_type.h',
    'tab_contents/tab_util.cc',
    'tab_contents/tab_util.h',
    'tab_contents/web_contents.cc',
    'tab_contents/web_contents.h',
    'tab_contents/web_contents_view.cc',
    'tab_contents/web_contents_view.h',
    'tab_contents/web_contents_view_win.cc',
    'tab_contents/web_contents_view_win.h',
    'tab_contents/web_drag_source.cc',
    'tab_contents/web_drag_source.h',
    'tab_contents/web_drop_target.cc',
    'tab_contents/web_drop_target.h',
  ]),
  MSVSFilter('Search Engines', [
    'search_engines/template_url.cc',
    'search_engines/template_url.h',
    'search_engines/template_url_fetcher.cc',
    'search_engines/template_url_fetcher.h',
    'search_engines/template_url_model.cc',
    'search_engines/template_url_model.h',
    'search_engines/template_url_parser.cc',
    'search_engines/template_url_parser.h',
    'search_engines/template_url_prepopulate_data.cc',
    'search_engines/template_url_prepopulate_data.h',
  ]),
  MSVSFilter('Metrics', [
    'metrics/metrics_log.cc',
    'metrics/metrics_log.h',
    'metrics/metrics_response.cc',
    'metrics/metrics_response.h',
    'metrics/metrics_service.cc',
    'metrics/metrics_service.h',
    'metrics/user_metrics.cc',
    'metrics/user_metrics.h',
  ]),
  MSVSFilter('SSL', [
    'ssl/ssl_blocking_page.cc',
    'ssl/ssl_blocking_page.h',
    'ssl/ssl_error_info.cc',
    'ssl/ssl_error_info.h',
    'ssl/ssl_host_state.cc',
    'ssl/ssl_host_state.h',
    'ssl/ssl_manager.cc',
    'ssl/ssl_manager.h',
    'ssl/ssl_policy.cc',
    'ssl/ssl_policy.h',
  ]),
    'browser_trial.cc',
    'browser_trial.h',
    'cert_store.cc',
    'cert_store.h',
    'chrome_plugin_browsing_context.cc',
    'chrome_plugin_browsing_context.h',
    'chrome_plugin_host.cc',
    'encoding_menu_controller_delegate.cc',
    'encoding_menu_controller_delegate.h',
    'external_protocol_handler.cc',
    'external_protocol_handler.h',
    'gears_integration.cc',
    'gears_integration.h',
    'google_update.cc',
    'google_update.h',
    'modal_html_dialog_delegate.cc',
    'modal_html_dialog_delegate.h',
    'page_state.cc',
    'page_state.h',
    'plugin_installer.cc',
    'plugin_installer.h',
    'toolbar_model.cc',
    'toolbar_model.h',
    'worker_host/worker_process_host.cc',
    'worker_host/worker_process_host.h',
    'worker_host/worker_service.cc',
    'worker_host/worker_service.h',
])

if not env.Bit('windows'):
  # TODO: Port these.
  input_files.Remove(
      'app_modal_dialog_queue.cc',
      'autocomplete/autocomplete_accessibility.cc',
      'autocomplete/autocomplete_popup_view_win.cc',
      'autocomplete/edit_drop_target.cc',
      'automation/ui_controls.cc',
      'browser_accessibility.cc',
      'browser_accessibility_manager.cc',
      'dock_info.cc',
      'dom_ui/debugger_ui.cc',
      'dom_ui/html_dialog_contents.cc',
      'download/download_exe.cc',
      'download/download_util.cc',
      'drag_utils.cc',
      'encoding_menu_controller_delegate.cc',
      'external_tab_container.cc',
      'first_run.cc',
      'hang_monitor/hung_plugin_action.cc',
      'hang_monitor/hung_window_detector.cc',
      'icon_loader.cc',
      'icon_manager.cc',
      'ime_input.cc',
      'jankometer.cc',
      'login_prompt.cc',
      'memory_details.cc',
      'modal_html_dialog_delegate.cc',
      'google_update.cc',
      'password_manager/encryptor.cc',
      'printing/page_overlays.cc',
      'printing/print_job.cc',
      'printing/print_job_manager.cc',
      'printing/print_job_worker.cc',
      'printing/print_settings.cc',
      'printing/print_view_manager.cc',
      'printing/printed_document.cc',
      'printing/printed_page.cc',
      'printing/printer_query.cc',
      'printing/win_printing_context.cc',
      'rlz/rlz.cc',
      'sandbox_policy.cc',
      'shell_integration.cc',
      'tab_contents/web_drop_target.cc',
      'task_manager.cc',
      'task_manager_resource_providers.cc',
      'window_sizer.cc',
  )

  # Remove Windows-specific files on other platforms.
  input_files.Remove(
      'back_forward_menu_model_win.cc',
      'browser_main_win.cc',
      'history/history_publisher_win.cc',
      'importer/firefox_profile_lock_win.cc',
      'importer/ie_importer.cc',
      'js_before_unload_handler_win.cc',
      'jsmessage_box_handler_win.cc',
      'password_manager/ie7_password.cc',
      'password_manager/password_form_manager_win.cc',
      'renderer_host/backing_store_win.cc',
      'renderer_host/render_widget_host_view_win.cc',
      'tab_contents/web_contents_view_win.cc',
      'webdata/web_data_service_win.cc',
      'webdata/web_database_win.cc',
      '../tools/build/win/precompiled_wtl.cc',
      '../tools/build/win/precompiled_wtl.h',
  )

  # Add files shared across non-Windows platforms.
  input_files.Append(
      'importer/firefox_profile_lock_posix.cc',
      'renderer_host/backing_store_x.cc',
  )


if env.Bit('linux'):
  input_files.Extend([
      'autocomplete/autocomplete_edit_view_gtk.cc',
      'autocomplete/autocomplete_popup_view_gtk.cc',
      'browser_main_gtk.cc',
      'gtk/back_forward_menu_model_gtk.cc',
      'gtk/browser_toolbar_gtk.cc',
      'gtk/browser_window_factory_gtk.cc',
      'gtk/browser_window_gtk.cc',
      'gtk/custom_button.cc',
      'gtk/dialogs_gtk.cc',
      'gtk/download_item_gtk.cc',
      'gtk/download_shelf_gtk.cc',
      'gtk/find_bar_gtk.cc',
      'gtk/location_bar_view_gtk.cc',
      'gtk/menu_gtk.cc',
      'gtk/nine_box.cc',
      'gtk/standard_menus.cc',
      'gtk/status_bubble_gtk.cc',
      'gtk/tab_contents_container_gtk.cc',
      'process_singleton_linux.cc',
      'renderer_host/render_widget_host_view_gtk.cc',
      'tab_contents/web_contents_view_gtk.cc',
      'tab_contents/render_view_context_menu_gtk.cc',
  ])

if env.Bit('mac'):
  input_files.Remove(
      'spellchecker.cc',
      'tab_contents/web_contents_view.cc',
  )

if not env.Bit('mac'):
  # Mac-specific files
  input_files.Remove(
      'automation/automation_provider_list_mac.mm',
  )

if env.Bit('windows'):
  env.TypeLibrary('history/history_indexer.idl')

  input_files.Remove(
      'history/history_publisher_none.cc',
      'importer/firefox_profile_lock_posix.cc',
  )

if not env.Bit('mac'):
  # TODO: This should work for all platforms.
  env.ChromeLibrary('browser', input_files)

p = env.ChromeMSVSProject('browser.vcproj',
                          dest='$CHROME_SRC_DIR/chrome/browser/browser.vcproj',
                          guid='{5BF908A7-68FB-4A4B-99E3-8C749F1FE4EA}',
                          keyword='Win32Proj',
                          root_namespace='Browser',
                          dependencies = [
                              '$LIBXML_DIR/build/libxml_config.vcproj',
                              '$GOOGLE_UPDATE_DIR/ondemand_updates.vcproj',
                              '$NET_DIR/build/net_resources.vcproj',
                              '$CHROME_DIR/app/generated_resources.vcproj',
                          ],
                          # TODO(sgk):  when we can intuit the hierarchy
                          # from the built targets.
                          #buildtargets=TODO,
                          files=input_files,
                          relative_path_prefix='./',
                          tools=[
                              'VCPreBuildEventTool',
                              'VCCustomBuildTool',
                              'Resource text file copy',
                              'VCXMLDataGeneratorTool',
                              'VCWebServiceProxyGeneratorTool',
                              'VCMIDLTool',
                              'VCCLCompilerTool',
                              'VCManagedResourceCompilerTool',
                              'VCResourceCompilerTool',
                              'VCPreLinkEventTool',
                              'VCLibrarianTool',
                              'VCALinkTool',
                              'VCXDCMakeTool',
                              'VCBscMakeTool',
                              'VCFxCopTool',
                              'VCPostBuildEventTool',
                          ],
                          ConfigurationType='4')

p.AddToolFile('../tools/build/win/resource_text_file_copy.rules')

p.AddConfig('Debug|Win32',
            InheritedPropertySheets=[
                './browser.vsprops',
                '$(SolutionDir)../build/debug.vsprops',
                '../tools/build/win/precompiled_wtl.vsprops',
            ])

p.AddConfig('Release|Win32',
            InheritedPropertySheets=[
                './browser.vsprops',
                '$(SolutionDir)../build/release.vsprops',
                '$(SolutionDir)/tools/build/win/js_engine.vsprops',
            ])

p.AddFileConfig('../tools/build/win/precompiled_wtl.cc',
                'Debug|Win32',
                tools=[
                    MSVSTool('VCCLCompilerTool',
                             UsePrecompiledHeader='1'),
                ])

p.AddFileConfig('../tools/build/win/precompiled_wtl.cc',
                'Release|Win32',
                ExcludedFromBuild='true',
                tools=[
                    'VCCLCompilerTool',
                ])

xmldoc_files = [
    'net/url_fetcher.cc',
    'net/url_fetcher_protect.cc',
    'net/url_fixer_upper.cc',
    'password_manager/encryptor.cc',
    'search_engines/template_url.cc',
    'search_engines/template_url_fetcher.cc',
    'search_engines/template_url_model.cc',
    'search_engines/template_url_parser.cc',
    'search_engines/template_url_prepopulate_data.cc',
    'ssl/ssl_blocking_page.cc',
    'ssl/ssl_error_info.cc',
    'ssl/ssl_host_state.cc',
    'ssl/ssl_manager.cc',
    'ssl/ssl_policy.cc',
    'tab_contents/interstitial_page.cc',
    'tab_contents/native_ui_contents.cc',
    'tab_contents/navigation_controller.cc',
    'tab_contents/navigation_entry.cc',
    'tab_contents/provisional_load_details.cc',
    'tab_contents/site_instance.cc',
    'tab_contents/web_drag_source.cc',
    'tab_contents/web_drop_target.cc',
]

xmldoc_tool_list = [
    MSVSTool('VCCLCompilerTool',
             XMLDocumentationFileName=('$(IntDir)/$(InputName)1.xdc'),
             ObjectFile='$(IntDir)/$(InputName)1.obj'),
]

for filename in xmldoc_files:
  p.AddFileConfig(filename, 'Debug|Win32', xmldoc_tool_list)
  p.AddFileConfig(filename, 'Release|Win32', xmldoc_tool_list)