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

Unified Diff: components/sync_driver/resources/sync_node_browser.js

Issue 2203673002: [Sync] Move //components/sync_driver to //components/sync/driver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@sd-a
Patch Set: Full change rebased on static lib. 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
Index: components/sync_driver/resources/sync_node_browser.js
diff --git a/components/sync_driver/resources/sync_node_browser.js b/components/sync_driver/resources/sync_node_browser.js
deleted file mode 100644
index f236278aa83b019b05e4d4b73266b907aa37b970..0000000000000000000000000000000000000000
--- a/components/sync_driver/resources/sync_node_browser.js
+++ /dev/null
@@ -1,233 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// require: cr.js
-// require: cr/ui.js
-// require: cr/ui/tree.js
-
-(function() {
- /**
- * A helper function to determine if a node is the root of its type.
- *
- * @param {!Object} node The node to check.
- */
- var isTypeRootNode = function(node) {
- return node.PARENT_ID == 'r' && node.UNIQUE_SERVER_TAG != '';
- };
-
- /**
- * A helper function to determine if a node is a child of the given parent.
- *
- * @param {!Object} parent node.
- * @param {!Object} node The node to check.
- */
- var isChildOf = function(parentNode, node) {
- if (node.PARENT_ID != '') {
- return node.PARENT_ID == parentNode.ID;
- }
- else {
- return node.modelType == parentNode.modelType;
- }
- };
-
- /**
- * A helper function to sort sync nodes.
- *
- * Sorts by position index if possible, falls back to sorting by name, and
- * finally sorting by METAHANDLE.
- *
- * If this proves to be slow and expensive, we should experiment with moving
- * this functionality to C++ instead.
- */
- var nodeComparator = function(nodeA, nodeB) {
- if (nodeA.hasOwnProperty('positionIndex') &&
- nodeB.hasOwnProperty('positionIndex')) {
- return nodeA.positionIndex - nodeB.positionIndex;
- } else if (nodeA.NON_UNIQUE_NAME != nodeB.NON_UNIQUE_NAME) {
- return nodeA.NON_UNIQUE_NAME.localeCompare(nodeB.NON_UNIQUE_NAME);
- } else {
- return nodeA.METAHANDLE - nodeB.METAHANDLE;
- }
- };
-
- /**
- * Updates the node detail view with the details for the given node.
- * @param {!Object} node The struct representing the node we want to display.
- */
- function updateNodeDetailView(node) {
- var nodeDetailsView = $('node-details');
- nodeDetailsView.hidden = false;
- jstProcess(new JsEvalContext(node.entry_), nodeDetailsView);
- }
-
- /**
- * Updates the 'Last refresh time' display.
- * @param {string} The text to display.
- */
- function setLastRefreshTime(str) {
- $('node-browser-refresh-time').textContent = str;
- }
-
- /**
- * Creates a new sync node tree item.
- *
- * @constructor
- * @param {!Object} node The nodeDetails object for the node as returned by
- * chrome.sync.getAllNodes().
- * @extends {cr.ui.TreeItem}
- */
- var SyncNodeTreeItem = function(node) {
- var treeItem = new cr.ui.TreeItem();
- treeItem.__proto__ = SyncNodeTreeItem.prototype;
-
- treeItem.entry_ = node;
- treeItem.label = node.NON_UNIQUE_NAME;
- if (node.IS_DIR) {
- treeItem.mayHaveChildren_ = true;
-
- // Load children on expand.
- treeItem.expanded_ = false;
- treeItem.addEventListener('expand',
- treeItem.handleExpand_.bind(treeItem));
- } else {
- treeItem.classList.add('leaf');
- }
- return treeItem;
- };
-
- SyncNodeTreeItem.prototype = {
- __proto__: cr.ui.TreeItem.prototype,
-
- /**
- * Finds the children of this node and appends them to the tree.
- */
- handleExpand_: function(event) {
- var treeItem = this;
-
- if (treeItem.expanded_) {
- return;
- }
- treeItem.expanded_ = true;
-
- var children = treeItem.tree.allNodes.filter(
- isChildOf.bind(undefined, treeItem.entry_));
- children.sort(nodeComparator);
-
- children.forEach(function(node) {
- treeItem.add(new SyncNodeTreeItem(node));
- });
- },
- };
-
- /**
- * Creates a new sync node tree. Technically, it's a forest since it each
- * type has its own root node for its own tree, but it still looks and acts
- * mostly like a tree.
- *
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {cr.ui.Tree}
- */
- var SyncNodeTree = cr.ui.define('tree');
-
- SyncNodeTree.prototype = {
- __proto__: cr.ui.Tree.prototype,
-
- decorate: function() {
- cr.ui.Tree.prototype.decorate.call(this);
- this.addEventListener('change', this.handleChange_.bind(this));
- this.allNodes = [];
- },
-
- populate: function(nodes) {
- var tree = this;
-
- // We store the full set of nodes in the SyncNodeTree object.
- tree.allNodes = nodes;
-
- var roots = tree.allNodes.filter(isTypeRootNode);
- roots.sort(nodeComparator);
-
- roots.forEach(function(typeRoot) {
- tree.add(new SyncNodeTreeItem(typeRoot));
- });
- },
-
- handleChange_: function(event) {
- if (this.selectedItem) {
- updateNodeDetailView(this.selectedItem);
- }
- }
- };
-
- /**
- * Clears any existing UI state. Useful prior to a refresh.
- */
- function clear() {
- var treeContainer = $('sync-node-tree-container');
- while (treeContainer.firstChild) {
- treeContainer.removeChild(treeContainer.firstChild);
- }
-
- var nodeDetailsView = $('node-details');
- nodeDetailsView.hidden = true;
- }
-
- /**
- * Fetch the latest set of nodes and refresh the UI.
- */
- function refresh() {
- $('node-browser-refresh-button').disabled = true;
-
- clear();
- setLastRefreshTime('In progress since ' + (new Date()).toLocaleString());
-
- chrome.sync.getAllNodes(function(nodeMap) {
- // Put all nodes into one big list that ignores the type.
- var nodes = nodeMap.
- map(function(x) { return x.nodes; }).
- reduce(function(a, b) { return a.concat(b); });
-
- var treeContainer = $('sync-node-tree-container');
- var tree = document.createElement('tree');
- tree.setAttribute('id', 'sync-node-tree');
- tree.setAttribute('icon-visibility', 'parent');
- treeContainer.appendChild(tree);
-
- cr.ui.decorate(tree, SyncNodeTree);
- tree.populate(nodes);
-
- setLastRefreshTime((new Date()).toLocaleString());
- $('node-browser-refresh-button').disabled = false;
- });
- }
-
- document.addEventListener('DOMContentLoaded', function(e) {
- $('node-browser-refresh-button').addEventListener('click', refresh);
- var Splitter = cr.ui.Splitter;
- var customSplitter = cr.ui.define('div');
-
- customSplitter.prototype = {
- __proto__: Splitter.prototype,
-
- handleSplitterDragEnd: function(e) {
- Splitter.prototype.handleSplitterDragEnd.apply(this, arguments);
- var treeElement = $("sync-node-tree-container");
- var newWidth = parseFloat(treeElement.style.width);
- treeElement.style.minWidth = Math.max(newWidth, 50) + "px";
- }
- };
-
- customSplitter.decorate($("sync-node-splitter"));
-
- // Automatically trigger a refresh the first time this tab is selected.
- $('sync-browser-tab').addEventListener('selectedChange', function f(e) {
- if (this.selected) {
- $('sync-browser-tab').removeEventListener('selectedChange', f);
- refresh();
- }
- });
- });
-
-})();
« no previous file with comments | « components/sync_driver/resources/sync_node_browser.css ('k') | components/sync_driver/resources/sync_search.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698