blob: cf47a8b7667d8319b1549f72c58eab3e99b3985b [file] [log] [blame]
// 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.
#ifndef SERVICES_DART_DART_APP_H_
#define SERVICES_DART_DART_APP_H_
#include "base/files/scoped_temp_dir.h"
#include "mojo/application/content_handler_factory.h"
#include "mojo/dart/embedder/dart_controller.h"
#include "mojo/public/cpp/system/message_pipe.h"
#include "mojo/public/interfaces/application/application.mojom.h"
#include "mojo/public/interfaces/application/shell.mojom.h"
namespace dart {
class DartApp;
class ApplicationDelegateImpl;
// Each Dart app started by content handler runs on its own thread and
// in its own Dart isolate. This class represents one running Dart app.
class DartApp : public mojo::ContentHandlerFactory::HandledApplicationHolder {
public:
// When running from an extracted zip file.
DartApp(mojo::InterfaceRequest<mojo::Application> application_request,
const std::string& base_uri,
const base::FilePath& application_dir,
bool strict,
bool run_on_message_loop,
bool override_pause_isolates_flags,
bool pause_isolates_on_start,
bool pause_isolates_on_exit);
// When running from a dart file.
DartApp(mojo::InterfaceRequest<mojo::Application> application_request,
const std::string& url,
bool strict,
bool run_on_message_loop,
bool override_pause_isolates_flags,
bool pause_isolates_on_start,
bool pause_isolates_on_exit);
virtual ~DartApp();
private:
void OnAppLoaded();
mojo::InterfaceRequest<mojo::Application> application_request_;
mojo::dart::DartControllerConfig config_;
base::FilePath application_dir_;
Dart_Isolate main_isolate_;
DISALLOW_COPY_AND_ASSIGN(DartApp);
};
} // namespace dart
#endif // SERVICES_DART_DART_APP_H_