// Copyright 2015 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. cr.define('extensions', function() { /** @interface */ var SidebarDelegate = function() {}; SidebarDelegate.prototype = { /** * Toggles whether or not the profile is in developer mode. * @param {boolean} inDevMode */ setProfileInDevMode: assertNotReached, /** Opens the dialog to load unpacked extensions. */ loadUnpacked: assertNotReached, /** Opens the dialog to pack an extension. */ packExtension: assertNotReached, /** Updates all extensions. */ updateAllExtensions: assertNotReached, }; /** @interface */ var SidebarScrollDelegate = function() {}; SidebarScrollDelegate.prototype = { /** Scrolls to the extensions section. */ scrollToExtensions: assertNotReached, /** Scrolls to the apps section. */ scrollToApps: assertNotReached, /** Scrolls to the websites section. */ scrollToWebsites: assertNotReached, }; var Sidebar = Polymer({ is: 'extensions-sidebar', properties: { inDevMode: { type: Boolean, value: false, }, hideExtensionsButton: { type: Boolean, value: false, }, hideAppsButton: { type: Boolean, value: false, }, hideWebsitesButton: { type: Boolean, value: false, }, }, behaviors: [ I18nBehavior, ], /** @param {extensions.SidebarDelegate} delegate */ setDelegate: function(delegate) { /** @private {extensions.SidebarDelegate} */ this.delegate_ = delegate; }, /** @param {extensions.SidebarScrollDelegate} scrollDelegate */ setScrollDelegate: function(scrollDelegate) { /** @private {extensions.SidebarScrollDelegate} */ this.scrollDelegate_ = scrollDelegate; }, /** @private */ onExtensionsTap_: function() { this.scrollDelegate_.scrollToExtensions(); }, /** @private */ onAppsTap_: function() { this.scrollDelegate_.scrollToApps(); }, /** @private */ onWebsitesTap_: function() { this.scrollDelegate_.scrollToWebsites(); }, /** @private */ onDevModeChange_: function() { this.delegate_.setProfileInDevMode( this.$['developer-mode-checkbox'].checked); }, /** @private */ onLoadUnpackedTap_: function() { this.delegate_.loadUnpacked(); }, /** @private */ onPackTap_: function() { this.delegate_.packExtension(); }, /** @private */ onUpdateNowTap_: function() { this.delegate_.updateAllExtensions(); }, }); return { Sidebar: Sidebar, SidebarDelegate: SidebarDelegate, SidebarScrollDelegate: SidebarScrollDelegate, }; });