/* * Copyright (C) 2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ WebInspector.TabContentView = class TabContentView extends WebInspector.ContentView { constructor(identifier, styleClassNames, tabBarItem, navigationSidebarPanel, detailsSidebarPanels) { console.assert(typeof identifier === "string"); console.assert(typeof styleClassNames === "string" || styleClassNames.every((className) => typeof className === "string")); console.assert(tabBarItem instanceof WebInspector.TabBarItem); console.assert(!navigationSidebarPanel || navigationSidebarPanel instanceof WebInspector.NavigationSidebarPanel); console.assert(!detailsSidebarPanels || detailsSidebarPanels.every((detailsSidebarPanel) => detailsSidebarPanel instanceof WebInspector.DetailsSidebarPanel)); super(null); this.element.classList.add("tab"); if (typeof styleClassNames === "string") styleClassNames = [styleClassNames]; this.element.classList.add(...styleClassNames); this._identifier = identifier; this._tabBarItem = tabBarItem; this._navigationSidebarPanel = navigationSidebarPanel || null; this._detailsSidebarPanels = detailsSidebarPanels || []; const defaultSidebarWidth = 300; this._navigationSidebarCollapsedSetting = new WebInspector.Setting(identifier + "-navigation-sidebar-collapsed", false); this._navigationSidebarWidthSetting = new WebInspector.Setting(identifier + "-navigation-sidebar-width", defaultSidebarWidth); this._detailsSidebarCollapsedSetting = new WebInspector.Setting(identifier + "-details-sidebar-collapsed", true); this._detailsSidebarSelectedPanelSetting = new WebInspector.Setting(identifier + "-details-sidebar-selected-panel", null); this._detailsSidebarWidthSetting = new WebInspector.Setting(identifier + "-details-sidebar-width", defaultSidebarWidth); this._cookieSetting = new WebInspector.Setting(identifier + "-tab-cookie", {}); } static isTabAllowed() { // Returns false if a necessary domain or other features are unavailable. return true; } static isEphemeral() { // Returns true if the tab should not be shown in the new tab content view. return false; } static shouldSaveTab() { // Returns false if the tab should not be restored when re-opening the Inspector. return true; } // Public get type() { // Implemented by subclasses. return null; } get parentTabBrowser() { return this._parentTabBrowser; } set parentTabBrowser(tabBrowser) { this._parentTabBrowser = tabBrowser || null; } get identifier() { return this._identifier; } get tabBarItem() { return this._tabBarItem; } get managesDetailsSidebarPanels() { // Implemented by subclasses. return false; } showDetailsSidebarPanels() { // Implemented by subclasses. } showRepresentedObject(representedObject, cookie) { // Implemented by subclasses. } canShowRepresentedObject(representedObject) { // Implemented by subclasses. return false; } shown() { super.shown(); if (this._shouldRestoreStateWhenShown) this.restoreStateFromCookie(WebInspector.StateRestorationType.Delayed); } restoreStateFromCookie(restorationType) { if (!this.visible) { this._shouldRestoreStateWhenShown = true; return; } this._shouldRestoreStateWhenShown = false; var relaxMatchDelay = 0; if (restorationType === WebInspector.StateRestorationType.Load) relaxMatchDelay = 1000; else if (restorationType === WebInspector.StateRestorationType.Navigation) relaxMatchDelay = 2000; let cookie = this._cookieSetting.value || {}; if (this.navigationSidebarPanel) this.navigationSidebarPanel.restoreStateFromCookie(cookie, relaxMatchDelay); this.restoreFromCookie(cookie); } saveStateToCookie(cookie) { if (this._shouldRestoreStateWhenShown) return; cookie = cookie || {}; if (this.navigationSidebarPanel) this.navigationSidebarPanel.saveStateToCookie(cookie); this.saveToCookie(cookie); this._cookieSetting.value = cookie; } get navigationSidebarPanel() { return this._navigationSidebarPanel; } get navigationSidebarCollapsedSetting() { return this._navigationSidebarCollapsedSetting; } get navigationSidebarWidthSetting() { return this._navigationSidebarWidthSetting; } get detailsSidebarPanels() { return this._detailsSidebarPanels; } get detailsSidebarCollapsedSetting() { return this._detailsSidebarCollapsedSetting; } get detailsSidebarSelectedPanelSetting() { return this._detailsSidebarSelectedPanelSetting; } get detailsSidebarWidthSetting() { return this._detailsSidebarWidthSetting; } };