Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / resources / app_list / start_page.js
blob10ea9f5ab462ca2ead7ca495e7a37f7c9d3ed8ae
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 /**
6  * @fileoverview App launcher start page implementation.
7  */
9 cr.define('appList.startPage', function() {
10   'use strict';
12   // The element containing the current Google Doodle.
13   var doodle = null;
15   /**
16    * Initialize the page.
17    */
18   function initialize() {
19     chrome.send('initialize');
20   }
22   /**
23    * Invoked when the app-list bubble is shown.
24    */
25   function onAppListShown() {
26     chrome.send('appListShown', [this.doodle != null]);
27   }
29   /**
30    * Sets the doodle's visibility, hiding or showing the default logo.
31    *
32    * @param {boolean} visible Whether the doodle should be made visible.
33    */
34   function setDoodleVisible(visible) {
35     var doodle = $('doodle');
36     var defaultLogo = $('default_logo');
37     if (visible) {
38       doodle.style.display = 'flex';
39       defaultLogo.style.display = 'none';
40     } else {
41       if (doodle)
42         doodle.style.display = 'none';
44       defaultLogo.style.display = 'block';
45     }
46   }
48   /**
49    * Invoked when the app-list doodle is updated.
50    *
51    * @param {Object} data The data object representing the current doodle.
52    */
53   function onAppListDoodleUpdated(data, base_url) {
54     if (this.doodle) {
55       this.doodle.parentNode.removeChild(this.doodle);
56       this.doodle = null;
57     }
59     var doodleData = data.ddljson;
60     if (!doodleData || !doodleData.transparent_large_image) {
61       setDoodleVisible(false);
62       return;
63     }
65     // Set the page's base URL so that links will resolve relative to the Google
66     // homepage.
67     $('base').href = base_url;
69     this.doodle = document.createElement('div');
70     this.doodle.id = 'doodle';
71     this.doodle.style.display = 'none';
73     var doodleImage = document.createElement('img');
74     doodleImage.id = 'doodle_image';
75     if (doodleData.alt_text) {
76       doodleImage.alt = doodleData.alt_text;
77       doodleImage.title = doodleData.alt_text;
78     }
80     doodleImage.onload = function() {
81       setDoodleVisible(true);
82     };
83     doodleImage.src = doodleData.transparent_large_image.url;
85     if (doodleData.target_url) {
86       var doodleLink = document.createElement('a');
87       doodleLink.id = 'doodle_link';
88       doodleLink.href = doodleData.target_url;
89       doodleLink.target = '_blank';
90       doodleLink.appendChild(doodleImage);
91       doodleLink.onclick = function() {
92         chrome.send('doodleClicked');
93         return true;
94       };
95       this.doodle.appendChild(doodleLink);
96     } else {
97       this.doodle.appendChild(doodleImage);
98     }
99     $('logo_container').appendChild(this.doodle);
100   }
102   return {
103     initialize: initialize,
104     onAppListDoodleUpdated: onAppListDoodleUpdated,
105     onAppListShown: onAppListShown,
106   };
109 document.addEventListener('contextmenu', function(e) { e.preventDefault(); });
110 document.addEventListener('DOMContentLoaded', appList.startPage.initialize);