1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/installer/util/uninstall_metrics.h" 6 7 #include <string> 8 9 #include "base/json/json_string_value_serializer.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "base/strings/string16.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 14 namespace installer { 15 16 TEST(UninstallMetricsTest, TestExtractUninstallMetrics) { 17 // A make-believe JSON preferences file. 18 std::string pref_string( 19 "{ \n" 20 " \"foo\": \"bar\",\n" 21 " \"uninstall_metrics\": { \n" 22 " \"last_launch_time_sec\": \"1235341118\"," 23 " \"last_observed_running_time_sec\": \"1235341183\"," 24 " \"launch_count\": \"11\"," 25 " \"page_load_count\": \"68\"," 26 " \"uptime_sec\": \"809\"," 27 " \"installation_date2\": \"1235341141\"\n" 28 " },\n" 29 " \"blah\": {\n" 30 " \"this_sentence_is_true\": false\n" 31 " },\n" 32 " \"user_experience_metrics\": { \n" 33 " \"client_id_timestamp\": \"1234567890\"," 34 " \"reporting_enabled\": true\n" 35 " }\n" 36 "} \n"); 37 38 // The URL string we expect to be generated from said make-believe file. 39 base::string16 expected_url_string( 40 L"&installation_date2=1235341141" 41 L"&last_launch_time_sec=1235341118" 42 L"&last_observed_running_time_sec=1235341183" 43 L"&launch_count=11&page_load_count=68" 44 L"&uptime_sec=809"); 45 46 JSONStringValueSerializer json_deserializer(pref_string); 47 std::string error_message; 48 49 scoped_ptr<base::Value> root( 50 json_deserializer.Deserialize(NULL, &error_message)); 51 ASSERT_TRUE(root.get()); 52 base::string16 uninstall_metrics_string; 53 54 EXPECT_TRUE( 55 ExtractUninstallMetrics(*static_cast<base::DictionaryValue*>(root.get()), 56 &uninstall_metrics_string)); 57 EXPECT_EQ(expected_url_string, uninstall_metrics_string); 58 } 59 60 } // namespace installer 61