Add an extensions keep-alive client.
This adds the renderer side of adding keep-alives while API calls
implemented on mojo services are in progress.
BUG=389016
Review URL: https://codereview.chromium.org/669303002
Cr-Commit-Position: refs/heads/master@{#301528}
diff --git a/extensions/renderer/resources/keep_alive.js b/extensions/renderer/resources/keep_alive.js
new file mode 100644
index 0000000..281e8517
--- /dev/null
+++ b/extensions/renderer/resources/keep_alive.js
@@ -0,0 +1,41 @@
+// 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.
+
+define('keep_alive', [
+ 'content/public/renderer/service_provider',
+ 'extensions/common/mojo/keep_alive.mojom',
+ 'mojo/public/js/bindings/core',
+], function(serviceProvider, mojom, core) {
+
+ /**
+ * An object that keeps the background page alive until closed.
+ * @constructor
+ * @alias module:keep_alive~KeepAlive
+ */
+ function KeepAlive() {
+ /**
+ * The handle to the keep-alive object in the browser.
+ * @type {!MojoHandle}
+ * @private
+ */
+ this.handle_ = serviceProvider.connectToService(mojom.KeepAlive.name);
+ }
+
+ /**
+ * Removes this keep-alive.
+ */
+ KeepAlive.prototype.close = function() {
+ core.close(this.handle_);
+ };
+
+ var exports = {};
+
+ return {
+ /**
+ * Creates a keep-alive.
+ * @return {!module:keep_alive~KeepAlive} A new keep-alive.
+ */
+ createKeepAlive: function() { return new KeepAlive(); }
+ };
+});