Remove mojom_fetcher.

* No one uses it (and no one is maintaining it).
* It depends on the old mojom parser.

R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/1709333002 .
diff --git a/mojo/public/tools/mojom_fetcher/build_gn.tmpl b/mojo/public/tools/mojom_fetcher/build_gn.tmpl
deleted file mode 100644
index f14c950..0000000
--- a/mojo/public/tools/mojom_fetcher/build_gn.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015 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.
-
-## This file is automatically generated by mojo/public/tools/mojom_fetcher/mojom_gn.py.
-## Manual changes may be overwritten.
-
-import("//build/module_args/mojo.gni")
-import("$mojo_sdk_root/mojo/public/tools/bindings/mojom.gni")
-
-mojom("{{group_name}}") {
-  deps = [{% for mojom in mojoms %}
-    ":{{mojom.target_name}}",{% endfor %}
-  ]
-}
-{% for mojom in mojoms %}
-mojom("{{mojom.target_name}}") {
-  sources = [
-    "{{mojom.filename}}",
-  ]{% if mojom.import_dirs %}
-  import_dirs = [{% for dir in mojom.import_dirs %}
-    get_path_info("{{dir}}", "abspath"),{% endfor %}
-  ]{% endif %}{% if mojom.mojo_sdk_deps %}
-  mojo_sdk_deps = [{% for dep in mojom.mojo_sdk_deps %}
-    "{{dep}}",{% endfor %}
-  ]{% endif %}{% if mojom.deps %}
-  deps = [{% for dep in mojom.deps %}
-    "{{dep}}",{% endfor %}
-  ]{% endif %}
-}{% endfor %}
diff --git a/mojo/public/tools/mojom_fetcher/mojom_fetcher.py b/mojo/public/tools/mojom_fetcher/mojom_fetcher.py
deleted file mode 100755
index b0283e3..0000000
--- a/mojo/public/tools/mojom_fetcher/mojom_fetcher.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2015 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.
-
-"""Tool to manage external mojom interfaces."""
-
-import argparse
-import errno
-import logging
-import os
-import sys
-import urllib2
-
-# Local library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "pylib"))
-# Bindings library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "bindings", "pylib"))
-# Requests library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "..", "..", "..", "third_party",
-                                "requests", "src"))
-
-import requests
-
-from fetcher.repository import Repository
-from fetcher.dependency import Dependency
-from mojom.parse.parser import Parse, ParseError
-
-
-class UrlRewriterException(Exception):
-  """Exception when processing URL rewrite rules."""
-  pass
-
-class UrlRewriter(object):
-  """UrlRewriter rewrites URLs according to the provided mappings.
-
-  Note that mappings are not followed transitively. If mappings contains
-  {"a": "b", "b": "c"}, then UrlRewriter.rewrite("a") will return "b", not "c".
-  """
-
-  def __init__(self, mappings):
-    self._mappings = mappings
-    for target in self._mappings.values():
-      for source in self._mappings.keys():
-        if source in target or target in source:
-          raise UrlRewriterException(
-              "%s and %s share a common subpath" % (source, target))
-
-  def rewrite(self, path):
-    for origin, destination in self._mappings.items():
-      if path.startswith(origin):
-        return destination + path[len(origin):]
-    return path
-
-
-class MojomFetcher(object):
-  def __init__(self, repository, url_rewriter):
-    self._repository = repository
-    self._url_rewriter = url_rewriter
-
-  def _requests_get(self, url):
-    return requests.get(url, verify=True)
-
-  def _os_makedirs(self, dirs):
-    try:
-      os.makedirs(dirs)
-    except OSError as e:
-      # The directory may already exist, we don't care.
-      if e.errno != errno.EEXIST:
-        raise
-
-  def _open(self, f, mode="r"):
-    return open(f, mode)
-
-  def _download_dependencies(self, dependencies):
-    """Takes the list of mojom dependencies and download the external ones.
-    Returns the number of successfully downloaded dependencies."""
-
-    downloaded = 0
-    for dep in dependencies:
-      if self._maybe_download_dep(dep):
-        downloaded += 1
-    return downloaded
-
-  def _maybe_download_dep(self, dep):
-    if not dep.maybe_is_a_url():
-      return False
-
-    for candidate in dep.generate_candidate_urls():
-      url = self._url_rewriter.rewrite(candidate)
-      response = self._requests_get("https://" + url)
-      if not response.ok:
-        # If we get an error, it just mean that this candidate URL is not
-        # correct. We must try the other ones before giving up.
-        logging.debug("Error while downloading %s (%s)", candidate, url)
-        continue
-      # This is an external dependency
-      directory = os.path.dirname(candidate)
-      full_directory = os.path.join(self._repository.get_external_directory(),
-                                    directory)
-      try:
-        self._os_makedirs(full_directory)
-      except OSError as e:
-        # The directory may already exist, we don't care.
-        if e.errno != errno.EEXIST:
-          raise
-      with self._open(os.path.join(self._repository.get_external_directory(),
-                             candidate), "w") as f:
-        data = response.content
-        try:
-          Parse(data, candidate)
-        except ParseError:
-          logging.warn("File at %s is not a mojom", url)
-          break
-        f.write(data)
-      return True
-    return False
-
-  def discover(self):
-    """Discover missing .mojom dependencies and download them."""
-    while True:
-      missing_deps = self._repository.get_missing_dependencies()
-      downloaded = self._download_dependencies(missing_deps)
-      if downloaded == 0:
-        return 0
-
-  def get(self, dep):
-    dependency = Dependency(self._repository, ".", dep)
-    downloaded = self._download_dependencies([dependency])
-    if downloaded != 0:
-      return self.discover()
-    else:
-      return -1
-
-  def update(self):
-    dependencies = [Dependency(self._repository, ".", f)
-                    for f in self._repository.get_external_urls()]
-    # TODO(etiennej): We may want to suggest to the user to delete
-    # un-downloadable dependencies.
-    downloaded = self._download_dependencies(dependencies)
-    if downloaded != 0:
-      return self.discover()
-    else:
-      return -1
-
-def _main(args):
-  if args.prefix_rewrite:
-    rewrite_rules = dict([x.split(':', 1) for x in args.prefix_rewrite])
-  else:
-    rewrite_rules = {}
-  rewriter = UrlRewriter(rewrite_rules)
-  repository_path = os.path.abspath(args.repository_path)
-  repository = Repository(repository_path, args.external_dir)
-  fetcher = MojomFetcher(repository, rewriter)
-  if args.action == 'discover':
-    return fetcher.discover()
-  elif args.action == 'get':
-    return fetcher.get(args.url)
-  elif args.action == 'update':
-    return fetcher.update()
-  else:
-    logging.error("No matching action %s", args.action[0])
-    return -1
-
-def main():
-  logging.basicConfig(level=logging.ERROR)
-  parser = argparse.ArgumentParser(description='Download mojom dependencies.')
-  parser.add_argument('--repository-path', type=str, action='store',
-                      default='.', help='The path to the client repository.')
-  parser.add_argument('--external-dir', type=str, action='store',
-                      default='external',
-                      help='Directory for external interfaces')
-  parser.add_argument('--prefix-rewrite', type=str, action='append',
-                      help='If present, "origin:destination" pairs. "origin" '
-                      'prefixes will be rewritten as "destination". May be '
-                      'used several times. Rewrites are not transitive.')
-
-  subparsers = parser.add_subparsers(dest='action', help='action')
-  parser_get = subparsers.add_parser(
-      'get', help='Get the specified URL and all its transitive dependencies')
-  parser_get.add_argument('url', type=str, nargs=1,
-                      help='URL to download for get action')
-  subparsers.add_parser(
-      'discover',
-      help='Recursively discover and download new external dependencies')
-  subparsers.add_parser('update', help='Update all external dependencies')
-
-  args = parser.parse_args()
-  return _main(args)
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/mojo/public/tools/mojom_fetcher/mojom_gn.py b/mojo/public/tools/mojom_fetcher/mojom_gn.py
deleted file mode 100755
index 7f812e6..0000000
--- a/mojo/public/tools/mojom_fetcher/mojom_gn.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2015 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.
-
-"""BUILD file generator for mojoms."""
-
-import argparse
-import errno
-import imp
-import logging
-import os
-import sys
-import urllib2
-
-# Local library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "pylib"))
-# Bindings library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "bindings", "pylib"))
-# Jinja2 library
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "..", "third_party"))
-import jinja2
-
-from fetcher.repository import Repository
-
-
-class BuildGNGenerator(object):
-  def __init__(self, repository, template_dir):
-    self._repository = repository
-    self._import_dirs = []
-    self.environment = jinja2.Environment(
-        loader=jinja2.FileSystemLoader(template_dir))
-
-  def generate(self):
-    build_gn_tmpl = self.environment.get_template('build_gn.tmpl')
-    directories = self._repository.get_all_external_mojom_directories()
-    for directory in directories:
-      logging.debug("Generating %s", directory.get_build_gn_path())
-      params = directory.get_jinja_parameters(self._import_dirs)
-      f = self._open(directory.get_build_gn_path(), "w")
-      f.write(build_gn_tmpl.render(**params))
-
-  def add_import_dirs(self, import_dirs):
-    self._import_dirs.extend(import_dirs)
-
-  def _open(self, filename, mode):
-    return open(filename, mode)
-
-
-def _main(args):
-  repository_path = os.path.abspath(args.repository_path)
-  repository = Repository(repository_path, args.external_dir)
-  gn_generator = BuildGNGenerator(
-      repository, os.path.dirname(os.path.abspath(__file__)))
-  if args.extra_import_dirs:
-    gn_generator.add_import_dirs(args.extra_import_dirs)
-  gn_generator.generate()
-
-
-def main():
-  logging.basicConfig(level=logging.WARNING)
-  parser = argparse.ArgumentParser(
-      description='Generate BUILD.gn files for mojoms.')
-  parser.add_argument('--repository-path', type=str, default='.',
-                      help='The path to the client repository.')
-  parser.add_argument('--external-dir', type=str, default='external',
-                      help='Directory for external interfaces')
-  parser.add_argument(
-      '--extra-import-dirs', type=str, action='append',
-      help='Additional directories to search for imported mojoms.')
-  args = parser.parse_args()
-  return _main(args)
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/mojo/public/tools/mojom_fetcher/pylib/fetcher/__init__.py b/mojo/public/tools/mojom_fetcher/pylib/fetcher/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/mojo/public/tools/mojom_fetcher/pylib/fetcher/__init__.py
+++ /dev/null
diff --git a/mojo/public/tools/mojom_fetcher/pylib/fetcher/dependency.py b/mojo/public/tools/mojom_fetcher/pylib/fetcher/dependency.py
deleted file mode 100644
index ea299b3..0000000
--- a/mojo/public/tools/mojom_fetcher/pylib/fetcher/dependency.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright 2015 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 os
-
-
-class DuplicateDependencyFoundException(Exception):
-  """Two potentially matching files have been found that could satisfy this
-  dependency, so the right one cannot be selected automatically."""
-  pass
-
-
-class DependencyNotFoundException(Exception):
-  """The dependency hasn't been found on the local filesystem."""
-  pass
-
-
-class Dependency(object):
-  """Dependency represents an import request from one mojom file to another.
-  """
-  def __init__(self, repository, importer, imported):
-    self._repository = repository
-    self._importer_filename = os.path.normpath(importer)
-    self._imported_filename = os.path.normpath(imported)
-
-  def __str__(self):
-    return str(self.__dict__)
-
-  def __eq__(self, other):
-    return self.__dict__ == other.__dict__
-
-  def get_importer(self):
-    """Returns the name and full path of the file doing the import."""
-    return self._importer_filename
-
-  def get_imported(self):
-    """Returns the imported file (filename and path)."""
-    return self._imported_filename
-
-  def is_sdk_dep(self):
-    """Returns whether this dependency is from the mojo SDK."""
-    return (self._imported_filename.startswith("mojo/public/") or
-            self._imported_filename.startswith("//mojo/public/"))
-
-  def _is_in_external(self):
-    """Returns whether this dependency is under the external directory."""
-    common = os.path.commonprefix((self._repository.get_external_directory(),
-                                   self._importer_filename))
-    return common == self._repository.get_external_directory()
-
-  def maybe_is_a_url(self):
-    """Returns whether this dependency may be pointing to a downloadable
-    ressource."""
-    if self._is_in_external() and not self.is_sdk_dep():
-      # External dependencies may refer to other dependencies by relative path,
-      # so they can always be URLs.
-      return True
-
-    base, _ = self._imported_filename.split(os.path.sep, 1)
-    if not '.' in base:
-      # There is no dot separator in the first part of the path; it cannot be a
-      # URL.
-      return False
-    return True
-
-  def generate_candidate_urls(self):
-    """Generates possible paths where to download this dependency. It is
-    expected that at most one of them should work."""
-    candidates = []
-
-    base, _ = self._imported_filename.split(os.path.sep, 1)
-    if '.' in base and not base.startswith('.'):
-      # This import may be an absolute URL path (without scheme).
-      candidates.append(self._imported_filename)
-
-    # External dependencies may refer to other dependencies by relative path.
-    if self._is_in_external():
-      directory = os.path.relpath(os.path.dirname(self._importer_filename),
-                                  self._repository.get_external_directory())
-
-      # This is to handle the case where external dependencies use
-      # imports relative to a directory upper in the directory structure. As we
-      # don't know which directory, we need to go through all of them.
-      while len(directory) > 0:
-        candidates.append(os.path.join(directory, self._imported_filename))
-        directory = os.path.dirname(directory)
-    return candidates
-
-  def get_search_path_for_dependency(self):
-    """Return all possible search paths for this dependency."""
-
-    # Root directory and external directory are always included.
-    search_paths = set([self._repository.get_repo_root_directory(),
-                        self._repository.get_external_directory()])
-    # Local import paths
-    search_paths.add(os.path.dirname(self._importer_filename))
-
-    if self._is_in_external():
-      directory = os.path.dirname(self._importer_filename)
-
-      # This is to handle the case where external dependencies use
-      # imports relative to a directory upper in the directory structure. As we
-      # don't know which directory, we need to go through all of them.
-      while self._repository.get_external_directory() in directory:
-        search_paths.add(directory)
-        directory = os.path.dirname(directory)
-    return search_paths
-
-  def is_sdk_dep(self):
-    """Returns whether this dependency is from the mojo SDK."""
-    return self._imported_filename.startswith("mojo/public/")
-
-  def _os_path_exists(self, path):
-    return os.path.exists(path)
-
-  def get_target_and_import(self, extra_import_dirs):
-    """Returns a tuple (target, import_directory) for this dependency.
-    import_directory may be Null. extra_import_dirs lists directories that
-    should be searched for this dependency in addition to the ones directly
-    above the importing file.
-    """
-    directory = os.path.dirname(self.get_importer())
-    if self.is_sdk_dep():
-      return (os.path.dirname(self.get_imported()), None)
-
-    # We need to determine if it is a relative path or not
-    if self._os_path_exists(os.path.join(directory, self.get_imported())):
-      # This is a relative import path
-      dependency_path = os.path.normpath(os.path.join(directory,
-                                                      self.get_imported()))
-      return (target_from_path(os.path.relpath(dependency_path, directory)),
-              None)
-
-    if self._os_path_exists(
-        os.path.join(self._repository.get_external_directory(),
-                     self.get_imported())):
-      # This is an "absolute" external dependency, specified by full path
-      # relative to the external directory.
-      return (target_from_path(
-          "//" + os.path.join(self._repository.get_external_suffix(),
-                              self.get_imported())), None)
-
-    # We assume that the dependency is specified relative to a directory
-    # above this one, so we search all of them for a correspondence. If we
-    # find one, we return an import directory.
-    result = None
-    for import_dir_candidate in (list(self.get_search_path_for_dependency())
-                                  + extra_import_dirs):
-      dep_mojom_path = os.path.join(
-          import_dir_candidate, self.get_imported())
-      if self._os_path_exists(dep_mojom_path):
-        if result != None:
-          raise DuplicateDependencyFoundException(self.get_imported())
-        import_dir = os.path.relpath(import_dir_candidate, directory)
-        result = (target_from_path(os.path.relpath(
-            dep_mojom_path, directory)), import_dir)
-    if result == None:
-      raise DependencyNotFoundException(self.get_imported())
-    return result
-
-
-def group_target_name(directory):
-  """Returns the name of the group target for a given directory."""
-  return os.path.basename(directory)
-
-def _target_dir_from_path(path):
-  directory, filename = os.path.split(path)
-  target, _ = os.path.splitext(filename)
-  if target == group_target_name(directory):
-    target = target + "_mojom"
-  return directory, target
-
-def target_name_from_path(path):
-  return _target_dir_from_path(path)[1]
-
-
-def target_from_path(path):
-  return ':'.join(_target_dir_from_path(path))
-
diff --git a/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_directory.py b/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_directory.py
deleted file mode 100644
index 15fe34d..0000000
--- a/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_directory.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015 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 os
-
-from fetcher.dependency import group_target_name
-
-class MojomDirectory(object):
-  """This class represents a directory that directly holds mojom files, in the
-  external directory structure."""
-  def __init__(self, path):
-    self.path = path
-    self.mojoms = []
-
-  def add_mojom(self, mojom):
-    self.mojoms.append(mojom)
-
-  def get_jinja_parameters(self, include_dirs):
-    """Get the Jinja parameters to construct the BUILD.gn file of this
-    directory."""
-    params = {}
-    params["group_name"] = group_target_name(self.path)
-    params["mojoms"] = []
-    for mojom in self.mojoms:
-      params["mojoms"].append(mojom.get_jinja_parameters(include_dirs))
-    return params
-
-  def get_build_gn_path(self):
-    return os.path.join(self.path, "BUILD.gn")
diff --git a/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_file.py b/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_file.py
deleted file mode 100644
index d8dbea4..0000000
--- a/mojo/public/tools/mojom_fetcher/pylib/fetcher/mojom_file.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2015 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 os
-
-from fetcher.dependency import Dependency, target_name_from_path
-
-
-class MojomFile(object):
-  """Mojom represents an interface file at a given location in the
-  repository."""
-  def __init__(self, repository, name):
-    self.name = name
-    self._repository = repository
-    self.deps = []
-
-  def add_dependency(self, dependency):
-    """Declare a new dependency of this mojom."""
-    self.deps.append(Dependency(self._repository, self.name, dependency))
-
-  def get_jinja_parameters(self, include_dirs):
-    """Get the Jinja parameters to construct the BUILD.gn target of this
-    mojom."""
-    params = {}
-    params["filename"] = os.path.basename(self.name)
-    params["target_name"] = target_name_from_path(self.name)
-    params["deps"] = []
-    params["mojo_sdk_deps"] = []
-    params["import_dirs"] = set()
-
-    for dep in self.deps:
-      # Mojo SDK dependencies have special treatment.
-      if dep.is_sdk_dep():
-        target, _ = dep.get_target_and_import(include_dirs)
-        params["mojo_sdk_deps"].append(target)
-      else:
-        target, import_dir = dep.get_target_and_import(include_dirs)
-        if import_dir != None:
-            params["import_dirs"].add(import_dir)
-        params["deps"].append(target)
-
-    if len(params["import_dirs"]) != 0:
-      params["import_dirs"] = list(params["import_dirs"])
-    else:
-      del params["import_dirs"]
-    return params
-
-  def _os_path_exists(self, path):
-    return os.path.exists(path)
-
diff --git a/mojo/public/tools/mojom_fetcher/pylib/fetcher/repository.py b/mojo/public/tools/mojom_fetcher/pylib/fetcher/repository.py
deleted file mode 100644
index 8d9f051..0000000
--- a/mojo/public/tools/mojom_fetcher/pylib/fetcher/repository.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright 2015 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 os
-
-from fetcher.dependency import Dependency
-from fetcher.mojom_directory import MojomDirectory
-from fetcher.mojom_file import MojomFile
-from mojom.parse.parser import Parse
-
-
-class Repository(object):
-  """Repository represents a code repository on the local disc."""
-  def __init__(self, root_dir, external_dir):
-    """root_dir represents the root of the repository;
-    external_dir is the relative path of the external directory within the
-    repository (so, relative to root_dir)
-    """
-    self._root_dir = os.path.normpath(root_dir)
-    self._external_dir = external_dir
-
-  def get_repo_root_directory(self):
-    return self._root_dir
-
-  def get_external_directory(self):
-    return os.path.join(self._root_dir, self._external_dir)
-
-  def get_external_suffix(self):
-    return self._external_dir
-
-  def _os_walk(self, root_directory):
-    # This method is included for dependency injection
-    return os.walk(root_directory)
-
-  def _open(self, filename):
-    # This method is included for dependency injection
-    return open(filename)
-
-  def _get_all_mojom_in_directory(self, root_directory):
-    mojoms = []
-    for dirname, _, files in self._os_walk(root_directory):
-      for f in files:
-        if f.endswith(".mojom"):
-          mojoms.append(os.path.join(dirname,f))
-    return mojoms
-
-  def _resolve_dependencies(self, dependencies, mojoms):
-    """Resolve dependencies between discovered mojoms, so we know which are the
-    missing ones."""
-    missing = []
-    for dependency in dependencies:
-      found = False
-      for search_path in dependency.get_search_path_for_dependency():
-        if os.path.normpath(
-            os.path.join(search_path,
-                         dependency.get_imported())) in mojoms:
-          found = True
-          break
-      if not found:
-        missing.append(dependency)
-    return missing
-
-  def get_missing_dependencies(self):
-    """get_missing_dependencies returns a set of dependencies that are required
-    by mojoms in this repository but not available.
-    """
-    # Update the list of available mojoms in this repository.
-    mojoms = set(self._get_all_mojom_in_directory(self._root_dir))
-
-    # Find all declared dependencies
-    needed_deps = set([])
-    for mojom in mojoms:
-      with self._open(mojom) as f:
-        source = f.read()
-        tree = Parse(source, mojom)
-        for dep in tree.import_list:
-          needed_deps.add(Dependency(self, dep.filename, dep.import_filename))
-
-    missing_deps = self._resolve_dependencies(needed_deps, mojoms)
-
-    return missing_deps
-
-  def get_external_urls(self):
-    """Get all external mojom files in this repository, by urls (without
-    scheme)."""
-    mojoms = set(self._get_all_mojom_in_directory(
-        self.get_external_directory()))
-    urls = []
-    for mojom in mojoms:
-      urls.append(os.path.relpath(mojom, self.get_external_directory()))
-    return urls
-
-  def get_all_external_mojom_directories(self):
-    """Get all external directories populated with their mojom files."""
-    mojoms = self._get_all_mojom_in_directory(self.get_external_directory())
-    directories = {}
-    for mojom_path in mojoms:
-      directory_path = os.path.dirname(mojom_path)
-      directory = directories.setdefault(
-          directory_path, MojomDirectory(directory_path))
-      with self._open(mojom_path) as f:
-        source = f.read()
-        tree = Parse(source, mojom_path)
-        mojom = MojomFile(self, mojom_path)
-        directory.add_mojom(mojom)
-        for dep in tree.import_list:
-          mojom.add_dependency(dep.import_filename)
-    return directories.values()
-
-
-
-
-
-
diff --git a/mojo/tools/get_test_list.py b/mojo/tools/get_test_list.py
index 11c416d..73c7d3f 100755
--- a/mojo/tools/get_test_list.py
+++ b/mojo/tools/get_test_list.py
@@ -155,13 +155,6 @@
                            "run_mojom_translator_python_tests.py"),
               "--build-dir=" + build_dir])
 
