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

Unified Diff: examples/dart/wget.dart

Issue 816113004: Dart: Adds a content handler and a test. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: examples/dart/wget.dart
diff --git a/examples/dart/wget.dart b/examples/dart/wget.dart
new file mode 100644
index 0000000000000000000000000000000000000000..84c3f4e35c1974f04ed3d98608f8058a4f4faccd
--- /dev/null
+++ b/examples/dart/wget.dart
@@ -0,0 +1,79 @@
+#!mojo mojo:dart_content_handler
+
+// Copyright 2014 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.
+
+import 'dart:async';
+import 'dart:mojo_application';
+import 'dart:mojo_bindings';
+import 'dart:mojo_core';
+import 'dart:typed_data';
+
+import 'package:mojo/services/network/public/interfaces/network_service.mojom.dart';
+import 'package:mojo/services/network/public/interfaces/url_loader.mojom.dart';
+
+class WGet extends Application {
+ NetworkServiceClient _networkServiceClient;
+ UrlLoaderClient _urlLoaderClient;
+
+ WGet.fromHandle(MojoHandle shellHandle) : super.fromHandle(shellHandle);
+
+ void initialize(List<String> args) {
+ run(args);
+ }
+
+ run(List<String> args) async {
+ if (args.length != 2) {
+ throw "Expected URL argument";
+ }
+
+ ByteData bodyData = await _getUrl(args[1]);
+ print("read ${bodyData.lengthInBytes} bytes");
+
+ _closeClients();
+ close();
+ }
+
+ Future<ByteData> _getUrl(String url) async {
+ _initClientsIfNeeded();
+
+ var urlRequest = new UrlRequest()
+ ..url = url
+ ..autoFollowRedirects = true;
+
+ var urlResponse = await _urlLoaderClient.callStart(urlRequest);
+ print("url => ${urlResponse.response.url}");
+ print("status_line => ${urlResponse.response.statusLine}");
+ print("mime_type => ${urlResponse.response.mimeType}");
+
+ return DataPipeDrainer.drainHandle(urlResponse.response.body);
+ }
+
+ void _initClientsIfNeeded() {
+ if (_networkServiceClient == null) {
+ var networkServiceClientEndpoint = connectToService(
+ "mojo:network_service", NetworkServiceInterface.name);
+ _networkServiceClient =
+ new NetworkServiceClient(networkServiceClientEndpoint);
+ }
+ if (_urlLoaderClient == null) {
+ _urlLoaderClient = new UrlLoaderClient.unbound();
+ _networkServiceClient.callCreateUrlLoader(_urlLoaderClient);
+ }
+ }
+
+ void _closeClients() {
+ _urlLoaderClient.close();
+ _networkServiceClient.close();
+ _urlLoaderClient = null;
+ _networkServiceClient = null;
+ }
+}
+
+main(List args) {
+ MojoHandle shellHandle = new MojoHandle(args[0]);
+ String url = args[1];
+ var wget = new WGet.fromHandle(shellHandle);
+ wget.listen();
+}
« no previous file with comments | « no previous file | mojo/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698