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 <string>
6
7#include "base/memory/scoped_ptr.h"
8#include "base/strings/utf_string_conversions.h"
9#include "chrome/browser/extensions/activity_log/activity_action_constants.h"
10#include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace {
14
15const char kExtensionId[] = "extensionid";
16const char kApiCall[] = "api.call";
17const char kArgs[] = "[\"hello\",\"world\"]";
18
19}  // extensions
20
21namespace extensions {
22
23using api::activity_log_private::ExtensionActivity;
24
25typedef testing::Test ActivityLogApiUnitTest;
26
27TEST_F(ActivityLogApiUnitTest, ConvertChromeApiAction) {
28  scoped_ptr<base::ListValue> args(new base::ListValue());
29  args->Set(0, new base::StringValue("hello"));
30  args->Set(1, new base::StringValue("world"));
31  scoped_refptr<Action> action(new Action(kExtensionId,
32                                          base::Time::Now(),
33                                          Action::ACTION_API_CALL,
34                                          kApiCall));
35  action->set_args(args.Pass());
36  scoped_ptr<ExtensionActivity> result = action->ConvertToExtensionActivity();
37  ASSERT_EQ(ExtensionActivity::ACTIVITY_TYPE_API_CALL, result->activity_type);
38  ASSERT_EQ(kExtensionId, *(result->extension_id.get()));
39  ASSERT_EQ(kApiCall, *(result->api_call.get()));
40  ASSERT_EQ(kArgs, *(result->args.get()));
41  ASSERT_EQ(NULL, result->activity_id.get());
42}
43
44TEST_F(ActivityLogApiUnitTest, ConvertDomAction) {
45  scoped_ptr<base::ListValue> args(new base::ListValue());
46  args->Set(0, new base::StringValue("hello"));
47  args->Set(1, new base::StringValue("world"));
48  scoped_refptr<Action> action(new Action(kExtensionId,
49                               base::Time::Now(),
50                               Action::ACTION_DOM_ACCESS,
51                               kApiCall,
52                               12345));
53  action->set_args(args.Pass());
54  action->set_page_url(GURL("http://www.google.com"));
55  action->set_page_title("Title");
56  action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb,
57                                      DomActionType::INSERTED);
58  action->mutable_other()->SetBoolean(activity_log_constants::kActionPrerender,
59                                      false);
60  scoped_ptr<ExtensionActivity> result = action->ConvertToExtensionActivity();
61  ASSERT_EQ(kExtensionId, *(result->extension_id.get()));
62  ASSERT_EQ("http://www.google.com/", *(result->page_url.get()));
63  ASSERT_EQ("Title", *(result->page_title.get()));
64  ASSERT_EQ(kApiCall, *(result->api_call.get()));
65  ASSERT_EQ(kArgs, *(result->args.get()));
66  scoped_ptr<ExtensionActivity::Other> other(result->other.Pass());
67  ASSERT_EQ(ExtensionActivity::Other::DOM_VERB_INSERTED, other->dom_verb);
68  ASSERT_TRUE(other->prerender.get());
69  ASSERT_EQ("12345", *(result->activity_id.get()));
70}
71
72}  // namespace extensions
73