blob: 9ed27d0089e781414e0c1ad7766d6aa0b629d039 [file] [log] [blame]
// Copyright 2016 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() {
'use strict';
var MAX_HEIGHT = 600;
var MAX_WIDTH = 600;
var MIN_HEIGHT = 300;
var MIN_WIDTH = 300;
var HEADER_PADDING = 40;
var OptionsDialog = Polymer({
is: 'extensions-options-dialog',
properties: {
/** @private {Object} */
extensionOptions_: Object,
/** @private {chrome.developerPrivate.ExtensionInfo} */
data_: Object,
},
/** @param {chrome.developerPrivate.ExtensionInfo} data */
show: function(data) {
this.data_ = data;
if (!this.extensionOptions_)
this.extensionOptions_ = document.createElement('ExtensionOptions');
this.extensionOptions_.extension = this.data_.id;
this.extensionOptions_.onclose = this.close.bind(this);
var bounded = function(min, max, val) {
return Math.min(Math.max(min, val), max);
};
var onSizeChanged = function(e) {
var minHeaderWidth =
this.$['icon-and-name-wrapper'].offsetWidth +
this.$['close-button'].offsetWidth +
HEADER_PADDING;
var minWidth = Math.max(minHeaderWidth, MIN_WIDTH);
this.$.main.style.height =
bounded(MIN_HEIGHT, MAX_HEIGHT, e.height) + 'px';
this.$.main.style.width =
bounded(minWidth, MAX_WIDTH, e.width) + 'px';
}.bind(this);
this.extensionOptions_.onpreferredsizechanged = onSizeChanged;
this.$.main.appendChild(this.extensionOptions_);
this.$$('dialog').showModal();
onSizeChanged({height: 0, width: 0});
},
close: function() {
this.$$('dialog').close();
},
});
return {OptionsDialog: OptionsDialog};
});