| Index: mojo/shell/mojo_url_resolver.cc
|
| diff --git a/mojo/shell/mojo_url_resolver.cc b/mojo/shell/mojo_url_resolver.cc
|
| index c399854905e348b84ff7d0a074e853d7e23fa551..75c625ca6c3fb44105f812f34f0d48d807f3dc24 100644
|
| --- a/mojo/shell/mojo_url_resolver.cc
|
| +++ b/mojo/shell/mojo_url_resolver.cc
|
| @@ -70,14 +70,16 @@ void MojoURLResolver::AddLocalFileMapping(const GURL& mojo_url) {
|
| }
|
|
|
| GURL MojoURLResolver::Resolve(const GURL& mojo_url) const {
|
| - std::map<GURL, GURL>::const_iterator it = url_map_.find(mojo_url);
|
| - if (it != url_map_.end())
|
| - return it->second;
|
| + const GURL mapped_url(ApplyCustomMappings(mojo_url));
|
|
|
| - std::string lib = MakeSharedLibraryName(mojo_url.host());
|
| + // Continue resolving if the mapped url is a mojo: url.
|
| + if (mapped_url.scheme() != "mojo")
|
| + return mapped_url;
|
| +
|
| + std::string lib = MakeSharedLibraryName(mapped_url.host());
|
|
|
| if (!base_url_.is_valid() ||
|
| - local_file_set_.find(mojo_url) != local_file_set_.end()) {
|
| + local_file_set_.find(mapped_url) != local_file_set_.end()) {
|
| // Resolve to a local file URL.
|
| return default_base_url_.Resolve(lib);
|
| }
|
| @@ -86,5 +88,16 @@ GURL MojoURLResolver::Resolve(const GURL& mojo_url) const {
|
| return base_url_.Resolve(lib);
|
| }
|
|
|
| +GURL MojoURLResolver::ApplyCustomMappings(const GURL& url) const {
|
| + GURL mapped_url(url);
|
| + for (;;) {
|
| + std::map<GURL, GURL>::const_iterator it = url_map_.find(mapped_url);
|
| + if (it == url_map_.end())
|
| + break;
|
| + mapped_url = it->second;
|
| + }
|
| + return mapped_url;
|
| +}
|
| +
|
| } // namespace shell
|
| } // namespace mojo
|
|
|