Index: mojo/shell/url_resolver.cc |
diff --git a/mojo/shell/url_resolver.cc b/mojo/shell/url_resolver.cc |
index 20cb000893e5e609bdc6eda3ae095625a34192d6..7d4c8c270dd18f9b8405675d1614fd99d85400fa 100644 |
--- a/mojo/shell/url_resolver.cc |
+++ b/mojo/shell/url_resolver.cc |
@@ -6,6 +6,7 @@ |
#include "base/base_paths.h" |
#include "base/files/file_path.h" |
+#include "base/files/file_util.h" |
#include "base/logging.h" |
#include "base/strings/utf_string_conversions.h" |
#include "mojo/shell/application_manager/query_util.h" |
@@ -105,13 +106,19 @@ GURL URLResolver::ResolveMojoURL(const GURL& mojo_url) const { |
if (mojo_url.scheme() != "mojo") { |
// The mapping has produced some sort of non-mojo: URL - file:, http:, etc. |
return mojo_url; |
- } else { |
- // It's still a mojo: URL, use the default mapping scheme. |
- std::string query; |
- GURL base_url = GetBaseURLAndQuery(mojo_url, &query); |
- std::string lib = base_url.host() + ".mojo" + query; |
- return mojo_base_url_.Resolve(lib); |
} |
+ |
+ // It's still a mojo: URL, use the default mapping scheme. |
+ std::string query; |
+ GURL base_url = GetBaseURLAndQuery(mojo_url, &query); |
+ if (mojo_base_url_.SchemeIsFile()) { |
+ const GURL url_with_directory( |
+ mojo_base_url_.Resolve(base_url.host() + "/")); |
+ const base::FilePath file_path(UrlToFilePath(url_with_directory)); |
+ if (base::DirectoryExists(file_path)) |
+ return url_with_directory.Resolve(base_url.host() + ".mojo" + query); |
+ } |
+ return mojo_base_url_.Resolve(base_url.host() + ".mojo" + query); |
} |
} // namespace shell |