Changeset 90830 in webkit


Ignore:
Timestamp:
Jul 12, 2011 11:20:16 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

Web Inspector: introduce UserMetrics for collecting stats in Chromium port.
https://bugs.webkit.org/show_bug.cgi?id=64350

Reviewed by Yury Semikhatsky.

Source/WebCore:

Test: inspector/user-metrics.html

  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::JSInspectorFrontendHost::recordActionTaken):
(WebCore::JSInspectorFrontendHost::recordPanelShown):
(WebCore::JSInspectorFrontendHost::recordSettingChanged):

  • bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:

(WebCore::histogramEnumeration):
(WebCore::V8InspectorFrontendHost::recordActionTakenCallback):
(WebCore::V8InspectorFrontendHost::recordPanelShownCallback):
(WebCore::V8InspectorFrontendHost::recordSettingChangedCallback):

  • inspector/InspectorFrontendHost.idl:
  • inspector/front-end/AuditsPanel.js:

(WebInspector.AuditsPanel.prototype.initiateAudit):

  • inspector/front-end/ConsoleView.js:
  • inspector/front-end/DebuggerModel.js:

(WebInspector.DebuggerModel.prototype.setBreakpoint):
(WebInspector.DebuggerModel.prototype.setBreakpointBySourceId):

  • inspector/front-end/InspectorFrontendHostStub.js:

(.WebInspector.InspectorFrontendHostStub.prototype.loadSessionSetting):
(.WebInspector.InspectorFrontendHostStub.prototype.recordActionTaken):
(.WebInspector.InspectorFrontendHostStub.prototype.recordPanelShown):
(.WebInspector.InspectorFrontendHostStub.prototype.recordSettingChanged):

  • inspector/front-end/ProfilesPanel.js:

(WebInspector.ProfilesPanel.prototype._setRecordingProfile):
(WebInspector.ProfilesPanel.prototype.takeHeapSnapshot):

  • inspector/front-end/TimelinePanel.js:

(WebInspector.TimelinePanel.prototype._toggleTimelineButtonClicked):

  • inspector/front-end/UserMetrics.js: Added.

(WebInspector.UserMetrics.settingChanged):
(WebInspector.UserMetrics):
(WebInspector.UserMetrics.prototype.panelShown):
(WebInspector.UserMetrics._Recorder):
(WebInspector.UserMetrics._Recorder.prototype.record):

  • inspector/front-end/WebKit.qrc:
  • inspector/front-end/inspector.html:
  • inspector/front-end/inspector.js:

(WebInspector._toggleAttach):

LayoutTests:

  • inspector/user-metrics-expected.txt: Added.
  • inspector/user-metrics.html: Added.
