Roll src/third_party/WebKit 9f7fb92:f103b33 (svn 202621:202622)
[chromium-blink-merge.git] / components / dom_distiller / webui / resources / about_dom_distiller.js
blob8c84eb8ff3840e261ea9157fcb6020d106afae75
1 // Copyright 2013 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 var domDistiller = {
6   /**
7    * Callback from the backend with the list of entries to display.
8    * This call will build the entries section of the DOM distiller page, or hide
9    * that section if there are none to display.
10    * @param {!Array<string>} entries The entries.
11    */
12   onReceivedEntries: function(entries) {
13     $('entries-list-loading').classList.add('hidden');
14     if (!entries.length) $('entries-list').classList.add('hidden');
16     var list = $('entries-list');
17     domDistiller.removeAllChildren(list);
18     for (var i = 0; i < entries.length; i++) {
19       var listItem = document.createElement('li');
20       var link = document.createElement('a');
21       var entry_id = entries[i].entry_id;
22       link.setAttribute('id', 'entry-' + entry_id);
23       link.setAttribute('href', '#');
24       link.innerText = entries[i].title;
25       link.addEventListener('click', function(event) {
26         domDistiller.onSelectArticle(event.target.id.substr("entry-".length));
27       }, true);
28       listItem.appendChild(link);
29       list.appendChild(listItem);
30     }
31   },
33   /**
34    * Callback from the backend when adding an article failed.
35    */
36   onArticleAddFailed: function() {
37     $('add-entry-error').classList.remove('hidden');
38   },
40   /**
41    * Callback from the backend when viewing a URL failed.
42    */
43   onViewUrlFailed: function() {
44     $('view-url-error').classList.remove('hidden');
45   },
47   removeAllChildren: function(root) {
48     while(root.firstChild) {
49       root.removeChild(root.firstChild);
50     }
51   },
53   /**
54    * Sends a request to the browser process to add the URL specified to the list
55    * of articles.
56    */
57   onAddArticle: function() {
58     $('add-entry-error').classList.add('hidden');
59     var url = $('article_url').value;
60     chrome.send('addArticle', [url]);
61   },
63   /**
64    * Sends a request to the browser process to view a distilled version of the
65    * URL specified.
66    */
67   onViewUrl: function() {
68     $('view-url-error').classList.add('hidden');
69     var url = $('article_url').value;
70     chrome.send('viewUrl', [url]);
71   },
73   /**
74    * Sends a request to the browser process to view a distilled version of the
75    * selected article.
76    */
77   onSelectArticle: function(articleId) {
78     chrome.send('selectArticle', [articleId]);
79   },
81   /* All the work we do on load. */
82   onLoadWork: function() {
83     $('list-section').classList.remove('hidden');
84     $('entries-list-loading').classList.add('hidden');
85     $('add-entry-error').classList.add('hidden');
86     $('view-url-error').classList.add('hidden');
88     $('refreshbutton').addEventListener('click', function(event) {
89       domDistiller.onRequestEntries();
90     }, false);
91     $('addbutton').addEventListener('click', function(event) {
92       domDistiller.onAddArticle();
93     }, false);
94     $('viewbutton').addEventListener('click', function(event) {
95       domDistiller.onViewUrl();
96     }, false);
97     domDistiller.onRequestEntries();
98   },
100   onRequestEntries: function() {
101     $('entries-list-loading').classList.remove('hidden');
102     chrome.send('requestEntries');
103   },
106 document.addEventListener('DOMContentLoaded', domDistiller.onLoadWork);