Index: chrome/browser/resources/local_ntp/local_ntp.js |
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js |
index ab514dfeb1f0c07205ffa45495031cf3daead90c..b3878197c66dcabec64badb24a37872b48b6a969 100644 |
--- a/chrome/browser/resources/local_ntp/local_ntp.js |
+++ b/chrome/browser/resources/local_ntp/local_ntp.js |
@@ -28,6 +28,8 @@ var CLASSES = { |
DELAYED_HIDE_NOTIFICATION: 'mv-notice-delayed-hide', |
FAKEBOX_DISABLE: 'fakebox-disable', // Makes fakebox non-interactive |
FAKEBOX_FOCUS: 'fakebox-focused', // Applies focus styles to the fakebox |
+ // Applies drag focus style to the fakebox |
+ FAKEBOX_DRAG_FOCUS: 'fakebox-drag-focused', |
FAVICON: 'mv-favicon', |
HIDE_BLACKLIST_BUTTON: 'mv-x-hide', // hides blacklist button during animation |
HIDE_FAKEBOX_AND_LOGO: 'hide-fakebox-logo', |
@@ -55,6 +57,7 @@ var IDS = { |
ATTRIBUTION_TEXT: 'attribution-text', |
CUSTOM_THEME_STYLE: 'ct-style', |
FAKEBOX: 'fakebox', |
+ FAKEBOX_INPUT: 'fakebox-input', |
LOGO: 'logo', |
NOTIFICATION: 'mv-notice', |
NOTIFICATION_CLOSE_BUTTON: 'mv-notice-x', |
@@ -770,6 +773,7 @@ function getTileByRid(rid) { |
function onInputStart() { |
if (fakebox && isFakeboxFocused()) { |
setFakeboxFocus(false); |
+ setFakeboxDragFocus(false); |
disposeNtp(true); |
} else if (!isFakeboxFocused()) { |
disposeNtp(false); |
@@ -806,12 +810,19 @@ function setFakeboxFocus(focus) { |
document.body.classList.toggle(CLASSES.FAKEBOX_FOCUS, focus); |
} |
+/** |
+ * @param {boolean} focus True to show a dragging focus to the fakebox. |
+ */ |
+function setFakeboxDragFocus(focus) { |
+ document.body.classList.toggle(CLASSES.FAKEBOX_DRAG_FOCUS, focus); |
+} |
/** |
* @return {boolean} True if the fakebox has focus. |
*/ |
function isFakeboxFocused() { |
- return document.body.classList.contains(CLASSES.FAKEBOX_FOCUS); |
+ return document.body.classList.contains(CLASSES.FAKEBOX_FOCUS) || |
+ document.body.classList.contains(CLASSES.FAKEBOX_DRAG_FOCUS); |
} |
@@ -947,7 +958,8 @@ function init() { |
fakebox = document.createElement('div'); |
fakebox.id = IDS.FAKEBOX; |
fakebox.innerHTML = |
- '<input autocomplete="off" tabindex="-1" aria-hidden="true">' + |
+ '<input id="' + IDS.FAKEBOX_INPUT + |
+ '" autocomplete="off" tabindex="-1" aria-hidden="true">' + |
'<div id=cursor></div>'; |
ntpContents.insertBefore(fakebox, ntpContents.firstChild); |
@@ -1011,7 +1023,7 @@ function init() { |
if (fakebox) { |
// Listener for updating the key capture state. |
- document.body.onclick = function(event) { |
+ document.body.onmousedown = function(event) { |
if (isFakeboxClick(event)) |
searchboxApiHandle.startCapturingKeyStrokes(); |
else if (isFakeboxFocused()) |
@@ -1020,6 +1032,26 @@ function init() { |
searchboxApiHandle.onkeycapturechange = function() { |
setFakeboxFocus(searchboxApiHandle.isKeyCaptureEnabled); |
}; |
+ var inputbox = $(IDS.FAKEBOX_INPUT); |
+ if (inputbox) { |
+ inputbox.onpaste = function(event) { |
+ event.preventDefault(); |
+ searchboxApiHandle.paste(); |
+ }; |
+ inputbox.ondrop = function(event) { |
+ event.preventDefault(); |
+ var text = event.dataTransfer.getData('text/plain'); |
+ if (text) { |
+ searchboxApiHandle.paste(text); |
+ } |
+ }; |
+ inputbox.ondragenter = function() { |
+ setFakeboxDragFocus(true); |
+ }; |
+ inputbox.ondragleave = function() { |
+ setFakeboxDragFocus(false); |
+ }; |
+ } |
} |
if (searchboxApiHandle.rtl) { |