Commit e027de86 authored by oleg@chromium.org's avatar oleg@chromium.org

Add a private API method metricsPrivate.getFieldTrial(), which returns

the group for field trial experiment. Equivalent to
FieldTrialList::FindFullName().

Review URL: https://chromiumcodereview.appspot.com/17496005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208101 0039d316-1c4b-4281-b951-d872f2087c98
parent 79d8a756
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <map> #include <map>
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h" #include "base/metrics/histogram.h"
#include "base/metrics/statistics_recorder.h" #include "base/metrics/statistics_recorder.h"
#include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_apitest.h"
...@@ -126,6 +127,8 @@ void ValidateHistograms(const RecordedHistogram* recorded, ...@@ -126,6 +127,8 @@ void ValidateHistograms(const RecordedHistogram* recorded,
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Metrics) { IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Metrics) {
UserActionObserver observer; UserActionObserver observer;
base::FieldTrialList::CreateTrialsFromString("apitestfieldtrial2/group1/");
ASSERT_TRUE(RunComponentExtensionTest("metrics")) << message_; ASSERT_TRUE(RunComponentExtensionTest("metrics")) << message_;
observer.ValidateUserActions(g_user_actions, arraysize(g_user_actions)); observer.ValidateUserActions(g_user_actions, arraysize(g_user_actions));
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <algorithm> #include <algorithm>
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h" #include "base/metrics/histogram.h"
#include "base/prefs/pref_service.h" #include "base/prefs/pref_service.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
...@@ -22,6 +23,7 @@ namespace extensions { ...@@ -22,6 +23,7 @@ namespace extensions {
namespace GetIsCrashReportingEnabled = namespace GetIsCrashReportingEnabled =
api::metrics_private::GetIsCrashReportingEnabled; api::metrics_private::GetIsCrashReportingEnabled;
namespace GetFieldTrial = api::metrics_private::GetFieldTrial;
namespace RecordUserAction = api::metrics_private::RecordUserAction; namespace RecordUserAction = api::metrics_private::RecordUserAction;
namespace RecordValue = api::metrics_private::RecordValue; namespace RecordValue = api::metrics_private::RecordValue;
namespace RecordPercentage = api::metrics_private::RecordPercentage; namespace RecordPercentage = api::metrics_private::RecordPercentage;
...@@ -66,6 +68,14 @@ bool MetricsPrivateGetIsCrashReportingEnabledFunction::RunImpl() { ...@@ -66,6 +68,14 @@ bool MetricsPrivateGetIsCrashReportingEnabledFunction::RunImpl() {
return true; return true;
} }
bool MetricsPrivateGetFieldTrialFunction::RunImpl() {
std::string name;
EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &name));
SetResult(new base::StringValue(base::FieldTrialList::FindFullName(name)));
return true;
}
bool MetricsPrivateRecordUserActionFunction::RunImpl() { bool MetricsPrivateRecordUserActionFunction::RunImpl() {
scoped_ptr<RecordUserAction::Params> params( scoped_ptr<RecordUserAction::Params> params(
RecordUserAction::Params::Create(*args_)); RecordUserAction::Params::Create(*args_));
......
...@@ -25,6 +25,18 @@ class MetricsPrivateGetIsCrashReportingEnabledFunction ...@@ -25,6 +25,18 @@ class MetricsPrivateGetIsCrashReportingEnabledFunction
virtual bool RunImpl() OVERRIDE; virtual bool RunImpl() OVERRIDE;
}; };
class MetricsPrivateGetFieldTrialFunction : public SyncExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("metricsPrivate.getFieldTrial",
METRICSPRIVATE_GETFIELDTRIAL)
protected:
virtual ~MetricsPrivateGetFieldTrialFunction() {}
// ExtensionFunction:
virtual bool RunImpl() OVERRIDE;
};
class MetricsPrivateRecordUserActionFunction : public SyncExtensionFunction { class MetricsPrivateRecordUserActionFunction : public SyncExtensionFunction {
public: public:
DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordUserAction", DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordUserAction",
......
...@@ -554,6 +554,7 @@ enum HistogramValue { ...@@ -554,6 +554,7 @@ enum HistogramValue {
FEEDBACKPRIVATE_SENDFEEDBACK, FEEDBACKPRIVATE_SENDFEEDBACK,
EXPERIMENTAL_INPUT_VIRTUALKEYBOARD_INSERTTEXT, EXPERIMENTAL_INPUT_VIRTUALKEYBOARD_INSERTTEXT,
DIAGNOSTICS_SENDPACKET, DIAGNOSTICS_SENDPACKET,
METRICSPRIVATE_GETFIELDTRIAL,
ENUM_BOUNDARY // Last entry: Add new entries above. ENUM_BOUNDARY // Last entry: Add new entries above.
}; };
......
...@@ -40,6 +40,22 @@ ...@@ -40,6 +40,22 @@
} }
] ]
}, },
{
"name": "getFieldTrial",
"description": "Returns the group name chosen for the named trial, or the empty string if the trial does not exist or is not enabled.",
"type": "function",
"parameters": [
{"name": "name", "type": "string"},
{
"name": "callback",
"type": "function",
"optional": "false",
"parameters": [
{ "name": "group", "type": "string" }
]
}
]
},
{ {
"name": "recordUserAction", "name": "recordUserAction",
"type": "function", "type": "function",
......
...@@ -57,6 +57,20 @@ chrome.test.runTests([ ...@@ -57,6 +57,20 @@ chrome.test.runTests([
chrome.metricsPrivate.recordSmallCount('test.small.count', 42); chrome.metricsPrivate.recordSmallCount('test.small.count', 42);
chrome.test.succeed(); chrome.test.succeed();
},
function getFieldTrial() {
var test1Callback = function(group) {
chrome.test.assertEq('', group);
chrome.metricsPrivate.getFieldTrial('apitestfieldtrial2', test2Callback);
};
var test2Callback = function(group) {
chrome.test.assertEq('group1', group);
chrome.test.succeed();
};
chrome.metricsPrivate.getFieldTrial('apitestfieldtrial1', test1Callback);
} }
]); ]);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment