// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

library initialized_application;

import 'dart:async';

import 'package:mojo/application.dart' show Application;
import 'package:mojo/core.dart' show MojoHandle;

// InitializedApplication is an Application with a future 'initialized' that is
// resolved after the 'initialize' method finishes.
class InitializedApplication extends Application {
  final Completer _initializeCompleter = new Completer();
  Future get initialized => _initializeCompleter.future;

  List<String> _args;
  List<String> get args => _args;

  InitializedApplication.fromHandle(int handle)
      : super.fromHandle(new MojoHandle(handle));

  void initialize(List<String> args, String url) {
    _args = args;
    _initializeCompleter.complete();
  }
}
