diff --git a/examples/demo_launcher/lib/main.dart b/examples/demo_launcher/lib/main.dart index 4432f1acafe..837ffc0cba0 100644 --- a/examples/demo_launcher/lib/main.dart +++ b/examples/demo_launcher/lib/main.dart @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:sky/mojo/activity.dart'; -import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/services.dart'; import 'package:sky/painting.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/theme/typography.dart' as typography; diff --git a/examples/fitness/lib/user_data.dart b/examples/fitness/lib/user_data.dart index d6f0a3c213a..50c065ac4ef 100644 --- a/examples/fitness/lib/user_data.dart +++ b/examples/fitness/lib/user_data.dart @@ -9,7 +9,7 @@ import 'dart:async'; import 'package:path/path.dart' as path; import 'main.dart'; -import 'package:sky/mojo/activity.dart'; +import 'package:sky/services.dart'; String cachedDataFilePath = null; diff --git a/examples/game/lib/main.dart b/examples/game/lib/main.dart index 5a560bad5d8..9343426ced2 100644 --- a/examples/game/lib/main.dart +++ b/examples/game/lib/main.dart @@ -4,7 +4,7 @@ import 'dart:async'; -import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/services.dart'; import 'package:sky/painting.dart'; import 'package:sky/src/rendering/object.dart'; import 'package:sky/src/widgets/basic.dart'; diff --git a/examples/game/test_drawatlas.dart b/examples/game/test_drawatlas.dart index f8ddbac427a..7f3b17822c0 100644 --- a/examples/game/test_drawatlas.dart +++ b/examples/game/test_drawatlas.dart @@ -1,6 +1,6 @@ import 'dart:sky'; -import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/services.dart'; import 'package:sky/rendering.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/widgets.dart'; diff --git a/examples/game/test_performance.dart b/examples/game/test_performance.dart index fe03107192c..21ea1047ddb 100644 --- a/examples/game/test_performance.dart +++ b/examples/game/test_performance.dart @@ -1,7 +1,7 @@ import 'dart:sky' as sky; import 'dart:math' as math; -import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/services.dart'; import 'package:sky/rendering.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/widgets.dart'; diff --git a/examples/mine_digger/lib/main.dart b/examples/mine_digger/lib/main.dart index ab44479e080..76b84f907ef 100644 --- a/examples/mine_digger/lib/main.dart +++ b/examples/mine_digger/lib/main.dart @@ -4,7 +4,7 @@ import 'dart:sky' as sky; import 'dart:math'; -import 'package:sky/mojo/activity.dart' as activity; +import 'package:sky/services.dart'; import 'package:sky/painting.dart'; import 'package:sky/rendering.dart'; import 'package:sky/theme/colors.dart' as colors; @@ -113,7 +113,7 @@ class MineDiggerApp extends App { probe(ix, iy); }, onLongPress: () { - activity.userFeedback.performHapticFeedback(activity.HapticFeedbackType_LONG_PRESS); + userFeedback.performHapticFeedback(HapticFeedbackType_LONG_PRESS); flag(ix, iy); }, child: new Listener( diff --git a/examples/raw/spinning_image.dart b/examples/raw/spinning_image.dart index d75b0a03373..b2610a3fea5 100644 --- a/examples/raw/spinning_image.dart +++ b/examples/raw/spinning_image.dart @@ -6,7 +6,7 @@ import 'dart:math' as math; import 'dart:sky' as sky; import 'dart:typed_data'; -import 'package:sky/mojo/net/image_cache.dart' as image_cache; +import 'package:sky/services.dart'; double timeBase = null; @@ -84,7 +84,7 @@ bool handleEvent(sky.Event event) { } if (event.type == "pointerup") { - image_cache.load(url2).first.then(handleImageLoad); + imageCache.load(url2).first.then(handleImageLoad); return true; } @@ -92,7 +92,7 @@ bool handleEvent(sky.Event event) { } void main() { - image_cache.load(url1).first.then(handleImageLoad); + imageCache.load(url1).first.then(handleImageLoad); sky.view.setEventCallback(handleEvent); sky.view.setFrameCallback(beginFrame); } diff --git a/examples/rendering/interactive_flex.dart b/examples/rendering/interactive_flex.dart index d79a88eb1b8..ed50e7967db 100644 --- a/examples/rendering/interactive_flex.dart +++ b/examples/rendering/interactive_flex.dart @@ -5,8 +5,7 @@ import 'dart:sky' as sky; import 'dart:math' as math; -import 'package:sky/mojo/activity.dart'; -import 'package:sky/mojo/net/image_cache.dart' as image_cache; +import 'package:sky/services.dart'; import 'package:sky/rendering.dart'; import 'solid_color_box.dart'; @@ -60,7 +59,7 @@ void main() { // Resizeable image image = new RenderImageGrow(null, new Size(100.0, null)); - image_cache.load("https://www.dartlang.org/logos/dart-logo.png").first.then((sky.Image dartLogo) { + imageCache.load("https://www.dartlang.org/logos/dart-logo.png").first.then((sky.Image dartLogo) { image.image = dartLogo; }); diff --git a/examples/stocks/lib/stock_data.dart b/examples/stocks/lib/stock_data.dart index 62de48edf1f..ccb4bb0dac7 100644 --- a/examples/stocks/lib/stock_data.dart +++ b/examples/stocks/lib/stock_data.dart @@ -10,8 +10,7 @@ import 'dart:convert'; import 'dart:math' as math; -import 'package:sky/mojo/asset_bundle.dart'; -import 'package:sky/mojo/net/fetch.dart'; +import 'package:sky/services.dart'; final math.Random _rng = new math.Random(); diff --git a/examples/widgets/piano.dart b/examples/widgets/piano.dart index 294ec2f4282..b7eb885b41d 100644 --- a/examples/widgets/piano.dart +++ b/examples/widgets/piano.dart @@ -4,8 +4,7 @@ import 'package:mojo/mojo/url_response.mojom.dart'; import 'package:sky_services/media/media.mojom.dart'; -import 'package:sky/mojo/net/fetch.dart'; -import 'package:sky/mojo/shell.dart' as shell; +import 'package:sky/services.dart'; import 'package:sky/rendering.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/widgets.dart'; diff --git a/examples/widgets/scale.dart b/examples/widgets/scale.dart index 067df164f3c..5478a032b31 100644 --- a/examples/widgets/scale.dart +++ b/examples/widgets/scale.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:math' as math; - import 'package:sky/rendering.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/widgets.dart'; diff --git a/sky/packages/sky/lib/mojo/net/image_cache.dart b/sky/packages/sky/lib/mojo/net/image_cache.dart deleted file mode 100644 index 03d435c6b88..00000000000 --- a/sky/packages/sky/lib/mojo/net/image_cache.dart +++ /dev/null @@ -1,28 +0,0 @@ -// 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. - -import 'dart:async'; -import 'dart:collection'; -import 'dart:sky' as sky; - -import 'package:mojo/mojo/url_response.mojom.dart'; -import 'package:sky/mojo/image_resource.dart'; -import 'package:sky/mojo/net/fetch.dart'; - -final HashMap _cache = new Map(); - -ImageResource load(String url) { - return _cache.putIfAbsent(url, () { - Completer completer = new Completer(); - fetchUrl(url).then((UrlResponse response) { - if (response.statusCode >= 400) { - print("Failed (${response.statusCode}) to load image ${url}"); - completer.complete(null); - } else { - new sky.ImageDecoder(response.body.handle.h, completer.complete); - } - }); - return new ImageResource(completer.future); - }); -} diff --git a/sky/packages/sky/lib/services.dart b/sky/packages/sky/lib/services.dart new file mode 100644 index 00000000000..47873d891e1 --- /dev/null +++ b/sky/packages/sky/lib/services.dart @@ -0,0 +1,15 @@ +// 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. + +/// Services provided by Mojo +library services; + +export 'src/services/activity.dart'; +export 'src/services/asset_bundle.dart'; +export 'src/services/embedder.dart'; +export 'src/services/fetch.dart'; +export 'src/services/image_cache.dart'; +export 'src/services/image_resource.dart'; +export 'src/services/keyboard.dart'; +export 'src/services/shell.dart'; diff --git a/sky/packages/sky/lib/src/painting/box_painter.dart b/sky/packages/sky/lib/src/painting/box_painter.dart index 6dac00d0492..6126fcbb1e7 100644 --- a/sky/packages/sky/lib/src/painting/box_painter.dart +++ b/sky/packages/sky/lib/src/painting/box_painter.dart @@ -6,7 +6,7 @@ import 'dart:math' as math; import 'dart:sky' as sky; import 'dart:sky' show Point, Offset, Size, Rect, Color, Paint, Path; -import 'package:sky/mojo/image_resource.dart'; +import 'package:sky/services.dart'; import 'package:sky/src/painting/shadows.dart'; /// An immutable set of offsets in each of the four cardinal directions diff --git a/sky/packages/sky/lib/mojo/README.md b/sky/packages/sky/lib/src/services/README.md similarity index 68% rename from sky/packages/sky/lib/mojo/README.md rename to sky/packages/sky/lib/src/services/README.md index 80683fa6994..c6abec2d43f 100644 --- a/sky/packages/sky/lib/mojo/README.md +++ b/sky/packages/sky/lib/src/services/README.md @@ -3,5 +3,5 @@ For example, keyboard.dart wraps the mojo keyboard service in a more convenient Dart class. Files in this directory (and its subdirectories) only depend on core -Dart libraries, `dart:sky`, `dart:sky.internals`, the 'mojo' package, -the 'mojo_services' package, and `../base/*`. +Dart libraries, `dart:sky`, `dart:sky.internals`, the `mojo` package, +and the `mojo_services` package. diff --git a/sky/packages/sky/lib/mojo/activity.dart b/sky/packages/sky/lib/src/services/activity.dart similarity index 97% rename from sky/packages/sky/lib/mojo/activity.dart rename to sky/packages/sky/lib/src/services/activity.dart index 1e591d0d4bb..df1f2cabbab 100644 --- a/sky/packages/sky/lib/mojo/activity.dart +++ b/sky/packages/sky/lib/src/services/activity.dart @@ -5,7 +5,7 @@ import 'dart:sky'; import 'dart:async'; -import 'package:sky/mojo/shell.dart' as shell; +import 'package:sky/src/services/shell.dart'; import 'package:sky_services/activity/activity.mojom.dart'; export 'package:sky_services/activity/activity.mojom.dart'; diff --git a/sky/packages/sky/lib/mojo/asset_bundle.dart b/sky/packages/sky/lib/src/services/asset_bundle.dart similarity index 91% rename from sky/packages/sky/lib/mojo/asset_bundle.dart rename to sky/packages/sky/lib/src/services/asset_bundle.dart index 705214eb54e..87d6e55c184 100644 --- a/sky/packages/sky/lib/mojo/asset_bundle.dart +++ b/sky/packages/sky/lib/src/services/asset_bundle.dart @@ -9,10 +9,10 @@ import 'dart:typed_data'; import 'package:mojo/core.dart' as core; import 'package:mojo_services/mojo/asset_bundle/asset_bundle.mojom.dart'; -import 'package:sky/mojo/image_resource.dart'; -import 'package:sky/mojo/net/fetch.dart'; -import 'package:sky/mojo/net/image_cache.dart' as image_cache; -import 'package:sky/mojo/shell.dart' as shell; +import 'package:sky/src/services/fetch.dart'; +import 'package:sky/src/services/image_cache.dart'; +import 'package:sky/src/services/image_resource.dart'; +import 'package:sky/src/services/shell.dart'; abstract class AssetBundle { void close(); @@ -34,7 +34,7 @@ class NetworkAssetBundle extends AssetBundle { return (await fetchUrl(_urlFromKey(key))).body; } - ImageResource loadImage(String key) => image_cache.load(_urlFromKey(key)); + ImageResource loadImage(String key) => imageCache.load(_urlFromKey(key)); Future loadString(String key) => fetchString(_urlFromKey(key)); } diff --git a/sky/packages/sky/lib/mojo/embedder.dart b/sky/packages/sky/lib/src/services/embedder.dart similarity index 100% rename from sky/packages/sky/lib/mojo/embedder.dart rename to sky/packages/sky/lib/src/services/embedder.dart diff --git a/sky/packages/sky/lib/mojo/net/fetch.dart b/sky/packages/sky/lib/src/services/fetch.dart similarity index 97% rename from sky/packages/sky/lib/mojo/net/fetch.dart rename to sky/packages/sky/lib/src/services/fetch.dart index 042e527fcdd..c6ce40c6434 100644 --- a/sky/packages/sky/lib/mojo/net/fetch.dart +++ b/sky/packages/sky/lib/src/services/fetch.dart @@ -10,7 +10,7 @@ import 'package:mojo/mojo/url_request.mojom.dart'; import 'package:mojo/mojo/url_response.mojom.dart'; import 'package:mojo_services/mojo/network_service.mojom.dart'; import 'package:mojo_services/mojo/url_loader.mojom.dart'; -import 'package:sky/mojo/shell.dart' as shell; +import 'package:sky/src/services/shell.dart'; export 'package:mojo/mojo/url_response.mojom.dart' show UrlResponse; diff --git a/sky/packages/sky/lib/src/services/image_cache.dart b/sky/packages/sky/lib/src/services/image_cache.dart new file mode 100644 index 00000000000..fd55b08e06f --- /dev/null +++ b/sky/packages/sky/lib/src/services/image_cache.dart @@ -0,0 +1,34 @@ +// 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. + +import 'dart:async'; +import 'dart:collection'; +import 'dart:sky' as sky; + +import 'package:mojo/mojo/url_response.mojom.dart'; +import 'package:sky/src/services/image_resource.dart'; +import 'package:sky/src/services/fetch.dart'; + +class _ImageCache { + _ImageCache._(); + + final HashMap _cache = new Map(); + + ImageResource load(String url) { + return _cache.putIfAbsent(url, () { + Completer completer = new Completer(); + fetchUrl(url).then((UrlResponse response) { + if (response.statusCode >= 400) { + print("Failed (${response.statusCode}) to load image ${url}"); + completer.complete(null); + } else { + new sky.ImageDecoder(response.body.handle.h, completer.complete); + } + }); + return new ImageResource(completer.future); + }); + } +} + +final _ImageCache imageCache = new _ImageCache._(); diff --git a/sky/packages/sky/lib/mojo/image_resource.dart b/sky/packages/sky/lib/src/services/image_resource.dart similarity index 100% rename from sky/packages/sky/lib/mojo/image_resource.dart rename to sky/packages/sky/lib/src/services/image_resource.dart diff --git a/sky/packages/sky/lib/mojo/keyboard.dart b/sky/packages/sky/lib/src/services/keyboard.dart similarity index 97% rename from sky/packages/sky/lib/mojo/keyboard.dart rename to sky/packages/sky/lib/src/services/keyboard.dart index ea0f8f4c4ad..49d2ebe47b6 100644 --- a/sky/packages/sky/lib/mojo/keyboard.dart +++ b/sky/packages/sky/lib/src/services/keyboard.dart @@ -3,7 +3,8 @@ // found in the LICENSE file. import 'package:mojo_services/keyboard/keyboard.mojom.dart'; -import 'package:sky/mojo/shell.dart' as shell; +import 'package:sky/src/services/shell.dart'; + export 'package:mojo_services/keyboard/keyboard.mojom.dart'; class _KeyboardConnection { diff --git a/sky/packages/sky/lib/mojo/shell.dart b/sky/packages/sky/lib/src/services/shell.dart similarity index 66% rename from sky/packages/sky/lib/mojo/shell.dart rename to sky/packages/sky/lib/src/services/shell.dart index 916c162ad77..88b21403379 100644 --- a/sky/packages/sky/lib/mojo/shell.dart +++ b/sky/packages/sky/lib/src/services/shell.dart @@ -7,7 +7,7 @@ import 'dart:sky.internals' as internals; import 'package:mojo/application.dart'; import 'package:mojo/core.dart' as core; import 'package:mojo/mojo/service_provider.mojom.dart'; -import 'package:sky/mojo/embedder.dart'; +import 'package:sky/src/services/embedder.dart'; ApplicationConnection _initConnection() { int rawHandle = internals.takeServicesProvidedByEmbedder(); @@ -18,9 +18,15 @@ ApplicationConnection _initConnection() { return new ApplicationConnection(null, serviceProvider); } -final ApplicationConnection _connection = _initConnection(); +class _ShellImpl { + _ShellImpl._(); -void requestService(String url, Object proxy) { - if (embedder.shell == null) _connection.requestService(proxy); - else embedder.connectToService(url, proxy); + final ApplicationConnection _connection = _initConnection(); + + void requestService(String url, Object proxy) { + if (embedder.shell == null) _connection.requestService(proxy); + else embedder.connectToService(url, proxy); + } } + +final _ShellImpl shell = new _ShellImpl._(); diff --git a/sky/packages/sky/lib/src/widgets/basic.dart b/sky/packages/sky/lib/src/widgets/basic.dart index 7eafdc56d1c..dafe70b7d95 100644 --- a/sky/packages/sky/lib/src/widgets/basic.dart +++ b/sky/packages/sky/lib/src/widgets/basic.dart @@ -6,9 +6,7 @@ import 'dart:sky' as sky; import 'package:vector_math/vector_math.dart'; -import 'package:sky/mojo/asset_bundle.dart'; -import 'package:sky/mojo/image_resource.dart'; -import 'package:sky/mojo/net/image_cache.dart' as image_cache; +import 'package:sky/services.dart'; import 'package:sky/src/painting/text_painter.dart'; import 'package:sky/src/painting/text_style.dart'; import 'package:sky/src/rendering/block.dart'; @@ -838,7 +836,7 @@ class NetworkImage extends Component { Widget build() { return new ImageListener( - image: image_cache.load(src), + image: imageCache.load(src), width: width, height: height, colorFilter: colorFilter, diff --git a/sky/packages/sky/lib/src/widgets/date_picker.dart b/sky/packages/sky/lib/src/widgets/date_picker.dart index 59981f0b4c2..d3c0c36cf9c 100644 --- a/sky/packages/sky/lib/src/widgets/date_picker.dart +++ b/sky/packages/sky/lib/src/widgets/date_picker.dart @@ -6,7 +6,7 @@ import 'dart:async'; import 'package:intl/date_symbols.dart'; import 'package:intl/intl.dart'; -import 'package:sky/mojo/activity.dart'; +import 'package:sky/services.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/theme/typography.dart' as typography; import 'package:sky/src/widgets/basic.dart'; diff --git a/sky/packages/sky/lib/src/widgets/framework.dart b/sky/packages/sky/lib/src/widgets/framework.dart index 45518b56ec3..8638bad53ba 100644 --- a/sky/packages/sky/lib/src/widgets/framework.dart +++ b/sky/packages/sky/lib/src/widgets/framework.dart @@ -7,7 +7,7 @@ import 'dart:collection'; import 'dart:sky' as sky; import 'package:sky/animation.dart'; -import 'package:sky/mojo/activity.dart'; +import 'package:sky/services.dart'; import 'package:sky/src/rendering/box.dart'; import 'package:sky/src/rendering/error.dart'; import 'package:sky/src/rendering/hit_test.dart'; diff --git a/sky/packages/sky/lib/src/widgets/icon.dart b/sky/packages/sky/lib/src/widgets/icon.dart index 7aafe22cb57..2dfdff0c545 100644 --- a/sky/packages/sky/lib/src/widgets/icon.dart +++ b/sky/packages/sky/lib/src/widgets/icon.dart @@ -4,7 +4,7 @@ import 'dart:sky' as sky; -import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/services.dart'; import 'package:sky/src/widgets/basic.dart'; import 'package:sky/src/widgets/theme.dart'; import 'package:sky/src/widgets/framework.dart'; diff --git a/sky/packages/sky/lib/src/widgets/input.dart b/sky/packages/sky/lib/src/widgets/input.dart index 63aa269a1d8..30c8766633d 100644 --- a/sky/packages/sky/lib/src/widgets/input.dart +++ b/sky/packages/sky/lib/src/widgets/input.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:sky/mojo/keyboard.dart'; +import 'package:sky/services.dart'; import 'package:sky/painting.dart'; import 'package:sky/src/widgets/basic.dart'; import 'package:sky/src/widgets/editable_text.dart'; @@ -10,7 +10,7 @@ import 'package:sky/src/widgets/focus.dart'; import 'package:sky/src/widgets/framework.dart'; import 'package:sky/src/widgets/theme.dart'; -export 'package:sky/mojo/keyboard.dart' show KeyboardType_TEXT, KeyboardType_NUMBER, KeyboardType_PHONE, KeyboardType_DATETIME; +export 'package:sky/services.dart' show KeyboardType_TEXT, KeyboardType_NUMBER, KeyboardType_PHONE, KeyboardType_DATETIME; typedef void StringValueChanged(String value); diff --git a/sky/packages/sky/lib/src/widgets/title.dart b/sky/packages/sky/lib/src/widgets/title.dart index be99b687c84..79a6998543b 100644 --- a/sky/packages/sky/lib/src/widgets/title.dart +++ b/sky/packages/sky/lib/src/widgets/title.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:sky/mojo/activity.dart'; +import 'package:sky/services.dart'; import 'package:sky/src/widgets/theme.dart'; import 'package:sky/src/widgets/framework.dart'; diff --git a/skysprites/lib/skysprites.dart b/skysprites/lib/skysprites.dart index 416053b2c6d..ea29ce5c05a 100644 --- a/skysprites/lib/skysprites.dart +++ b/skysprites/lib/skysprites.dart @@ -12,9 +12,8 @@ import 'dart:sky'; import 'package:mojo/core.dart'; import 'package:sky/animation.dart'; -import 'package:sky/mojo/asset_bundle.dart'; -import 'package:sky/mojo/shell.dart' as shell; import 'package:sky/painting.dart'; +import 'package:sky/services.dart'; import 'package:sky/src/rendering/box.dart'; import 'package:sky/src/rendering/object.dart'; import 'package:sky/src/widgets/framework.dart'; diff --git a/skysprites/pubspec.yaml b/skysprites/pubspec.yaml index 68560a56678..75e16274956 100644 --- a/skysprites/pubspec.yaml +++ b/skysprites/pubspec.yaml @@ -6,3 +6,6 @@ homepage: https://github.com/domokit/sky_engine/tree/master/sky/packages/sky dependencies: sky: ">=0.0.36 < 0.1.0" sky_tools: ">=0.0.10 < 0.1.0" +dependency_overrides: + sky: + path: ../sky/packages/sky