| Index: chrome/renderer/resources/extensions/downloads_custom_bindings.js
|
| diff --git a/chrome/renderer/resources/extensions/downloads_custom_bindings.js b/chrome/renderer/resources/extensions/downloads_custom_bindings.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fd17af2ed7c94269c9ae05e21bd59e21c1ff02bc
|
| --- /dev/null
|
| +++ b/chrome/renderer/resources/extensions/downloads_custom_bindings.js
|
| @@ -0,0 +1,48 @@
|
| +// Copyright (c) 2013 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.
|
| +
|
| +// Custom bindings for the downloads API.
|
| +
|
| +var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
|
| +
|
| +chromeHidden.Event.registerArgumentMassager(
|
| + 'downloads.onDeterminingFilename',
|
| + function massage_determining_filename(args, dispatch) {
|
| + var downloadItem = args[0];
|
| + // Copy the id so that extensions can't change it.
|
| + var downloadId = downloadItem.id;
|
| + var suggestable = true;
|
| + function suggestCallback(result) {
|
| + if (!suggestable) {
|
| + console.error('suggestCallback may not be called more than once.');
|
| + return;
|
| + }
|
| + suggestable = false;
|
| + if ((typeof(result) == 'object') &&
|
| + result.filename &&
|
| + (typeof(result.filename) == 'string') &&
|
| + ((result.overwrite === undefined) ||
|
| + (typeof(result.overwrite) == 'boolean'))) {
|
| + chromeHidden.internalAPIs.downloadsInternal.determineFilename(
|
| + downloadId,
|
| + result.filename,
|
| + result.overwrite || false);
|
| + } else {
|
| + chromeHidden.internalAPIs.downloadsInternal.determineFilename(
|
| + downloadId);
|
| + }
|
| + }
|
| + try {
|
| + var results = dispatch([downloadItem, suggestCallback]);
|
| + var async = (results &&
|
| + results.results &&
|
| + (results.results.length != 0) &&
|
| + (results.results[0] === true));
|
| + if (suggestable && !async)
|
| + suggestCallback();
|
| + } catch (e) {
|
| + suggestCallback();
|
| + throw e;
|
| + }
|
| +});
|
|
|