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

Unified Diff: chrome/browser/resources/gpu/main.js

Issue 5228004: Switch the about:gpu implementation from an about handler to dom_ui.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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/gpu/main.js
===================================================================
--- chrome/browser/resources/gpu/main.js (revision 0)
+++ chrome/browser/resources/gpu/main.js (revision 0)
@@ -0,0 +1,116 @@
+// Copyright (c) 2010 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.
+
+/**
+ * Object to communicate between the renderer and the browser.
+ * @type {!BrowserBridge}
+ */
+var g_browser = null;
+
+/**
+ * Main entry point. called once the page has loaded.
+ */
+function onLoaded() {
+ g_browser = new BrowserBridge();
+
+ // Create a view which will display general information
+ // about the gpu.
+ var infoView = new InfoView("infoTabContent");
arv (Not doing code reviews) 2010/11/24 19:07:38 Use single quotes for all js
nduca 2010/12/03 21:32:50 Done.
+ g_browser.infoView_ = infoView;
+
+ // Create a view which lets you tab between the different sub-views.
+ var categoryTabSwitcher =
+ new TabSwitcherView(new DivView('categoryTabHandles'));
+
+ // Populate the main tabs.
+ categoryTabSwitcher.addTab('infoTab', infoView, false);
+
+ // Build a map from the anchor name of each tab handle to its "tab ID".
+ // We will consider navigations to the #hash as a switch tab request.
+ var anchorMap = {};
+ var tabIds = categoryTabSwitcher.getAllTabIds();
+ for (var i = 0; i < tabIds.length; ++i) {
+ var aNode = document.getElementById(tabIds[i]);
+ anchorMap[aNode.hash] = tabIds[i];
+ }
+ // Default the empty hash to the info tab.
+ anchorMap['#'] = anchorMap[''] = 'infoTab';
+
+ window.onhashchange = function() {
+ var tabId = anchorMap[window.location.hash];
+ if (tabId)
+ categoryTabSwitcher.switchToTab(tabId);
+ };
+
+ // Make this category tab widget the primary view, that fills the whole page.
+ var windowView = new WindowView(categoryTabSwitcher);
+
+ // Trigger initial layout.
+ windowView.resetGeometry();
+
+ // Select the initial view based on the current URL.
+ window.onhashchange();
+}
+
+/**
+ * This class provides a "bridge" for communicating between the javascript and
+ * the browser.
+ *
+ * @constructor
+ */
+function BrowserBridge() {
+ this.nextRequestId = 0;
+ this.pendingCallbacks_ = []
+ // If we are not running inside DOMUI, otuput chrome.send messages
+ // to the console to help with quick-iteration debugging.
+ if(chrome.send === undefined && console.log) {
+ chrome.send = function(messageHandler,args) {
+ if(args) {
+ console.log("chrome.send(" + messageHandler + ", " +
+ args.toString() + ")");
+ } else {
+ console.log("chrome.send(" + messageHandler + ")");
+ }
+ };
+ }
+}
+
+/**
+ * This function sends the specified message and arguments, if any, to
+ * Chrome. It will prepend the message arugments with a requestId. The
+ * C++-side Chrome code to call onSendReply with that requestId
+ * in order to complete the request.
+ */
+BrowserBridge.prototype.callAsync = function(submessage, args, callback) {
+ var requestId = this.nextRequestId;
+ this.nextRequestId += 1;
+ this.pendingCallbacks_[requestId] = callback;
+ if(args === undefined) {
+ chrome.send("callAsync", [requestId.toString(), submessage]);
+ } else {
+ var all_args = [requestId.toString(), submessage].concat(args);
+ chrome.send("callAsync", all_args);
+ }
+};
+
+/**
+ * Called by gpu c++ code when client info is ready.
+ */
+BrowserBridge.prototype.onCallAsyncReply = function(requestId,args) {
+ if(this.pendingCallbacks_[requestId] === undefined) {
+ throw "requestId " + requestId + " is not pending";
arv (Not doing code reviews) 2010/11/24 19:07:38 only throw errors
nduca 2010/12/03 21:32:50 Done.
+ }
+ var callback = this.pendingCallbacks_[requestId];
+ callback(args);
+ delete this.pendingCallbacks_[requestId];
+}
+
+convertTimeTicksToDate = function(timeTicks) {
+ // Note that the subtraction by 0 is to cast to a number (probably a float
+ // since the numbers are big).
+ var timeStampMs = (this.timeTickOffset_ - 0) + (timeTicks - 0);
+ var d = new Date();
+ d.setTime(timeStampMs);
+ return d;
+};
Property changes on: chrome\browser\resources\gpu\main.js
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698