Shutdown RenderWidgetHost owned by RenderFrameHost when destroying the RenderFrameHost.
[chromium-blink-merge.git] / mojo / shell / network_fetcher.h
blob028ec5b212102c81fe2205a26737e93ef4838f69
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MOJO_SHELL_NETWORK_FETCHER_H_
6 #define MOJO_SHELL_NETWORK_FETCHER_H_
8 #include "mojo/shell/fetcher.h"
10 #include "base/files/file_path.h"
11 #include "base/memory/weak_ptr.h"
12 #include "mojo/services/network/public/interfaces/url_loader.mojom.h"
13 #include "url/gurl.h"
15 namespace mojo {
17 class NetworkService;
19 namespace shell {
21 // Implements Fetcher for http[s] files.
22 class NetworkFetcher : public Fetcher {
23 public:
24 NetworkFetcher(bool disable_cache,
25 const GURL& url,
26 NetworkService* network_service,
27 const FetchCallback& loader_callback);
29 ~NetworkFetcher() override;
31 private:
32 // TODO(hansmuller): Revisit this when a real peek operation is available.
33 static const MojoDeadline kPeekTimeout = MOJO_DEADLINE_INDEFINITE;
35 const GURL& GetURL() const override;
36 GURL GetRedirectURL() const override;
38 URLResponsePtr AsURLResponse(base::TaskRunner* task_runner,
39 uint32_t skip) override;
41 static void RecordCacheToURLMapping(const base::FilePath& path,
42 const GURL& url);
44 // AppIds should be be both predictable and unique, but any hash would work.
45 // Currently we use sha256 from crypto/secure_hash.h
46 static bool ComputeAppId(const base::FilePath& path,
47 std::string* digest_string);
49 static bool RenameToAppId(const GURL& url,
50 const base::FilePath& old_path,
51 base::FilePath* new_path);
53 void CopyCompleted(base::Callback<void(const base::FilePath&, bool)> callback,
54 bool success);
56 void AsPath(
57 base::TaskRunner* task_runner,
58 base::Callback<void(const base::FilePath&, bool)> callback) override;
60 std::string MimeType() override;
62 bool HasMojoMagic() override;
64 bool PeekFirstLine(std::string* line) override;
66 void StartNetworkRequest(const GURL& url, NetworkService* network_service);
68 void OnLoadComplete(URLResponsePtr response);
70 bool disable_cache_;
71 const GURL url_;
72 URLLoaderPtr url_loader_;
73 URLResponsePtr response_;
74 base::FilePath path_;
75 base::WeakPtrFactory<NetworkFetcher> weak_ptr_factory_;
77 DISALLOW_COPY_AND_ASSIGN(NetworkFetcher);
80 } // namespace shell
81 } // namespace mojo
83 #endif // MOJO_SHELL_NETWORK_FETCHER_H_