Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: sky/engine/core/script/dart_library_provider_webview.cc

Issue 1203143004: Make it possible to run Sky apps offline (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: gn check Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sky/engine/core/script/dart_library_provider_network.h" 5 #include "sky/engine/core/script/dart_library_provider_webview.h"
6 6
7 #include "sky/engine/platform/fetcher/MojoFetcher.h" 7 #include "sky/engine/platform/fetcher/MojoFetcher.h"
8 #include "sky/engine/platform/weborigin/KURL.h" 8 #include "sky/engine/platform/weborigin/KURL.h"
9 #include "sky/engine/tonic/dart_converter.h" 9 #include "sky/engine/tonic/dart_converter.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 typedef base::Callback<void(mojo::ScopedDataPipeConsumerHandle)> 13 class DartLibraryProviderWebView::Job : public MojoFetcher::Client {
14 CompletionCallback;
15
16 class DartLibraryProviderNetwork::Job : public MojoFetcher::Client {
17 public: 14 public:
18 Job(DartLibraryProviderNetwork* provider, 15 Job(DartLibraryProviderWebView* provider,
19 const String& name, 16 const String& name,
20 CompletionCallback callback) 17 DataPipeConsumerCallback callback)
21 : provider_(provider), callback_(callback) { 18 : provider_(provider), callback_(callback) {
22 fetcher_ = adoptPtr(new MojoFetcher(this, KURL(ParsedURLString, name))); 19 fetcher_ = adoptPtr(new MojoFetcher(this, KURL(ParsedURLString, name)));
23 } 20 }
24 21
25 ~Job() override {} 22 ~Job() override {}
26 23
27 private: 24 private:
28 void OnReceivedResponse(mojo::URLResponsePtr response) { 25 void OnReceivedResponse(mojo::URLResponsePtr response) {
29 if (response->status_code != 200) { 26 if (response->status_code != 200) {
30 callback_.Run(mojo::ScopedDataPipeConsumerHandle()); 27 callback_.Run(mojo::ScopedDataPipeConsumerHandle());
31 } else { 28 } else {
32 callback_.Run(response->body.Pass()); 29 callback_.Run(response->body.Pass());
33 } 30 }
34 provider_->jobs_.remove(this); 31 provider_->jobs_.remove(this);
35 // We're deleted now. 32 // We're deleted now.
36 } 33 }
37 34
38 DartLibraryProviderNetwork* provider_; 35 DartLibraryProviderWebView* provider_;
39 CompletionCallback callback_; 36 DataPipeConsumerCallback callback_;
40 OwnPtr<MojoFetcher> fetcher_; 37 OwnPtr<MojoFetcher> fetcher_;
41 }; 38 };
42 39
43 DartLibraryProviderNetwork::PrefetchedLibrary::PrefetchedLibrary() { 40 DartLibraryProviderWebView::DartLibraryProviderWebView() {
44 } 41 }
45 42
46 DartLibraryProviderNetwork::PrefetchedLibrary::~PrefetchedLibrary() { 43 DartLibraryProviderWebView::~DartLibraryProviderWebView() {
47 } 44 }
48 45
49 DartLibraryProviderNetwork::DartLibraryProviderNetwork( 46 void DartLibraryProviderWebView::GetLibraryAsStream(
50 PassOwnPtr<PrefetchedLibrary> prefetched)
51 : prefetched_library_(prefetched) {
52 }
53
54 DartLibraryProviderNetwork::~DartLibraryProviderNetwork() {
55 }
56
57 void DartLibraryProviderNetwork::GetLibraryAsStream(
58 const String& name, 47 const String& name,
59 CompletionCallback callback) { 48 DataPipeConsumerCallback callback) {
60 if (prefetched_library_ && prefetched_library_->name == name) {
61 mojo::ScopedDataPipeConsumerHandle pipe = prefetched_library_->pipe.Pass();
62 prefetched_library_ = nullptr;
63 callback.Run(pipe.Pass());
64 return;
65 }
66
67 jobs_.add(adoptPtr(new Job(this, name, callback))); 49 jobs_.add(adoptPtr(new Job(this, name, callback)));
68 } 50 }
69 51
70 Dart_Handle DartLibraryProviderNetwork::CanonicalizeURL(Dart_Handle library, 52 Dart_Handle DartLibraryProviderWebView::CanonicalizeURL(Dart_Handle library,
71 Dart_Handle url) { 53 Dart_Handle url) {
72 String string = StringFromDart(url); 54 String string = StringFromDart(url);
73 if (string.startsWith("dart:")) 55 if (string.startsWith("dart:"))
74 return url; 56 return url;
75 // TODO(abarth): The package root should be configurable. 57 // TODO(abarth): The package root should be configurable.
76 if (string.startsWith("package:")) 58 if (string.startsWith("package:"))
77 string.replace("package:", "/packages/"); 59 string.replace("package:", "/packages/");
78 String library_url_string = StringFromDart(Dart_LibraryUrl(library)); 60 String library_url_string = StringFromDart(Dart_LibraryUrl(library));
79 KURL library_url = KURL(ParsedURLString, library_url_string); 61 KURL library_url = KURL(ParsedURLString, library_url_string);
80 KURL resolved_url = KURL(library_url, string); 62 KURL resolved_url = KURL(library_url, string);
81 return StringToDart(DartState::Current(), resolved_url.string()); 63 return StringToDart(DartState::Current(), resolved_url.string());
82 } 64 }
83 65
84 } // namespace blink 66 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/script/dart_library_provider_webview.h ('k') | sky/engine/core/script/dom_dart_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698