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 @@
#include <map>
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/metrics/statistics_recorder.h"
#include "chrome/browser/extensions/extension_apitest.h"
......@@ -126,6 +127,8 @@ void ValidateHistograms(const RecordedHistogram* recorded,
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Metrics) {
UserActionObserver observer;
base::FieldTrialList::CreateTrialsFromString("apitestfieldtrial2/group1/");
ASSERT_TRUE(RunComponentExtensionTest("metrics")) << message_;
observer.ValidateUserActions(g_user_actions, arraysize(g_user_actions));
......
......@@ -6,6 +6,7 @@
#include <algorithm>
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/browser_process.h"
......@@ -22,6 +23,7 @@ namespace extensions {
namespace GetIsCrashReportingEnabled =
api::metrics_private::GetIsCrashReportingEnabled;
namespace GetFieldTrial = api::metrics_private::GetFieldTrial;
namespace RecordUserAction = api::metrics_private::RecordUserAction;
namespace RecordValue = api::metrics_private::RecordValue;
namespace RecordPercentage = api::metrics_private::RecordPercentage;
......@@ -66,6 +68,14 @@ bool MetricsPrivateGetIsCrashReportingEnabledFunction::RunImpl() {
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() {
scoped_ptr<RecordUserAction::Params> params(
RecordUserAction::Params::Create(*args_));
......
......@@ -25,6 +25,18 @@ class MetricsPrivateGetIsCrashReportingEnabledFunction
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 {
public:
DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordUserAction",
......
......@@ -554,6 +554,7 @@ enum HistogramValue {
FEEDBACKPRIVATE_SENDFEEDBACK,
EXPERIMENTAL_INPUT_VIRTUALKEYBOARD_INSERTTEXT,
DIAGNOSTICS_SENDPACKET,
METRICSPRIVATE_GETFIELDTRIAL,
ENUM_BOUNDARY // Last entry: Add new entries above.
};
......
......@@ -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",
"type": "function",
......
......@@ -57,6 +57,20 @@ chrome.test.runTests([
chrome.metricsPrivate.recordSmallCount('test.small.count', 42);
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