Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / resources / settings / on_startup_page / startup_urls_page.js
blobfd5e903f78717c887d0936d39d56b1a850b5f622
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * @fileoverview 'cr-settings-startup-urls-page' is the settings page
7  * containing the urls that will be opened when chrome is started.
8  *
9  * Example:
10  *
11  *    <neon-animated-pages>
12  *      <cr-settings-startup-urls-page prefs="{{prefs}}">
13  *      </cr-settings-startup-urls-page>
14  *      ... other pages ...
15  *    </neon-animated-pages>
16  *
17  * @group Chrome Settings Elements
18  * @element cr-settings-startup-urls-page
19  */
20 Polymer({
21   is: 'cr-settings-startup-urls-page',
23   properties: {
24     /**
25      * Preferences state.
26      */
27     prefs: {
28       type: Object,
29       notify: true,
30     },
32     newUrl: {
33       type: String,
34     },
36     /** @type {!Array<string>} */
37     savedUrlList: {
38       type: Array,
39     },
40   },
42   observers: [
43     'prefsChanged_(prefs.session.startup_urls.value.*)',
44   ],
46   attached: function() {
47     var self = this;
48     cr.define('Settings', function() {
49       return {
50         updateStartupPages: function() {
51           return self.updateStartupPages_.apply(self, arguments);
52         },
53       };
54     });
55   },
58   /** @private */
59   prefsChanged_: function(change) {
60     if (!this.savedUrlList) {
61       var pref = /** @type {chrome.settingsPrivate.PrefObject} */(
62           this.get('prefs.session.startup_urls'));
63       if (pref)
64         this.savedUrlList = pref.value.slice();
65     }
66   },
68   /** @private */
69   updateStartupPages_: function(data) {
70     var urlArray = [];
71     for (var i = 0; i < data.length; ++i)
72       urlArray.push(data[i].url);
73     this.set('prefs.session.startup_urls.value', urlArray);
74   },
76   /** @private */
77   onUseCurrentPagesTap_: function() {
78     chrome.send('setStartupPagesToCurrentPages');
79   },
81   /** @private */
82   onCancelTap_: function() {
83     if (this.savedUrlList !== undefined) {
84       this.set('prefs.session.startup_urls.value', this.savedUrlList.slice());
85     }
86   },
88   /** @private */
89   onOkTap_: function() {
90     var value = this.newUrl && this.newUrl.trim();
91     if (!value)
92       return;
93     this.push('prefs.session.startup_urls.value', value);
94     this.newUrl = '';
95   },
97   /**
98    * @param {!{model: !{index: number}}} e
99    * @private
100    */
101   onRemoveUrlTap_: function(e) {
102     this.splice('prefs.session.startup_urls.value', e.model.index, 1);
103   },