Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1100)

Unified Diff: chrome/browser/resources/app_list/start_page.js

Issue 887853003: Make app list start page doodle clickable and have alt text. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@doodle_static
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/app_list/start_page.js
diff --git a/chrome/browser/resources/app_list/start_page.js b/chrome/browser/resources/app_list/start_page.js
index ce8c734bf45d7fad5140fe3582094249d9cef3e3..0c660ffb9eb59de991c67740353371ca40bebc2f 100644
--- a/chrome/browser/resources/app_list/start_page.js
+++ b/chrome/browser/resources/app_list/start_page.js
@@ -13,6 +13,9 @@ cr.define('appList.startPage', function() {
var speechManager = null;
+ // The element containing the current Google Doodle.
+ var doodle = null;
+
/**
* Initialize the page.
*/
@@ -48,24 +51,73 @@ cr.define('appList.startPage', function() {
}
/**
+ * Sets the doodle's visibility, hiding or showing the default logo.
+ *
+ * @param {boolean} visible Whether the doodle should be made visible.
+ */
+ function setDoodleVisible(visible) {
Matt Giuca 2015/02/03 07:08:50 So if $('doodle') doesn't exist and visible == tru
calamity 2015/02/04 03:16:22 I don't think there's an assert in JS so..... Don
Matt Giuca 2015/02/04 04:36:10 Acknowledged.
+ var doodle = $('doodle');
+ var defaultLogo = $('default_logo');
+ if (doodle && visible) {
+ doodle.style.display = 'flex';
+ defaultLogo.style.display = 'none';
+ console.log(defaultLogo.style.display);
+ } else {
+ if (doodle)
+ doodle.style.display = 'none';
+
+ defaultLogo.style.display = 'block';
+ }
+ }
+
+ /**
* Invoked when the app-list doodle is updated.
*
* @param {Object} data The data object representing the current doodle.
*/
function onAppListDoodleUpdated(data, base_url) {
- var defaultLogo = $('default_logo');
- var doodle = $('doodle');
- if (!data.ddljson || !data.ddljson.transparent_large_image) {
- defaultLogo.style.display = 'block';
- doodle.style.display = 'none';
+ if (this.doodle) {
+ this.doodle.parentNode.removeChild(this.doodle);
+ this.doodle = null;
+ }
+
+ var doodleData = data.ddljson;
+ if (!doodleData || !doodleData.transparent_large_image) {
+ setDoodleVisible(false);
return;
}
- doodle.onload = function() {
- defaultLogo.style.display = 'none';
- doodle.style.display = 'block';
+ // Set the page's base URL so that links will resolve relative to the Google
+ // homepage.
+ $('base').href = base_url;
+
+ this.doodle = document.createElement('div');
+ this.doodle.id = 'doodle';
+ this.doodle.style.display = 'none';
+
+ var doodleImage = document.createElement('img');
+ doodleImage.id = 'doodle_image';
+ if (doodleData.alt_text) {
+ doodleImage.alt = doodleData.alt_text;
+ doodleImage.title = doodleData.alt_text;
+ }
+
+ doodleImage.onload = function() {
+ setDoodleVisible(true);
};
- doodle.src = base_url + data.ddljson.transparent_large_image.url;
+ doodleImage.src = doodleData.transparent_large_image.url;
+
+ if (doodleData.target_url) {
+ var doodleLink = document.createElement('a');
Matt Giuca 2015/02/03 07:08:50 Curious: In my experience, when you have <a><img /
calamity 2015/02/04 03:16:22 I am not seeing this happen. I have no idea why. I
Matt Giuca 2015/02/04 04:36:10 Yeah, I'm not seeing it even on a totally fresh pa
+ doodleLink.id = 'doodle_link';
+ doodleLink.href = doodleData.target_url;
+ doodleLink.target = '_blank';
+ doodleLink.appendChild(doodleImage);
+ this.doodle.appendChild(doodleLink);
+ } else {
+ this.doodle.appendChild(doodleImage);
+ }
+ $('logo_container').appendChild(this.doodle);
}
/**

Powered by Google App Engine
This is Rietveld 408576698