-  # mojo tools unit tests:
-  if ShouldRunTest(Config.TEST_TYPE_DEFAULT, Config.TEST_TYPE_UNIT, "tools"):
-    AddEntry("Mojo tools unit tests",
-             ["python", os.path.join("mojo", "tools", "testing",
-                                     "mojom_fetcher",
-                                     "mojom_fetcher_tests.py")])
-
   # Observatory tests (Linux-only):
   if target_os == Config.OS_LINUX and ShouldRunTest(Config.TEST_TYPE_DEFAULT):
     AddEntry("Dart Observatory tests",
diff --git a/mojo/tools/testing/mojom_fetcher/dependency_tests.py b/mojo/tools/testing/mojom_fetcher/dependency_tests.py
deleted file mode 100644
index 68f0ed8..0000000
--- a/mojo/tools/testing/mojom_fetcher/dependency_tests.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2015 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 unittest
-
-from fetcher.dependency import Dependency
-
-class FakeRepository(object):
-  def get_repo_root_directory(self):
-    return "/base/repo"
-
-  def get_external_directory(self):
-    return "/base/repo/third_party/external"
-
-class TestDependency(unittest.TestCase):
-  def test_importer_imported(self):
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/foo/../bar/bar.mojom",
-                     "mojo/public/./../public/baz.mojom")
-
-    self.assertEqual("/base/repo/services/bar/bar.mojom", dep.get_importer())
-    self.assertEqual("mojo/public/baz.mojom", dep.get_imported())
-
-  def test_is_sdk_dep(self):
-    # Not in SDK
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/bar.mojom",
-                     "mojo/public/../foo/baz.mojom")
-    self.assertFalse(dep.is_sdk_dep())
-
-    # In SDK
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/bar.mojom",
-                     "mojo/public/baz.mojom")
-    self.assertTrue(dep.is_sdk_dep())
-
-  def test_maybe_is_a_url(self):
-    # Not a URL
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/bar.mojom",
-                     "mojo/foo/baz.mojom")
-    self.assertFalse(dep.maybe_is_a_url())
-
-    # URL import from non-external mojom
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/bar.mojom",
-                     "foo.bar.com/foo/baz.mojom")
-    self.assertTrue(dep.maybe_is_a_url())
-
-    # URL import from an external mojom
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/third_party/external/" +
-                     "services.bar.com/bar/bar.mojom",
-                     "foo.bar.com/foo/baz.mojom")
-    self.assertTrue(dep.maybe_is_a_url())
-
-    # relative import from an external mojom
-    dep = Dependency(
-        FakeRepository(),
-        "/base/repo/third_party/external/services.bar.com/bar/bar.mojom",
-        "foo/baz.mojom")
-    self.assertTrue(dep.maybe_is_a_url())
-
-    # external mojom importing SDK dep
-    dep = Dependency(
-        FakeRepository(),
-        "/base/repo/third_party/external/services.bar.com/bar/bar.mojom",
-        "mojo/public/foo/baz.mojom")
-    self.assertFalse(dep.maybe_is_a_url())
-
-  def test_generate_candidate_urls_relative(self):
-    dep = Dependency(
-        FakeRepository(),
-        "/base/repo/third_party/external/" +
-            "services.bar.com/bar/interfaces/bar.mojom",
-        "foo/baz.mojom")
-    self.assertTrue(dep.maybe_is_a_url())
-    candidate_urls = dep.generate_candidate_urls()
-    self.assertEqual(["services.bar.com/bar/interfaces/foo/baz.mojom",
-                       "services.bar.com/bar/foo/baz.mojom",
-                       "services.bar.com/foo/baz.mojom"], candidate_urls)
-
-  def test_generate_candidate_urls_absolute(self):
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/interfaces/bar.mojom",
-                     "services.foo.com/foo/baz.mojom")
-    self.assertTrue(dep.maybe_is_a_url())
-    candidate_urls = dep.generate_candidate_urls()
-    self.assertEqual(["services.foo.com/foo/baz.mojom"], candidate_urls)
-
-  def test_get_search_path_for_dependency(self):
-    # Absolute
-    dep = Dependency(FakeRepository(),
-                     "/base/repo/services/bar/interfaces/bar.mojom",
-                     "services.foo.com/foo/baz.mojom")
-    self.assertEqual(set(["/base/repo/services/bar/interfaces",
-                          "/base/repo", "/base/repo/third_party/external"]),
-                     dep.get_search_path_for_dependency())
-
-    # Relative
-    dep = Dependency(
-        FakeRepository(),
-        "/base/repo/third_party/external/services.foo.com/bar/bar.mojom",
-        "baz/baz.mojom")
-    self.assertEqual(set([
-        "/base/repo", "/base/repo/third_party/external",
-        "/base/repo/third_party/external/services.foo.com/bar",
-        "/base/repo/third_party/external/services.foo.com"]),
-                     dep.get_search_path_for_dependency())
diff --git a/mojo/tools/testing/mojom_fetcher/fakes.py b/mojo/tools/testing/mojom_fetcher/fakes.py
deleted file mode 100644
index 699d306..0000000
--- a/mojo/tools/testing/mojom_fetcher/fakes.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 2015 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 io
-import os.path
-
-from fetcher.dependency import Dependency
-from fetcher.mojom_file import MojomFile
-from fetcher.repository import Repository
-
-class FakeRepository(Repository):
-  data1 = """module test;
-import "bar/baz.mojom";
-interface Foo {};"""
-  data2 = """module test;
-import "services.domokit.org/foo/fiz.mojom";
-interface Baz {};"""
-  data3 = """module test;
-import "services.fiz.org/foo/bar.mojom";
-interface Fiz {};"""
-  data4 = """module test;
-interface SomeInterface {};"""
-
-  def __init__(self, *args, **kwargs):
-    self.files_opened = []
-    self.directories_walked = []
-    self.all_files_available = False
-
-    Repository.__init__(self, *args, **kwargs)
-
-  def get_walk_base(self, directory):
-    data_base = [
-        (directory, ["foo", "third_party"], []),
-        (os.path.join(directory, "foo"), ["bar"], ["foo.mojom"]),
-        (os.path.join(directory, "foo/bar"), [], ["baz.mojom"]),
-        (os.path.join(directory, "third_party"), ["external"], []),
-        (os.path.join(directory, "third_party/external"),
-         ["services.domokit.org"], []),
-        (os.path.join(directory,
-                      "third_party/external/services.domokit.org"),
-         ["foo"], []),
-        (os.path.join(directory,
-                      "third_party/external/services.domokit.org/foo"),
-         [], ["fiz.mojom"])]
-    if self.all_files_available:
-      data_base.extend([
-          (os.path.join(directory,
-                      "third_party/external/services.fiz.org"),
-           ["foo"], []),
-          (os.path.join(directory,
-                        "third_party/external/services.fiz.org/foo"),
-           [], ["bar.mojom"])])
-    return data_base
-
-  def get_walk_external(self, directory):
-    data_external = [
-        (directory, ["services.domokit.org"], []),
-        (os.path.join(directory, "services.domokit.org"),
-         ["foo"], []),
-        (os.path.join(directory, "services.domokit.org/foo"),
-         [], ["fiz.mojom"])]
-    if self.all_files_available:
-      data_external.extend([
-          (os.path.join(directory, "services.fiz.org"),
-           ["foo"], []),
-          (os.path.join(directory, "services.fiz.org/foo"),
-           [], ["bar.mojom"])])
-    return data_external
-
-
-  def _open(self, f):
-    self.files_opened.append(f)
-
-    if "foo.mojom" in f:
-      val = io.BytesIO(self.data1)
-    elif "baz.mojom" in f:
-      val = io.BytesIO(self.data2)
-    elif "fiz.mojom" in f:
-      val = io.BytesIO(self.data3)
-    else:
-      val = io.BytesIO(self.data4)
-    return val
-
-  def _os_walk(self, directory):
-    self.directories_walked.append(directory)
-    if directory == self._root_dir:
-      return iter(self.get_walk_base(directory))
-    else:
-      return iter(self.get_walk_external(directory))
-
-
-class FakeDependency(Dependency):
-  IN_FILESYSTEM = [
-      "/base/repo/third_party/external/example.com/dir/example.mojom",
-      "/base/repo/third_party/external/example.com/dir/dir.mojom",
-      "/base/repo/third_party/external/domokit.org/bar/baz/buzz.mojom",
-      "/base/repo/third_party/external/domokit.org/bar/foo/bar.mojom",
-      ]
-
-  def _os_path_exists(self, path):
-    if path in self.IN_FILESYSTEM:
-      return True
-    elif os.path.join("/base/repo", path) in self.IN_FILESYSTEM:
-      return True
-    else:
-      return False
-
-
-class FakeMojomFile(MojomFile):
-  def add_dependency(self, dependency):
-    """Declare a new dependency of this mojom."""
-    self.deps.append(FakeDependency(self._repository, self.name, dependency))
diff --git a/mojo/tools/testing/mojom_fetcher/mojom_directory_tests.py b/mojo/tools/testing/mojom_fetcher/mojom_directory_tests.py
deleted file mode 100644
index 0b2f5dd..0000000
--- a/mojo/tools/testing/mojom_fetcher/mojom_directory_tests.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2015 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 os.path
-import unittest
-
-from fakes import FakeMojomFile
-from fetcher.dependency import Dependency
-from fetcher.mojom_directory import MojomDirectory
-from fetcher.mojom_file import MojomFile
-from fetcher.repository import Repository
-
-
-class TestMojomDirectory(unittest.TestCase):
-  def test_build_gn_path(self):
-    directory = MojomDirectory(
-        "/base/repo/third_party/external/domokit.org/bar/baz")
-    self.assertEquals(
-        "/base/repo/third_party/external/domokit.org/bar/baz/BUILD.gn",
-        directory.get_build_gn_path())
-
-  def test_jinja_parameters(self):
-    mojom = FakeMojomFile(
-        Repository("/base/repo", "third_party/external"),
-        "/base/repo/third_party/external/domokit.org/bar/baz/foo.mojom")
-    mojom.add_dependency("example.com/dir/example.mojom")
-    mojom.add_dependency("example.com/dir/dir.mojom")
-    mojom.add_dependency("buzz.mojom")
-    mojom.add_dependency("foo/bar.mojom")
-    mojom.add_dependency(
-        "mojo/public/interfaces/application/shell.mojom")
-    directory = MojomDirectory(
-        "/base/repo/third_party/external/domokit.org/bar/baz")
-    directory.add_mojom(mojom)
-    params = directory.get_jinja_parameters([])
-    self.assertEquals(
-        {"group_name": "baz",
-         "mojoms": [{
-             "target_name": "foo",
-             "filename": "foo.mojom",
-             "import_dirs": [".."],
-             "mojo_sdk_deps": ["mojo/public/interfaces/application"],
-             "deps": [
-                 '//third_party/external/example.com/dir:example',
-                 '//third_party/external/example.com/dir:dir_mojom',
-                 ':buzz',
-                 '../foo:bar']
-             }]}, params)
-
diff --git a/mojo/tools/testing/mojom_fetcher/mojom_fetcher_tests.py b/mojo/tools/testing/mojom_fetcher/mojom_fetcher_tests.py
deleted file mode 100755
index 8781ffe..0000000
--- a/mojo/tools/testing/mojom_fetcher/mojom_fetcher_tests.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2015 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 io
-import os
-import sys
-import unittest
-
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "..", "..", "public", "tools",
-                                "mojom_fetcher"))
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "..", "..", "public", "tools",
-                                "mojom_fetcher", "pylib"))
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                "..", "..", "..", "public", "tools",
-                                "bindings", "pylib"))
-
-from mojom_fetcher import UrlRewriter, UrlRewriterException, MojomFetcher
-
-# Fake repository for testing
-from fakes import FakeRepository
-
-
-class TestUrlRewriter(unittest.TestCase):
-  def test_no_transitive(self):
-    rules = {"foo.com": "bar.com/foo", "bar.com": "baz.com"}
-    try:
-      UrlRewriter(rules)
-      self.fail()
-    except UrlRewriterException:
-      # This is expected
-      pass
-
-  def test_rewrite(self):
-    rules = {"foo.com": "bar.com/foo", "baz.com": "bar.com/baz"}
-    rewriter = UrlRewriter(rules)
-    self.assertEquals("bar.com/foo/foo_file",
-                      rewriter.rewrite("foo.com/foo_file"))
-    self.assertEquals("bar.com/baz/foo_file",
-                      rewriter.rewrite("baz.com/foo_file"))
-    self.assertEquals("example.com/file",
-                      rewriter.rewrite("example.com/file"))
-
-
-class FakeRequest(object):
-  def __init__(self, content, ok):
-    self.content = content
-    self.ok = ok
-
-
-class FakeMojomFetcher(MojomFetcher):
-  data = """module test;
-interface Fiz {};"""
-
-  def __init__(self, repository, rewriter):
-    self.count = 1
-    self.opened_files = {}
-    self.downloaded_urls = []
-    MojomFetcher.__init__(self, repository, rewriter)
-
-  def _requests_get(self, url):
-    self.downloaded_urls.append(url)
-    return FakeRequest(self.data, True)
-
-  def _os_makedirs(self, _):
-    return
-
-  def _open(self, f, _):
-    fake_file = io.BytesIO()
-    self.opened_files[f] = fake_file
-    if "services.fiz.org/foo/bar.mojom" in f:
-      self._repository.all_files_available = True
-    return fake_file
-
-
-class TestMojomFetcher(unittest.TestCase):
-  def setUp(self):
-    self.rules = {"foo.com": "bar.com/foo", "baz.com": "bar.com/baz"}
-    self.rewriter = UrlRewriter(self.rules)
-    self.repository = FakeRepository("/path/to/repo", "third_party/external")
-    self.fetcher = FakeMojomFetcher(self.repository, self.rewriter)
-
-  def test_get(self):
-    self.fetcher.get("foo.com/bar.mojom")
-    self.assertEquals(["https://bar.com/foo/bar.mojom",
-                       "https://services.fiz.org/foo/bar.mojom"],
-                      self.fetcher.downloaded_urls)
-
-  def test_update(self):
-    self.fetcher.update()
-    self.assertEquals(["https://services.domokit.org/foo/fiz.mojom",
-                       "https://services.fiz.org/foo/bar.mojom"],
-                      self.fetcher.downloaded_urls)
-
-  def test_discover(self):
-    self.fetcher.update()
-    self.assertEquals(["https://services.domokit.org/foo/fiz.mojom",
-                       "https://services.fiz.org/foo/bar.mojom"],
-                      self.fetcher.downloaded_urls)
-
-if __name__ == '__main__':
-  loader = unittest.defaultTestLoader
-  runner = unittest.TextTestRunner()
-  directory = os.path.dirname(os.path.abspath(__file__))
-  suite = loader.discover(directory, '*_tests.py')
-  runner.run(suite)
diff --git a/mojo/tools/testing/mojom_fetcher/mojom_file_tests.py b/mojo/tools/testing/mojom_fetcher/mojom_file_tests.py
deleted file mode 100644
index cb5558d..0000000
--- a/mojo/tools/testing/mojom_fetcher/mojom_file_tests.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2015 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 os.path
-import unittest
-
-from fetcher.mojom_file import MojomFile
-from fetcher.dependency import Dependency
-from fetcher.repository import Repository
-from fakes import FakeDependency, FakeMojomFile
-
-
-class TestMojomFile(unittest.TestCase):
-  def test_add_dependency(self):
-    mojom = MojomFile(Repository("/base/repo", "third_party/external"),
-                      "mojom_name")
-    mojom.add_dependency("dependency_name")
-    self.assertEqual(1, len(mojom.deps))
-    self.assertEqual("mojom_name", mojom.deps[0].get_importer())
-    self.assertEqual("dependency_name", mojom.deps[0].get_imported())
-
-  def test_jinja_parameters(self):
-    mojom = FakeMojomFile(
-        Repository("/base/repo", "third_party/external"),
-        "/base/repo/third_party/external/domokit.org/bar/baz/foo.mojom")
-    mojom.add_dependency("example.com/dir/example.mojom")
-    mojom.add_dependency("example.com/dir/dir.mojom")
-    mojom.add_dependency("buzz.mojom")
-    mojom.add_dependency("foo/bar.mojom")
-    mojom.add_dependency(
-        "mojo/public/interfaces/application/shell.mojom")
-    params = mojom.get_jinja_parameters([])
-    self.assertEquals({
-        "target_name": "foo",
-        "filename": "foo.mojom",
-        "import_dirs": [".."],
-        "mojo_sdk_deps": ["mojo/public/interfaces/application"],
-        "deps": [
-            '//third_party/external/example.com/dir:example',
-            '//third_party/external/example.com/dir:dir_mojom',
-            ':buzz',
-            '../foo:bar']
-        }, params)
diff --git a/mojo/tools/testing/mojom_fetcher/mojom_gn_tests.py b/mojo/tools/testing/mojom_fetcher/mojom_gn_tests.py
deleted file mode 100644
index 11e61b3..0000000
--- a/mojo/tools/testing/mojom_fetcher/mojom_gn_tests.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright 2015 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 io
-import os.path
-import unittest
-
-from fakes import FakeMojomFile
-from fetcher.mojom_directory import MojomDirectory
-from fetcher.repository import Repository
-from mojom_gn import BuildGNGenerator
-
-class FakeRepository(Repository):
-  def get_all_external_mojom_directories(self):
-    mojom = FakeMojomFile(
-        self, os.path.join(self.get_external_directory(),
-                           "domokit.org/bar/baz/foo.mojom"))
-    mojom.add_dependency("example.com/dir/example.mojom")
-    mojom.add_dependency("example.com/dir/dir.mojom")
-    mojom.add_dependency("buzz.mojom")
-    mojom.add_dependency("foo/bar.mojom")
-    mojom.add_dependency(
-        "mojo/public/interfaces/application/shell.mojom")
-    directory = MojomDirectory(
-        os.path.join(self.get_external_directory(),
-                     "domokit.org/bar/baz"))
-    directory.add_mojom(mojom)
-    return [directory]
-
-
-class FakeBuildGNGenerator(BuildGNGenerator):
-  def __init__(self, *args, **kwargs):
-    self.opened_files = {}
-    BuildGNGenerator.__init__(self, *args, **kwargs)
-
-  def _open(self, filepath, mode):
-    if mode != "w":
-      raise Exception("Invalid mode " + str(mode))
-    self.opened_files[filepath] = io.StringIO()
-    return self.opened_files[filepath]
-
-
-class TestBuildGNGenerator(unittest.TestCase):
-  BAZ_BUILD_GN = u"""import("//build/module_args/mojo.gni")
-import("$mojo_sdk_root/mojo/public/tools/bindings/mojom.gni")
-
-mojom("baz") {
-  deps = [
-    ":foo",
-  ]
-}
-
-mojom("foo") {
-  sources = [
-    "foo.mojom",
-  ]
-  import_dirs = [
-    get_path_info("..", "abspath"),
-  ]
-  mojo_sdk_deps = [
-    "mojo/public/interfaces/application",
-  ]
-  deps = [
-    "//third_party/external/example.com/dir:example",
-    "//third_party/external/example.com/dir:dir_mojom",
-    ":buzz",
-    "../foo:bar",
-  ]
-}"""
-  def test_generate(self):
-    self.maxDiff = None
-    repository = FakeRepository("/base/repo", "third_party/external")
-    gn_generator = FakeBuildGNGenerator(repository, os.path.abspath(
-        os.path.join(os.path.dirname(__file__),
-                     "../../../public/tools/mojom_fetcher")))
-    gn_generator.generate()
-    output_stream = gn_generator.opened_files[
-        "/base/repo/third_party/external/domokit.org/bar/baz/BUILD.gn"]
-    self.assertEquals(prepare_string(self.BAZ_BUILD_GN),
-                      prepare_string(output_stream.getvalue()))
-
-def prepare_string(value):
-  lines = value.split("\n")
-  lines = map(lambda l: l.strip().replace(" ", ""), lines)
-  lines = filter(lambda l: not l.startswith("#"), lines)
-  return ''.join(lines)
-
diff --git a/mojo/tools/testing/mojom_fetcher/repository_tests.py b/mojo/tools/testing/mojom_fetcher/repository_tests.py
deleted file mode 100644
index 46724d1..0000000
--- a/mojo/tools/testing/mojom_fetcher/repository_tests.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2015 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 io
-import os.path
-import unittest
-
-from fetcher.dependency import Dependency
-
-# Fake repository for testing
-from fakes import FakeRepository
-
-
-class TestRepository(unittest.TestCase):
-  def test_init(self):
-    repository = FakeRepository("/path/to/repo", "third_party/external")
-    self.assertEqual("/path/to/repo", repository.get_repo_root_directory())
-    self.assertEqual("/path/to/repo/third_party/external",
-                     repository.get_external_directory())
-
-  def test_get_missing_dependencies(self):
-    repository = FakeRepository("/path/to/repo", "third_party/external")
-    missing_deps = repository.get_missing_dependencies()
-    self.assertEquals(["/path/to/repo"], repository.directories_walked)
-    # Order is not important
-    self.assertIn("/path/to/repo/foo/foo.mojom", repository.files_opened)
-    self.assertIn("/path/to/repo/foo/bar/baz.mojom", repository.files_opened)
-    self.assertIn(
-        "/path/to/repo/third_party/external/services.domokit.org/foo/fiz.mojom",
-        repository.files_opened)
-    self.assertEquals(3, len(repository.files_opened))
-
-    self.assertEquals([Dependency(repository,
-        "/path/to/repo/third_party/external/services.domokit.org/foo/fiz.mojom",
-        "services.fiz.org/foo/bar.mojom")], missing_deps)
-
-  def test_get_external_urls(self):
-    repository = FakeRepository("/path/to/repo", "third_party/external")
-    urls = repository.get_external_urls()
-    self.assertEquals(["/path/to/repo/third_party/external"],
-                      repository.directories_walked)
-    self.assertEquals(["services.domokit.org/foo/fiz.mojom"], urls)