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

Unified Diff: chrome/browser/resources/md_history/app.crisper.js

Issue 2253083003: [MD History] Add shadow to toolbar on scroll. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@more_stats
Patch Set: rebase Created 4 years, 4 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
« no previous file with comments | « chrome/browser/resources/md_history/app.js ('k') | chrome/browser/resources/md_history/app.vulcanized.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/md_history/app.crisper.js
diff --git a/chrome/browser/resources/md_history/app.crisper.js b/chrome/browser/resources/md_history/app.crisper.js
index 3ab73306700f8a6d1057220b40a46f1c5c73a999..e22968d2315849da995193453caa80ebed9073e6 100644
--- a/chrome/browser/resources/md_history/app.crisper.js
+++ b/chrome/browser/resources/md_history/app.crisper.js
@@ -1833,6 +1833,95 @@ Polymer({
}
});
+Polymer.IronScrollTargetBehavior = {
+ properties: {
+ scrollTarget: {
+ type: HTMLElement,
+ value: function() {
+ return this._defaultScrollTarget;
+ }
+ }
+ },
+ observers: [ '_scrollTargetChanged(scrollTarget, isAttached)' ],
+ _scrollTargetChanged: function(scrollTarget, isAttached) {
+ var eventTarget;
+ if (this._oldScrollTarget) {
+ eventTarget = this._oldScrollTarget === this._doc ? window : this._oldScrollTarget;
+ eventTarget.removeEventListener('scroll', this._boundScrollHandler);
+ this._oldScrollTarget = null;
+ }
+ if (!isAttached) {
+ return;
+ }
+ if (scrollTarget === 'document') {
+ this.scrollTarget = this._doc;
+ } else if (typeof scrollTarget === 'string') {
+ this.scrollTarget = this.domHost ? this.domHost.$[scrollTarget] : Polymer.dom(this.ownerDocument).querySelector('#' + scrollTarget);
+ } else if (this._isValidScrollTarget()) {
+ eventTarget = scrollTarget === this._doc ? window : scrollTarget;
+ this._boundScrollHandler = this._boundScrollHandler || this._scrollHandler.bind(this);
+ this._oldScrollTarget = scrollTarget;
+ eventTarget.addEventListener('scroll', this._boundScrollHandler);
+ }
+ },
+ _scrollHandler: function scrollHandler() {},
+ get _defaultScrollTarget() {
+ return this._doc;
+ },
+ get _doc() {
+ return this.ownerDocument.documentElement;
+ },
+ get _scrollTop() {
+ if (this._isValidScrollTarget()) {
+ return this.scrollTarget === this._doc ? window.pageYOffset : this.scrollTarget.scrollTop;
+ }
+ return 0;
+ },
+ get _scrollLeft() {
+ if (this._isValidScrollTarget()) {
+ return this.scrollTarget === this._doc ? window.pageXOffset : this.scrollTarget.scrollLeft;
+ }
+ return 0;
+ },
+ set _scrollTop(top) {
+ if (this.scrollTarget === this._doc) {
+ window.scrollTo(window.pageXOffset, top);
+ } else if (this._isValidScrollTarget()) {
+ this.scrollTarget.scrollTop = top;
+ }
+ },
+ set _scrollLeft(left) {
+ if (this.scrollTarget === this._doc) {
+ window.scrollTo(left, window.pageYOffset);
+ } else if (this._isValidScrollTarget()) {
+ this.scrollTarget.scrollLeft = left;
+ }
+ },
+ scroll: function(left, top) {
+ if (this.scrollTarget === this._doc) {
+ window.scrollTo(left, top);
+ } else if (this._isValidScrollTarget()) {
+ this.scrollTarget.scrollLeft = left;
+ this.scrollTarget.scrollTop = top;
+ }
+ },
+ get _scrollTargetWidth() {
+ if (this._isValidScrollTarget()) {
+ return this.scrollTarget === this._doc ? window.innerWidth : this.scrollTarget.offsetWidth;
+ }
+ return 0;
+ },
+ get _scrollTargetHeight() {
+ if (this._isValidScrollTarget()) {
+ return this.scrollTarget === this._doc ? window.innerHeight : this.scrollTarget.offsetHeight;
+ }
+ return 0;
+ },
+ _isValidScrollTarget: function() {
+ return this.scrollTarget instanceof HTMLElement;
+ }
+};
+
(function() {
'use strict';
var KEY_IDENTIFIER = {
@@ -7008,95 +7097,6 @@ Polymer({
}
});
-Polymer.IronScrollTargetBehavior = {
- properties: {
- scrollTarget: {
- type: HTMLElement,
- value: function() {
- return this._defaultScrollTarget;
- }
- }
- },
- observers: [ '_scrollTargetChanged(scrollTarget, isAttached)' ],
- _scrollTargetChanged: function(scrollTarget, isAttached) {
- var eventTarget;
- if (this._oldScrollTarget) {
- eventTarget = this._oldScrollTarget === this._doc ? window : this._oldScrollTarget;
- eventTarget.removeEventListener('scroll', this._boundScrollHandler);
- this._oldScrollTarget = null;
- }
- if (!isAttached) {
- return;
- }
- if (scrollTarget === 'document') {
- this.scrollTarget = this._doc;
- } else if (typeof scrollTarget === 'string') {
- this.scrollTarget = this.domHost ? this.domHost.$[scrollTarget] : Polymer.dom(this.ownerDocument).querySelector('#' + scrollTarget);
- } else if (this._isValidScrollTarget()) {
- eventTarget = scrollTarget === this._doc ? window : scrollTarget;
- this._boundScrollHandler = this._boundScrollHandler || this._scrollHandler.bind(this);
- this._oldScrollTarget = scrollTarget;
- eventTarget.addEventListener('scroll', this._boundScrollHandler);
- }
- },
- _scrollHandler: function scrollHandler() {},
- get _defaultScrollTarget() {
- return this._doc;
- },
- get _doc() {
- return this.ownerDocument.documentElement;
- },
- get _scrollTop() {
- if (this._isValidScrollTarget()) {
- return this.scrollTarget === this._doc ? window.pageYOffset : this.scrollTarget.scrollTop;
- }
- return 0;
- },
- get _scrollLeft() {
- if (this._isValidScrollTarget()) {
- return this.scrollTarget === this._doc ? window.pageXOffset : this.scrollTarget.scrollLeft;
- }
- return 0;
- },
- set _scrollTop(top) {
- if (this.scrollTarget === this._doc) {
- window.scrollTo(window.pageXOffset, top);
- } else if (this._isValidScrollTarget()) {
- this.scrollTarget.scrollTop = top;
- }
- },
- set _scrollLeft(left) {
- if (this.scrollTarget === this._doc) {
- window.scrollTo(left, window.pageYOffset);
- } else if (this._isValidScrollTarget()) {
- this.scrollTarget.scrollLeft = left;
- }
- },
- scroll: function(left, top) {
- if (this.scrollTarget === this._doc) {
- window.scrollTo(left, top);
- } else if (this._isValidScrollTarget()) {
- this.scrollTarget.scrollLeft = left;
- this.scrollTarget.scrollTop = top;
- }
- },
- get _scrollTargetWidth() {
- if (this._isValidScrollTarget()) {
- return this.scrollTarget === this._doc ? window.innerWidth : this.scrollTarget.offsetWidth;
- }
- return 0;
- },
- get _scrollTargetHeight() {
- if (this._isValidScrollTarget()) {
- return this.scrollTarget === this._doc ? window.innerHeight : this.scrollTarget.offsetHeight;
- }
- return 0;
- },
- _isValidScrollTarget: function() {
- return this.scrollTarget instanceof HTMLElement;
- }
-};
-
(function() {
var IOS = navigator.userAgent.match(/iP(?:hone|ad;(?: U;)? CPU) OS (\d+)/);
var IOS_TOUCH_SCROLLING = IOS && IOS[1] >= 8;
@@ -8216,6 +8216,9 @@ Polymer({
if (this.getSelectedItemCount() > 0) return;
this.queryHistory(false);
},
+ getContentScrollTarget: function() {
+ return this.getSelectedList_();
+ },
getSelectedItemCount: function() {
return this.getSelectedList_().selectedPaths.size;
},
@@ -8410,6 +8413,9 @@ Polymer({
chrome.send('otherDevicesInitialized');
md_history.BrowserService.getInstance().recordHistogram(SYNCED_TABS_HISTOGRAM_NAME, SyncedTabsHistogram.INITIALIZED, SyncedTabsHistogram.LIMIT);
},
+ getContentScrollTarget: function() {
+ return this;
+ },
createInternalDevice_: function(session) {
var tabs = [];
var separatorIndexes = [];
@@ -8573,6 +8579,7 @@ Polymer({
// found in the LICENSE file.
Polymer({
is: 'history-app',
+ behaviors: [ Polymer.IronScrollTargetBehavior ],
properties: {
showSidebarFooter: Boolean,
selectedPage_: {
@@ -8618,6 +8625,11 @@ Polymer({
isUserSignedIn_: {
type: Boolean,
value: loadTimeData.getBoolean('isUserSignedIn')
+ },
+ toolbarShadow_: {
+ type: Boolean,
+ reflectToAttribute: true,
+ notify: true
}
},
observers: [ 'routeDataChanged_(routeData_.page)', 'selectedPageChanged_(selectedPage_)', 'searchTermChanged_(queryState_.searchTerm)', 'searchQueryParamChanged_(queryParams_.q)' ],
@@ -8628,7 +8640,7 @@ Polymer({
'delete-selected': 'deleteSelected',
'search-domain': 'searchDomain_',
'history-close-drawer': 'closeDrawer_',
- 'history-view-changed': 'recordHistoryPageView_'
+ 'history-view-changed': 'historyViewChanged_'
},
ready: function() {
this.grouped_ = loadTimeData.getBoolean('groupByDomain');
@@ -8647,6 +8659,9 @@ Polymer({
this.focusToolbarSearchField();
}
},
+ _scrollHandler: function() {
+ this.toolbarShadow_ = this.scrollTarget.scrollTop != 0;
+ },
onMenuTap_: function() {
var drawer = this.$$('#drawer');
if (drawer) drawer.toggle();
@@ -8730,6 +8745,13 @@ Polymer({
},
selectedPageChanged_: function(selectedPage) {
this.set('routeData_.page', selectedPage);
+ this.historyViewChanged_();
+ },
+ historyViewChanged_: function() {
+ requestAnimationFrame(function() {
+ this.scrollTarget = this.$.content.selectedItem.getContentScrollTarget();
+ this._scrollHandler();
+ }.bind(this));
this.recordHistoryPageView_();
},
getSelectedPage_: function(selectedPage, items) {
« no previous file with comments | « chrome/browser/resources/md_history/app.js ('k') | chrome/browser/resources/md_history/app.vulcanized.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698