| Index: chrome/browser/resources/shared/js/cr/link_controller.js
|
| ===================================================================
|
| --- chrome/browser/resources/shared/js/cr/link_controller.js (revision 177292)
|
| +++ chrome/browser/resources/shared/js/cr/link_controller.js (working copy)
|
| @@ -1,155 +0,0 @@
|
| -// Copyright (c) 2012 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.
|
| -
|
| -/**
|
| - * @fileoverview This file provides a class that can be used to open URLs based
|
| - * on user interactions. It ensures a consistent behavior when it comes to
|
| - * holding down Ctrl and Shift while clicking or activating the a link.
|
| - *
|
| - * This depends on the {@code chrome.windows} and {@code chrome.tabs}
|
| - * extensions API.
|
| - */
|
| -
|
| -cr.define('cr', function() {
|
| -
|
| - /**
|
| - * The kind of link open we want to perform.
|
| - * @enum {number}
|
| - */
|
| - var LinkKind = {
|
| - FOREGROUND_TAB: 0,
|
| - BACKGROUND_TAB: 1,
|
| - WINDOW: 2,
|
| - SELF: 3,
|
| - INCOGNITO: 4
|
| - };
|
| -
|
| - /**
|
| - * This class is used to handle opening of links based on user actions. The
|
| - * following actions are currently implemented:
|
| - *
|
| - * * Press Ctrl and click a link. Or click a link with your middle mouse
|
| - * button (or mousewheel). Or press Enter while holding Ctrl.
|
| - * Opens the link in a new tab in the background .
|
| - * * Press Ctrl+Shift and click a link. Or press Shift and click a link with
|
| - * your middle mouse button (or mousewheel). Or press Enter while holding
|
| - * Ctrl+Shift.
|
| - * Opens the link in a new tab and switches to the newly opened tab.
|
| - * * Press Shift and click a link. Or press Enter while holding Shift.
|
| - * Opens the link in a new window.
|
| - *
|
| - * On Mac, uses Command instead of Ctrl.
|
| - * For keyboard support you need to use keydown.
|
| - *
|
| - * @param {!LocalStrings} localStrings The local strings object which is used
|
| - * to localize the warning prompt in case the user tries to open a lot of
|
| - * links.
|
| - * @constructor
|
| - */
|
| - function LinkController(localStrings) {
|
| - this.localStrings_ = localStrings;
|
| - }
|
| -
|
| - LinkController.prototype = {
|
| - /**
|
| - * The number of links that can be opened before showing a warning confirm
|
| - * message.
|
| - */
|
| - warningLimit: 15,
|
| -
|
| - /**
|
| - * The DOM window that we want to open links into in case we are opening
|
| - * links in the same window.
|
| - * @type {!Window}
|
| - */
|
| - window: window,
|
| -
|
| - /**
|
| - * This method is used for showing the warning confirm message when the
|
| - * user is trying to open a lot of links.
|
| - * @param {number} The number of URLs to open.
|
| - * @return {string} The message to show the user.
|
| - */
|
| - getWarningMessage: function(count) {
|
| - return this.localStrings_.getStringF('should_open_all', count);
|
| - },
|
| -
|
| - /**
|
| - * Open an URL from a mouse or keyboard event.
|
| - * @param {string} url The URL to open.
|
| - * @param {!Event} e The event triggering the opening of the URL.
|
| - */
|
| - openUrlFromEvent: function(url, e) {
|
| - // We only support keydown Enter and non right click events.
|
| - if (e.type == 'keydown' && e.keyIdentifier == 'Enter' ||
|
| - e.button != 2) {
|
| - var kind;
|
| - var ctrl = cr.isMac && e.metaKey || !cr.isMac && e.ctrlKey;
|
| -
|
| - if (e.button == 1 || ctrl) // middle, ctrl or keyboard
|
| - kind = e.shiftKey ? LinkKind.FOREGROUND_TAB : LinkKind.BACKGROUND_TAB;
|
| - else // left or keyboard
|
| - kind = e.shiftKey ? LinkKind.WINDOW : LinkKind.SELF;
|
| -
|
| - this.openUrls([url], kind);
|
| - }
|
| - },
|
| -
|
| -
|
| - /**
|
| - * Opens a URL in a new tab, window or incognito window.
|
| - * @param {string} url The URL to open.
|
| - * @param {LinkKind} kind The kind of open we want to do.
|
| - */
|
| - openUrl: function(url, kind) {
|
| - this.openUrls([url], kind);
|
| - },
|
| -
|
| - /**
|
| - * Opens URLs in new tab, window or incognito mode.
|
| - * @param {!Array.<string>} urls The URLs to open.
|
| - * @param {LinkKind} kind The kind of open we want to do.
|
| - */
|
| - openUrls: function(urls, kind) {
|
| - if (urls.length < 1)
|
| - return;
|
| -
|
| - if (urls.length > this.warningLimit) {
|
| - if (!this.window.confirm(this.getWarningMessage(urls.length)))
|
| - return;
|
| - }
|
| -
|
| - // Fix '#124' URLs since opening those in a new window does not work. We
|
| - // prepend the base URL when we encounter those.
|
| - var base = this.window.location.href.split('#')[0];
|
| - urls = urls.map(function(url) {
|
| - return url[0] == '#' ? base + url : url;
|
| - });
|
| -
|
| - var incognito = kind == LinkKind.INCOGNITO;
|
| - if (kind == LinkKind.WINDOW || incognito) {
|
| - chrome.windows.create({
|
| - url: urls,
|
| - incognito: incognito
|
| - });
|
| - } else if (kind == LinkKind.FOREGROUND_TAB ||
|
| - kind == LinkKind.BACKGROUND_TAB) {
|
| - urls.forEach(function(url, i) {
|
| - chrome.tabs.create({
|
| - url: url,
|
| - selected: kind == LinkKind.FOREGROUND_TAB && !i
|
| - });
|
| - });
|
| - } else {
|
| - this.window.location.href = urls[0];
|
| - }
|
| - }
|
| - };
|
| -
|
| - // Export
|
| - return {
|
| - LinkController: LinkController,
|
| - LinkKind: LinkKind
|
| - };
|
| -});
|
|
|