include_rules = [
  # History is being made into a Browser Component (http://crbug.com/370850), so
  # we have these basic rules followed by temporary exceptions.  Please don't
  # add to the list of exceptions!
  #
  # Please send reviews to sdefresne@chromium.org when adding dependencies to
  # this list.
  "-chrome/browser",
  "-components",

  "+chrome/browser/history",
  "-chrome/browser/history/android",

  "+components/history",
  "+components/favicon_base",
  "+components/keyed_service/core",
  "+components/signin/core/browser",

  # TODO(sdefresne): Bring this list to zero.
  #
  # Do not add to the list of temporarily-allowed dependencies below,
  # and please do not introduce more #includes of these files.
  "!chrome/browser/chrome_notification_types.h",
  "!chrome/browser/prerender/prerender_contents.h",
  "!chrome/browser/prerender/prerender_manager.h",
  "!chrome/browser/prerender/prerender_manager_factory.h",
  "!chrome/browser/profiles/incognito_helpers.h",
  "!chrome/browser/profiles/profile.h",
  "!chrome/browser/profiles/profile_manager.h",
  "!chrome/browser/ui/browser.h",
  "!chrome/browser/ui/browser_finder.h",
  "!components/dom_distiller/core/url_constants.h",
]

specific_include_rules = {
  # Browser tests, by definition, need access to the browser objects.
  '.*_(api|browser|)test\.cc': [
    "+chrome/browser",
  ],
  # chrome_.* and .*_factory won't be componentized as they belong to the
  # embedder, so they can depend on other feature in chrome/.  Same thing
  # for android specific code.
  '(chrome_.*|.*_factory)\.(cc|h)': [
    "+chrome/browser/bookmarks/bookmark_model_factory.h",
    "+chrome/browser/bookmarks/chrome_bookmark_client.h",
    "+chrome/browser/bookmarks/chrome_bookmark_client_factory.h",
    "+chrome/browser/content_settings/cookie_settings.h",
    "+chrome/browser/history/android/android_provider_backend.h",
    "+chrome/browser/signin/profile_oauth2_token_service_factory.h",
    "+chrome/browser/signin/signin_manager_factory.h",
    "+chrome/browser/sync/profile_sync_service.h",
    "+chrome/browser/sync/profile_sync_service_factory.h",
    "+chrome/browser/ui/profile_error_dialog.h",
    "+components/bookmarks/browser",
    "+components/keyed_service/content",
    "+components/pref_registry",
  ],
  # Those files will move to //components/history/content/browser and thus
  # can depend on //content even indirectly.
  'content_.*\.(cc|h)': [
    "+components/visitedlink/browser",
  ],
  # TODO(sdefresne): Bring this list to zero.
  #
  # Do not add to the list of temporarily-allowed dependencies below,
  # and please do not introduce more #includes of these files.
  '.*_[a-z]*test\.cc': [
    "!chrome/browser/bookmarks/bookmark_model_factory.h",
    "!chrome/browser/signin/profile_oauth2_token_service_factory.h",
    "!chrome/browser/signin/signin_manager_factory.h",
    "!chrome/browser/sync/profile_sync_service.h",
    "!chrome/browser/sync/profile_sync_service_factory.h",
    "!chrome/browser/sync/profile_sync_service_mock.h",
    "!components/bookmarks/test/bookmark_test_helpers.h",
  ]
}
