1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/logging.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/extensions/url_actions.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
namespace extensions {
const char* UrlAction::kTableName = "activitylog_urls";
const char* UrlAction::kTableStructure = "("
"extension_id LONGVARCHAR NOT NULL, "
"time INTEGER NOT NULL, "
"url_action_type LONGVARCHAR NOT NULL, "
"url LONGVARCHAR NOT NULL, "
"url_title LONGVARCHAR, "
"tech_message LONGVARCHAR NOT NULL, "
"extra LONGCHAR VAR NOT NULL)";
UrlAction::UrlAction(const std::string& extension_id,
const base::Time& time,
const UrlActionType verb,
const GURL& url,
const string16& url_title,
const std::string& tech_message,
const std::string& extra)
: extension_id_(extension_id),
time_(time),
verb_(verb),
url_(url),
url_title_(url_title),
technical_message_(tech_message),
extra_(extra) { }
UrlAction::~UrlAction() {
}
void UrlAction::Record(sql::Connection* db) {
std::string sql_str = "INSERT INTO " + std::string(kTableName) +
" (extension_id, time, url_action_type, url, url_title, tech_message,"
" extra) VALUES (?,?,?,?,?,?,?)";
sql::Statement statement(db->GetCachedStatement(
sql::StatementID(SQL_FROM_HERE), sql_str.c_str()));
statement.BindString(0, extension_id_);
statement.BindInt64(1, time_.ToInternalValue());
statement.BindString(2, VerbAsString());
statement.BindString(3, history::URLDatabase::GURLToDatabaseURL(url_));
statement.BindString16(4, url_title_);
statement.BindString(5, technical_message_);
statement.BindString(6, extra_);
if (!statement.Run())
LOG(ERROR) << "Activity log database I/O failed: " << sql_str;
}
std::string UrlAction::PrettyPrintFori18n() {
// TODO(felt): implement this for real when the UI is redesigned.
return PrettyPrintForDebug();
}
std::string UrlAction::PrettyPrintForDebug() {
// TODO(felt): implement this for real when the UI is redesigned.
return "Injected scripts (" + technical_message_ + ") onto "
+ std::string(url_.spec());
}
std::string UrlAction::VerbAsString() const {
switch (verb_) {
case MODIFIED:
return "MODIFIED";
case READ:
return "READ";
case INSERTED:
return "INSERTED";
case XHR:
return "XHR";
default:
NOTREACHED();
return NULL;
}
}
UrlAction::UrlActionType UrlAction::StringAsUrlActionType(
const std::string& str) {
if (str == "MODIFIED") {
return MODIFIED;
} else if (str == "READ") {
return READ;
} else if (str == "INSERTED") {
return INSERTED;
} else if (str == "XHR") {
return XHR;
} else {
NOTREACHED();
return MODIFIED; // this should never happen!
}
}
} // namespace extensions
|