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

Side by Side Diff: chrome/browser/resources/vr_shell/vr_shell_ui.js

Issue 2684233003: Switch tabs from VR shell. (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var vrShellUi = (function() { 5 var vrShellUi = (function() {
6 'use strict'; 6 'use strict';
7 7
8 let ui = new scene.Scene(); 8 let ui = new scene.Scene();
9 let uiManager; 9 let uiManager;
10 10
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 // TODO(crbug/641487): currently, tabs cannot be scrolled because the 683 // TODO(crbug/641487): currently, tabs cannot be scrolled because the
684 // scrolling event is not send to UI elements. 684 // scrolling event is not send to UI elements.
685 class TabContainer { 685 class TabContainer {
686 constructor(contentQuadId) { 686 constructor(contentQuadId) {
687 /** @const */ var DOM_TAB_TEMPLATE_SELECTOR = '#tab-template'; 687 /** @const */ var DOM_TAB_TEMPLATE_SELECTOR = '#tab-template';
688 /** @const */ var DOM_TAB_CONTAINER_SELECTOR = '#tab-container'; 688 /** @const */ var DOM_TAB_CONTAINER_SELECTOR = '#tab-container';
689 /** @const */ var DOM_TAB_CLIP_SELECTOR = '#tab-clip'; 689 /** @const */ var DOM_TAB_CLIP_SELECTOR = '#tab-clip';
690 /** @const */ var TAB_CONTAINER_Y_OFFSET = 0.4; 690 /** @const */ var TAB_CONTAINER_Y_OFFSET = 0.4;
691 /** @const */ var TAB_CONTAINER_Z_OFFSET = -1; 691 /** @const */ var TAB_CONTAINER_Z_OFFSET = -1;
692 692
693 this.tabs = {};
694 this.domTabs = {}; 693 this.domTabs = {};
695 this.contentQuadId = contentQuadId; 694 this.contentQuadId = contentQuadId;
696 this.domTabTemplate = document.querySelector(DOM_TAB_TEMPLATE_SELECTOR); 695 this.domTabTemplate = document.querySelector(DOM_TAB_TEMPLATE_SELECTOR);
697 this.domTabContainer = document.querySelector(DOM_TAB_CONTAINER_SELECTOR); 696 this.domTabContainer = document.querySelector(DOM_TAB_CONTAINER_SELECTOR);
698 this.domTabClip = document.querySelector(DOM_TAB_CLIP_SELECTOR); 697 this.domTabClip = document.querySelector(DOM_TAB_CLIP_SELECTOR);
699 698
700 // Add tab container to native scene. 699 // Add tab container to native scene.
701 this.tabContainerElement = new DomUiElement(DOM_TAB_CONTAINER_SELECTOR); 700 this.tabContainerElement = new DomUiElement(DOM_TAB_CONTAINER_SELECTOR);
702 let positionUpdate = new api.UiElementUpdate(); 701 let positionUpdate = new api.UiElementUpdate();
703 positionUpdate.setTranslation( 702 positionUpdate.setTranslation(
(...skipping 11 matching lines...) Expand all
715 714
716 getQualifiedTabId(tab) { 715 getQualifiedTabId(tab) {
717 return (tab.incognito ? 'i' : 'n') + tab.id; 716 return (tab.incognito ? 'i' : 'n') + tab.id;
718 } 717 }
719 718
720 makeDomTab(tab) { 719 makeDomTab(tab) {
721 // Make a copy of the template tab and add this copy to the tab container 720 // Make a copy of the template tab and add this copy to the tab container
722 // view. 721 // view.
723 let domTab = this.domTabTemplate.cloneNode(true); 722 let domTab = this.domTabTemplate.cloneNode(true);
724 domTab.removeAttribute('id'); 723 domTab.removeAttribute('id');
724 domTab.addEventListener('click', function() {
725 api.doAction(api.Action.SHOW_TAB, {'id': domTab.tab.id});
726 });
725 this.domTabClip.appendChild(domTab); 727 this.domTabClip.appendChild(domTab);
726 this.domTabs[this.getQualifiedTabId(tab)] = domTab; 728 this.domTabs[this.getQualifiedTabId(tab)] = domTab;
729 domTab.tab = tab;
727 return domTab; 730 return domTab;
728 } 731 }
729 732
730 resizeClipElement() { 733 resizeClipElement() {
731 // Resize clip element so that scrolling works. 734 // Resize clip element so that scrolling works.
732 this.domTabClip.style.width = 735 this.domTabClip.style.width =
733 (Object.keys(this.tabs).length * this.domTabWidth) + 'px'; 736 (Object.keys(this.domTabs).length * this.domTabWidth) + 'px';
734 } 737 }
735 738
736 setTabs(tabs) { 739 setTabs(tabs) {
737 // Remove all current tabs. 740 // Remove all current tabs.
738 while (this.domTabClip.firstChild) { 741 while (this.domTabClip.firstChild) {
739 this.domTabClip.removeChild(this.domTabClip.firstChild); 742 this.domTabClip.removeChild(this.domTabClip.firstChild);
740 } 743 }
741 this.tabs = {};
742 744
743 // Add new tabs. 745 // Add new tabs.
744 for (let i = 0; i < tabs.length; i++) { 746 for (let i = 0; i < tabs.length; i++) {
745 this.addTab(tabs[i]); 747 this.addTab(tabs[i]);
746 } 748 }
747 } 749 }
748 750
749 hasTab(tab) { 751 hasTab(tab) {
750 return this.getQualifiedTabId(tab) in this.tabs; 752 return this.getQualifiedTabId(tab) in this.domTabs;
751 } 753 }
752 754
753 addTab(tab) { 755 addTab(tab) {
754 this.tabs[this.getQualifiedTabId(tab)] = tab;
755 this.makeDomTab(tab); 756 this.makeDomTab(tab);
756 this.updateTab(tab); 757 this.updateTab(tab);
757 this.resizeClipElement(); 758 this.resizeClipElement();
758 } 759 }
759 760
760 updateTab(tab) { 761 updateTab(tab) {
761 let domTab = this.domTabs[this.getQualifiedTabId(tab)]; 762 let domTab = this.domTabs[this.getQualifiedTabId(tab)];
762 domTab.textContent = tab.title; 763 domTab.textContent = tab.title;
763 domTab.classList.remove('tab-incognito'); 764 domTab.classList.remove('tab-incognito');
764 if (tab.incognito) { 765 if (tab.incognito) {
765 domTab.classList.add('tab-incognito'); 766 domTab.classList.add('tab-incognito');
766 } 767 }
767 } 768 }
768 769
769 removeTab(tab) { 770 removeTab(tab) {
770 let qualifiedTabId = this.getQualifiedTabId(tab); 771 let qualifiedTabId = this.getQualifiedTabId(tab);
771 let domTab = this.domTabs[qualifiedTabId]; 772 let domTab = this.domTabs[qualifiedTabId];
772 delete this.domTabs[qualifiedTabId]; 773 delete this.domTabs[qualifiedTabId];
773 this.domTabClip.removeChild(domTab); 774 this.domTabClip.removeChild(domTab);
774 delete this.tabs[qualifiedTabId];
775 this.resizeClipElement(); 775 this.resizeClipElement();
776 } 776 }
777 777
778 setEnabled(enabled) { 778 setEnabled(enabled) {
779 let visibilityUpdate = new api.UiElementUpdate(); 779 let visibilityUpdate = new api.UiElementUpdate();
780 visibilityUpdate.setVisible(enabled); 780 visibilityUpdate.setVisible(enabled);
781 ui.updateElement(this.tabContainerElement.uiElementId, visibilityUpdate); 781 ui.updateElement(this.tabContainerElement.uiElementId, visibilityUpdate);
782 } 782 }
783 }; 783 };
784 784
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 ui.flush(); 902 ui.flush();
903 } 903 }
904 904
905 return { 905 return {
906 initialize: initialize, 906 initialize: initialize,
907 command: command, 907 command: command,
908 }; 908 };
909 })(); 909 })();
910 910
911 window.addEventListener('load', vrShellUi.initialize); 911 window.addEventListener('load', vrShellUi.initialize);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698