| Index: chrome/browser/extensions/activity_log/activity_actions.cc | 
| diff --git a/chrome/browser/extensions/activity_log/activity_actions.cc b/chrome/browser/extensions/activity_log/activity_actions.cc | 
| index 1d792255900452d326b57088ac45880b9416e6d4..4baca4c9eadbc0fb9dfe949167784c56f0582209 100644 | 
| --- a/chrome/browser/extensions/activity_log/activity_actions.cc | 
| +++ b/chrome/browser/extensions/activity_log/activity_actions.cc | 
| @@ -11,9 +11,9 @@ | 
| #include "base/logging.h" | 
| #include "base/memory/singleton.h" | 
| #include "base/strings/string_number_conversions.h" | 
| +#include "base/strings/string_util.h" | 
| #include "base/strings/stringprintf.h" | 
| #include "chrome/browser/extensions/activity_log/activity_action_constants.h" | 
| -#include "chrome/browser/extensions/activity_log/api_name_constants.h" | 
| #include "chrome/browser/extensions/activity_log/fullstream_ui_policy.h" | 
| #include "chrome/browser/ui/browser.h" | 
| #include "chrome/common/chrome_switches.h" | 
| @@ -36,63 +36,6 @@ std::string Serialize(const base::Value* value) { | 
| return value_as_text; | 
| } | 
|  | 
| -// Sets up the hashmap for mapping extension strings to "ints". The hashmap is | 
| -// only set up once because it's quite long; the value is then cached. | 
| -class APINameMap { | 
| - public: | 
| -  APINameMap() { | 
| -    SetupMap(); | 
| -  } | 
| - | 
| -  // activity_log_api_name_constants.h lists all known API calls as of 5/17. | 
| -  // This code maps each of those API calls (and events) to short strings | 
| -  // (integers converted to strings). They're all strings because (1) sqlite | 
| -  // databases are all strings underneath anyway and (2) the Lookup function | 
| -  // will simply return the original api_call string if we don't have it in our | 
| -  // lookup table. | 
| -  void SetupMap() { | 
| -    for (size_t i = 0; | 
| -         i < arraysize(activity_log_api_name_constants::kNames); | 
| -         ++i) { | 
| -      std::string name = | 
| -          std::string(activity_log_api_name_constants::kNames[i]); | 
| -      std::string num = base::IntToString(i); | 
| -      names_to_nums_[name] = num; | 
| -      nums_to_names_[num] = name; | 
| -    } | 
| -  } | 
| - | 
| -  static APINameMap* GetInstance() { | 
| -    return Singleton<APINameMap>::get(); | 
| -  } | 
| - | 
| -  // This matches an api call to a number, if it's in the lookup table. If not, | 
| -  // it returns the original api call. | 
| -  const std::string& ApiToShortname(const std::string& api_call) { | 
| -    std::map<std::string, std::string>::iterator it = | 
| -        names_to_nums_.find(api_call); | 
| -    if (it == names_to_nums_.end()) | 
| -      return api_call; | 
| -    else | 
| -      return it->second; | 
| -  } | 
| - | 
| -  // This matches a number to an API call -- it's the opposite of | 
| -  // ApiToShortname. | 
| -  const std::string& ShortnameToApi(const std::string& shortname) { | 
| -    std::map<std::string, std::string>::iterator it = | 
| -        nums_to_names_.find(shortname); | 
| -    if (it == nums_to_names_.end()) | 
| -      return shortname; | 
| -    else | 
| -      return it->second; | 
| -  } | 
| - | 
| - private: | 
| -  std::map<std::string, std::string> names_to_nums_;  // <name, number label> | 
| -  std::map<std::string, std::string> nums_to_names_;  // <number label, name> | 
| -}; | 
| - | 
| }  // namespace | 
|  | 
| namespace extensions { | 
| @@ -163,6 +106,30 @@ DictionaryValue* Action::mutable_other() { | 
| return other_.get(); | 
| } | 
|  | 
| +std::string Action::SerializePageUrl() const { | 
| +  return (page_incognito() ? constants::kIncognitoUrl : "") + page_url().spec(); | 
| +} | 
| + | 
| +void Action::ParsePageUrl(const std::string& url) { | 
| +  set_page_incognito(StartsWithASCII(url, constants::kIncognitoUrl, true)); | 
| +  if (page_incognito()) | 
| +    set_page_url(GURL(url.substr(strlen(constants::kIncognitoUrl)))); | 
| +  else | 
| +    set_page_url(GURL(url)); | 
| +} | 
| + | 
| +std::string Action::SerializeArgUrl() const { | 
| +  return (arg_incognito() ? constants::kIncognitoUrl : "") + arg_url().spec(); | 
| +} | 
| + | 
| +void Action::ParseArgUrl(const std::string& url) { | 
| +  set_arg_incognito(StartsWithASCII(url, constants::kIncognitoUrl, true)); | 
| +  if (arg_incognito()) | 
| +    set_arg_url(GURL(url.substr(strlen(constants::kIncognitoUrl)))); | 
| +  else | 
| +    set_arg_url(GURL(url)); | 
| +} | 
| + | 
| scoped_ptr<ExtensionActivity> Action::ConvertToExtensionActivity() { | 
| scoped_ptr<ExtensionActivity> result(new ExtensionActivity); | 
|  | 
| @@ -246,7 +213,7 @@ scoped_ptr<ExtensionActivity> Action::ConvertToExtensionActivity() { | 
| return result.Pass(); | 
| } | 
|  | 
| -std::string Action::PrintForDebug() { | 
| +std::string Action::PrintForDebug() const { | 
| std::string result = "ID=" + extension_id() + " CATEGORY="; | 
| switch (action_type_) { | 
| case ACTION_API_CALL: | 
|  |