Add long running gmail memory benchmark for background tab.
[chromium-blink-merge.git] / third_party / mojo_services / src / public / js / application.js
blobcadba0f0035d9bcaffc0c8ea2bccae58cb8a11d5
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 define("mojo/services/public/js/application", [
6 "mojo/public/js/bindings",
7 "mojo/public/js/core",
8 "mojo/public/js/connection",
9 "mojo/public/js/threading",
10 "mojo/public/interfaces/application/application.mojom",
11 "mojo/services/public/js/service_exchange",
12 "mojo/services/public/js/shell",
13 ], function(bindings, core, connection, threading, applicationMojom, serviceExchange, shell) {
15 const ApplicationInterface = applicationMojom.Application;
16 const ProxyBindings = bindings.ProxyBindings;
17 const ServiceExchange = serviceExchange.ServiceExchange;
18 const Shell = shell.Shell;
20 class Application {
21 constructor(appRequestHandle, url) {
22 this.url = url;
23 this.serviceExchanges = [];
24 this.appRequestHandle_ = appRequestHandle;
25 this.appStub_ =
26 connection.bindHandleToStub(appRequestHandle, ApplicationInterface);
27 bindings.StubBindings(this.appStub_).delegate = {
28 initialize: this.doInitialize.bind(this),
29 acceptConnection: this.doAcceptConnection.bind(this),
33 doInitialize(shellProxy, args, url) {
34 this.shellProxy_ = shellProxy;
35 this.shell = new Shell(shellProxy);
36 this.initialize(args);
39 initialize(args) {
42 // Implements AcceptConnection() from Application.mojom. Calls
43 // this.acceptConnection() with a JS ServiceExchange instead of a pair
44 // of Mojo ServiceProviders.
45 doAcceptConnection(requestorUrl, servicesRequest, exposedServicesProxy) {
46 var serviceExchange =
47 new ServiceExchange(servicesRequest, exposedServicesProxy);
48 this.serviceExchanges.push(serviceExchange);
49 this.acceptConnection(requestorUrl, serviceExchange);
52 // Subclasses override this method to request or provide services for
53 // ConnectToApplication() calls from requestorURL.
54 acceptConnection(requestorUrl, serviceExchange) {
57 quit() {
58 this.serviceExchanges.forEach(function(exch) {
59 exch.close();
60 });
61 this.shell.close();
62 core.close(this.appRequestHandle_);
63 threading.quit();
67 var exports = {};
68 exports.Application = Application;
69 return exports;
70 });