Location:
trunk
Files:
3 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r90828 r90830  
     12011-07-12  Pavel Feldman  <pfeldman@google.com>
     2
     3        Web Inspector: introduce UserMetrics for collecting stats in Chromium port.
     4        https://bugs.webkit.org/show_bug.cgi?id=64350
     5
     6        Reviewed by Yury Semikhatsky.
     7
     8        * inspector/user-metrics-expected.txt: Added.
     9        * inspector/user-metrics.html: Added.
     10
    1112011-07-12  Jeff Timanus  <twiz@chromium.org>
    212
  • trunk/Source/WebCore/ChangeLog

    r90825 r90830  
     12011-07-12  Pavel Feldman  <pfeldman@google.com>
     2
     3        Web Inspector: introduce UserMetrics for collecting stats in Chromium port.
     4        https://bugs.webkit.org/show_bug.cgi?id=64350
     5
     6        Reviewed by Yury Semikhatsky.
     7
     8        Test: inspector/user-metrics.html
     9
     10        * WebCore.gypi:
     11        * WebCore.vcproj/WebCore.vcproj:
     12        * bindings/js/JSInspectorFrontendHostCustom.cpp:
     13        (WebCore::JSInspectorFrontendHost::recordActionTaken):
     14        (WebCore::JSInspectorFrontendHost::recordPanelShown):
     15        (WebCore::JSInspectorFrontendHost::recordSettingChanged):
     16        * bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:
     17        (WebCore::histogramEnumeration):
     18        (WebCore::V8InspectorFrontendHost::recordActionTakenCallback):
     19        (WebCore::V8InspectorFrontendHost::recordPanelShownCallback):
     20        (WebCore::V8InspectorFrontendHost::recordSettingChangedCallback):
     21        * inspector/InspectorFrontendHost.idl:
     22        * inspector/front-end/AuditsPanel.js:
     23        (WebInspector.AuditsPanel.prototype.initiateAudit):
     24        * inspector/front-end/ConsoleView.js:
     25        * inspector/front-end/DebuggerModel.js:
     26        (WebInspector.DebuggerModel.prototype.setBreakpoint):
     27        (WebInspector.DebuggerModel.prototype.setBreakpointBySourceId):
     28        * inspector/front-end/InspectorFrontendHostStub.js:
     29        (.WebInspector.InspectorFrontendHostStub.prototype.loadSessionSetting):
     30        (.WebInspector.InspectorFrontendHostStub.prototype.recordActionTaken):
     31        (.WebInspector.InspectorFrontendHostStub.prototype.recordPanelShown):
     32        (.WebInspector.InspectorFrontendHostStub.prototype.recordSettingChanged):
     33        * inspector/front-end/ProfilesPanel.js:
     34        (WebInspector.ProfilesPanel.prototype._setRecordingProfile):
     35        (WebInspector.ProfilesPanel.prototype.takeHeapSnapshot):
     36        * inspector/front-end/TimelinePanel.js:
     37        (WebInspector.TimelinePanel.prototype._toggleTimelineButtonClicked):
     38        * inspector/front-end/UserMetrics.js: Added.
     39        (WebInspector.UserMetrics.settingChanged):
     40        (WebInspector.UserMetrics):
     41        (WebInspector.UserMetrics.prototype.panelShown):
     42        (WebInspector.UserMetrics._Recorder):
     43        (WebInspector.UserMetrics._Recorder.prototype.record):
     44        * inspector/front-end/WebKit.qrc:
     45        * inspector/front-end/inspector.html:
     46        * inspector/front-end/inspector.js:
     47        (WebInspector._toggleAttach):
     48
    1492011-07-12  Pratik Solanki  <psolanki@apple.com>
    250
  • trunk/Source/WebCore/WebCore.gypi

    r90720 r90830  
    63676367            'inspector/front-end/TopDownProfileDataGridTree.js',
    63686368            'inspector/front-end/treeoutline.js',
     6369            'inspector/front-end/UserMetrics.js',
    63696370            'inspector/front-end/utilities.js',
    63706371            'inspector/front-end/View.js',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r90720 r90830  
    6843068430                                </File>
    6843168431                                <File
     68432                                        RelativePath="..\inspector\front-end\UserMetrics.js"
     68433                                        >
     68434                                </File>
     68435                                <File
    6843268436                                        RelativePath="..\inspector\front-end\utilities.js"
    6843368437                                        >
  • trunk/Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp

    r90124 r90830  
    127127}
    128128
     129JSValue JSInspectorFrontendHost::recordActionTaken(ExecState*)
     130{
     131    return jsUndefined();
     132}
     133
     134JSValue JSInspectorFrontendHost::recordPanelShown(ExecState*)
     135{
     136    return jsUndefined();
     137}
     138
     139JSValue JSInspectorFrontendHost::recordSettingChanged(ExecState*)
     140{
     141    return jsUndefined();
     142}
     143
    129144} // namespace WebCore
    130145
  • trunk/Source/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp

    r90188 r90830  
    3636#include "InspectorFrontendClient.h"
    3737#include "InspectorFrontendHost.h"
     38#include "PlatformBridge.h"
    3839#include "PlatformString.h"
    3940
     
    115116}
    116117
     118static v8::Handle<v8::Value> histogramEnumeration(const char* name, const v8::Arguments& args, int boundaryValue)
     119{
     120    if (args.Length() < 1 || !args[0]->IsInt32())
     121        return v8::Undefined();
     122
     123    int sample = args[0]->ToInt32()->Value();
     124    if (sample < boundaryValue)
     125        PlatformBridge::histogramEnumeration(name, sample, boundaryValue);
     126
     127    return v8::Undefined();
     128}
     129
     130v8::Handle<v8::Value> V8InspectorFrontendHost::recordActionTakenCallback(const v8::Arguments& args)
     131{
     132    return histogramEnumeration("DevTools.ActionTaken", args, 100);
     133}
     134
     135v8::Handle<v8::Value> V8InspectorFrontendHost::recordPanelShownCallback(const v8::Arguments& args)
     136{
     137    return histogramEnumeration("DevTools.PanelShown", args, 20);
     138}
     139
     140v8::Handle<v8::Value> V8InspectorFrontendHost::recordSettingChangedCallback(const v8::Arguments& args)
     141{
     142    return histogramEnumeration("DevTools.SettingChanged", args, 100);
     143}
     144
    117145} // namespace WebCore
    118146
  • trunk/Source/WebCore/inspector/InspectorFrontendHost.idl

    r89148 r90830  
    6161        [Custom] void showContextMenu(in MouseEvent event, in DOMObject items);
    6262        void sendMessageToBackend(in DOMString message);
     63
     64        [Custom] void recordActionTaken(in unsigned long actionCode);
     65        [Custom] void recordPanelShown(in unsigned long panelCode);
     66        [Custom] void recordSettingChanged(in unsigned long settingChanged);
    6367    };
    6468}
  • trunk/Source/WebCore/inspector/front-end/AuditsPanel.js

    r90745 r90830  
    191191        else
    192192            this._reloadResources(initiateAuditCallback.bind(this, categories, launcherCallback));
     193
     194        WebInspector.userMetrics.AuditsStarted.record();
    193195    },
    194196
  • trunk/Source/WebCore/inspector/front-end/ConsoleView.js

    r90395 r90830  
    610610        }
    611611        this.evalInInspectedWindow(str, "console", true, printResult);
     612
     613        WebInspector.userMetrics.ConsoleEvaluated.record();
    612614    },
    613615
  • trunk/Source/WebCore/inspector/front-end/DebuggerModel.js

    r89350 r90830  
    9191        }
    9292        DebuggerAgent.setBreakpointByUrl(url, lineNumber, columnNumber, condition, didSetBreakpoint.bind(this));
     93        WebInspector.userMetrics.ScriptsBreakpointSet.record();
    9394    },
    9495
     
    101102        }
    102103        DebuggerAgent.setBreakpoint(location, condition, didSetBreakpoint.bind(this));
     104        WebInspector.userMetrics.ScriptsBreakpointSet.record();
    103105    },
    104106
  • trunk/Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js

    r87744 r90830  
    145145    loadSessionSetting: function(key)
    146146    {
     147    },
     148
     149    recordActionTaken: function(actionCode)
     150    {
     151    },
     152
     153    recordPanelShown: function(panelCode)
     154    {
     155    },
     156
     157    recordSettingChanged: function(settingCode)
     158    {
    147159    }
    148160}
  • trunk/Source/WebCore/inspector/front-end/ProfilesPanel.js

    r90735 r90830  
    659659                };
    660660            }
    661             if (isProfiling)
     661            if (isProfiling) {
    662662                this._addProfileHeader(this._temporaryRecordingProfile);
    663             else
     663                WebInspector.userMetrics.ProfilesCPUProfileTaken.record();
     664            } else
    664665                this._removeProfileHeader(this._temporaryRecordingProfile);
    665666        }
     
    681682        }
    682683        ProfilerAgent.takeHeapSnapshot();
     684        WebInspector.userMetrics.ProfilesHeapProfileTaken.record();
    683685    },
    684686
  • trunk/Source/WebCore/inspector/front-end/TimelinePanel.js

    r89938 r90830  
    279279            this._clearPanel();
    280280            WebInspector.timelineManager.start();
     281            WebInspector.userMetrics.TimelineStarted.record();
    281282        }
    282283        this.toggleTimelineButton.toggled = !this.toggleTimelineButton.toggled;
  • trunk/Source/WebCore/inspector/front-end/WebKit.qrc

    r90720 r90830  
    126126    <file>TopDownProfileDataGridTree.js</file>
    127127    <file>treeoutline.js</file>
     128    <file>UserMetrics.js</file>
    128129    <file>utilities.js</file>
    129130    <file>View.js</file>
  • trunk/Source/WebCore/inspector/front-end/inspector.html

    r90720 r90830  
    168168    <script type="text/javascript" src="SearchController.js"></script>
    169169    <script type="text/javascript" src="WorkerManager.js"></script>
     170    <script type="text/javascript" src="UserMetrics.js"></script>
    170171</head>
    171172<body class="detached">
  • trunk/Source/WebCore/inspector/front-end/inspector.js

    r90745 r90830  
    148148                WebInspector.settings.lastActivePanel.set(panelName);
    149149                this._panelHistory.setPanel(panelName);
     150                WebInspector.userMetrics.panelShown(panelName);
    150151            }
    151152        }
     
    203204    _toggleAttach: function()
    204205    {
    205         if (!this._attached)
     206        if (!this._attached) {
    206207            InspectorFrontendHost.requestAttachWindow();
    207         else
     208            WebInspector.userMetrics.WindowDocked.record();
     209        } else {
    208210            InspectorFrontendHost.requestDetachWindow();
     211            WebInspector.userMetrics.WindowUndocked.record();
     212        }
    209213    },
    210214
     
    484488
    485489    WebInspector.settings = new WebInspector.Settings();
     490    WebInspector.userMetrics = new WebInspector.UserMetrics();
    486491
    487492    this._registerShortcuts();
Note: See TracChangeset for help on using the changeset viewer.