blob: 8a1a45d9cd462b3c128d1da98b0345a37d14b5c2 [file] [log] [blame]
/*
* Copyright 2007 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.user.client;
import com.google.gwt.core.client.Duration;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
/**
* TODO: document me.
*/
public abstract class Profile extends GWTTestCase {
/**
* An enumeration defining the possible report types.
*/
public enum ReportType {
REPORT_TO_BROWSER, REPORT_TO_EXCEL, REPORT_TO_WIKI
}
private static String browser;
private static ReportType reportType = ReportType.REPORT_TO_WIKI;
private static double time;
public static void setReportType(ReportType type) {
reportType = type;
}
private void browserTiming(String s) {
double elapsed = Duration.currentTimeMillis() - time;
RootPanel.get().add(
new Label("|" + browser + "|" + s + "|" + elapsed + " milliseconds|"));
}
protected void resetTimer() {
time = Duration.currentTimeMillis();
if (browser == null) {
browser = getBrowser();
}
}
protected void timing(String s) {
double elapsed = Duration.currentTimeMillis() - time;
switch (reportType) {
case REPORT_TO_BROWSER:
browserTiming(s);
break;
case REPORT_TO_WIKI:
this.addCheckpoint("|" + browser + "|" + s + "|" + elapsed
+ " milliseconds|");
break;
case REPORT_TO_EXCEL:
s = s.replace('|', '\t');
this.addCheckpoint(browser + "\t" + s + "\t" + elapsed);
break;
default:
throw new IllegalStateException("Should not ever get here");
}
}
public native String getBrowser() /*-{
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("opera") != -1) {
return "opera";
}
else if (ua.indexOf("safari") != -1) {
return "safari";
}
else if ((ua.indexOf("msie 6.0") != -1) ||
(ua.indexOf("msie 7.0") != -1)) {
return "ie6";
}
else if (ua.indexOf("gecko") != -1) {
var result = /rv:([0-9]+)\.([0-9]+)/.exec(ua);
if (result && result.length == 3) {
var version = (parseInt(result[1]) * 10) + parseInt(result[2]);
if (version >= 18)
return "gecko1_8";
}
return "gecko";
}
return "unknown";
}-*/;
}