Index: mojo/shell/application_manager/fetcher.cc |
diff --git a/mojo/shell/application_manager/fetcher.cc b/mojo/shell/application_manager/fetcher.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..78fd1255d2a726cb804a79fcb25927cb8e123e02 |
--- /dev/null |
+++ b/mojo/shell/application_manager/fetcher.cc |
@@ -0,0 +1,38 @@ |
+// 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. |
+ |
+#include "mojo/shell/application_manager/fetcher.h" |
+ |
+#include "url/gurl.h" |
+ |
+namespace mojo { |
+namespace shell { |
+ |
+const char Fetcher::kMojoMagic[] = "#!mojo "; |
+const size_t Fetcher::kMaxShebangLength = 2048; |
+ |
+Fetcher::Fetcher(const FetchCallback& loader_callback) |
+ : loader_callback_(loader_callback) { |
+} |
+ |
+Fetcher::~Fetcher() { |
+} |
+ |
+bool Fetcher::PeekContentHandler(std::string* mojo_shebang, |
+ GURL* mojo_content_handler_url) { |
+ // TODO(aa): I guess this should just go in ApplicationManager now. |
+ std::string shebang; |
+ if (HasMojoMagic() && PeekFirstLine(&shebang)) { |
+ GURL url(shebang.substr(arraysize(kMojoMagic) - 1, std::string::npos)); |
+ if (url.is_valid()) { |
+ *mojo_shebang = shebang; |
+ *mojo_content_handler_url = url; |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
+} // namespace shell |
+} // namespace mojo |