Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Unified Diff: chrome/browser/extensions/api/downloads/downloads_api.cc

Issue 9617010: Move chrome.downloads out of experimental to dev (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/downloads/downloads_api.cc
diff --git a/chrome/browser/download/download_extension_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
similarity index 95%
rename from chrome/browser/download/download_extension_api.cc
rename to chrome/browser/extensions/api/downloads/downloads_api.cc
index b19c22c19b7bcf3c66c1b091a9f7e1de9c81d6bc..e114121cccfb0f5166994fa4bb5c173f4e8f92af 100644
--- a/chrome/browser/download/download_extension_api.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/download/download_extension_api.h"
+#include "chrome/browser/extensions/api/downloads/downloads_api.h"
#include <algorithm>
#include <cctype>
@@ -35,7 +35,7 @@
#include "chrome/browser/icon_loader.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/browser/renderer_host/chrome_render_message_filter.h"
-#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/webui/web_ui_util.h"
#include "content/public/browser/download_interrupt_reasons.h"
#include "content/public/browser/download_item.h"
@@ -91,7 +91,6 @@ const char kFilenameKey[] = "filename";
const char kFilenameRegexKey[] = "filenameRegex";
const char kHeaderNameKey[] = "name";
const char kHeaderValueKey[] = "value";
-const char kHeaderBinaryValueKey[] = "binaryValue";
const char kHeadersKey[] = "headers";
const char kIdKey[] = "id";
const char kIncognito[] = "incognito";
@@ -117,7 +116,7 @@ const char kUrlKey[] = "url";
const char kUrlRegexKey[] = "urlRegex";
// Note: Any change to the danger type strings, should be accompanied by a
-// corresponding change to {experimental.}downloads.json.
+// corresponding change to downloads.json.
const char* kDangerStrings[] = {
kDangerSafe,
kDangerFile,
@@ -130,7 +129,7 @@ COMPILE_ASSERT(arraysize(kDangerStrings) == content::DOWNLOAD_DANGER_TYPE_MAX,
download_danger_type_enum_changed);
// Note: Any change to the state strings, should be accompanied by a
-// corresponding change to {experimental.}downloads.json.
+// corresponding change to downloads.json.
const char* kStateStrings[] = {
kStateInProgress,
kStateComplete,
@@ -463,20 +462,6 @@ bool DownloadsDownloadFunction::ParseArgs() {
index, &header));
EXTENSION_FUNCTION_VALIDATE(header->GetString(
kHeaderNameKey, &name));
- if (header->HasKey(kHeaderBinaryValueKey)) {
- base::ListValue* binary_value = NULL;
- EXTENSION_FUNCTION_VALIDATE(header->GetList(
- kHeaderBinaryValueKey, &binary_value));
- for (size_t char_i = 0; char_i < binary_value->GetSize(); ++char_i) {
- int char_value = 0;
- EXTENSION_FUNCTION_VALIDATE(binary_value->GetInteger(
- char_i, &char_value));
- }
- } else if (header->HasKey(kHeaderValueKey)) {
- std::string value;
- EXTENSION_FUNCTION_VALIDATE(header->GetString(
- kHeaderValueKey, &value));
- }
if (!net::HttpUtil::IsSafeHeader(name)) {
error_ = download_extension_errors::kGenericError;
return false;
@@ -517,20 +502,7 @@ void DownloadsDownloadFunction::BeginDownloadOnIOThread() {
std::string name, value;
CHECK(iodata_->extra_headers->GetDictionary(index, &header));
CHECK(header->GetString(kHeaderNameKey, &name));
- if (header->HasKey(kHeaderBinaryValueKey)) {
- base::ListValue* binary_value = NULL;
- CHECK(header->GetList(kHeaderBinaryValueKey, &binary_value));
- for (size_t char_i = 0; char_i < binary_value->GetSize(); ++char_i) {
- int char_value = 0;
- CHECK(binary_value->GetInteger(char_i, &char_value));
- if ((0 <= char_value) &&
- (char_value <= 0xff)) {
- value.push_back(char_value);
- }
- }
- } else if (header->HasKey(kHeaderValueKey)) {
- CHECK(header->GetString(kHeaderValueKey, &value));
- }
+ CHECK(header->GetString(kHeaderValueKey, &value));
request->SetExtraRequestHeaderByName(name, value, false/*overwrite*/);
}
}
@@ -894,7 +866,7 @@ bool DownloadsGetFileIconFunction::ParseArgs() {
if (options->HasKey(kSizeKey)) {
EXTENSION_FUNCTION_VALIDATE(options->GetInteger(kSizeKey, &icon_size_));
// We only support 16px and 32px icons. This is enforced in
- // experimental.downloads.json.
+ // downloads.json.
DCHECK(icon_size_ == 16 || icon_size_ == 32);
}
@@ -939,9 +911,7 @@ void DownloadsGetFileIconFunction::OnIconURLExtracted(const std::string& url) {
ExtensionDownloadsEventRouter::ExtensionDownloadsEventRouter(Profile* profile)
: profile_(profile),
- manager_(NULL),
- delete_item_jsons_(&item_jsons_),
- delete_on_changed_stats_(&on_changed_stats_) {
+ manager_(NULL) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(profile_);
// Register a callback with the DownloadService for this profile to be called
@@ -969,6 +939,8 @@ ExtensionDownloadsEventRouter::~ExtensionDownloadsEventRouter() {
if (iter->second != NULL)
iter->second->RemoveObserver(this);
}
+ STLDeleteValues(&item_jsons_);
+ STLDeleteValues(&on_changed_stats_);
}
ExtensionDownloadsEventRouter::OnChangedStat::OnChangedStat()
@@ -982,6 +954,8 @@ ExtensionDownloadsEventRouter::OnChangedStat::~OnChangedStat() {
}
void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
+ if (!profile_)
+ return;
int download_id = item->GetId();
if (item->GetState() == DownloadItem::REMOVING) {
// The REMOVING state indicates that this item is being erased.
@@ -1018,9 +992,9 @@ void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
if (!old_json->HasKey(iter.key()) ||
(old_json->Get(iter.key(), &old_value) &&
!iter.value().Equals(old_value))) {
- delta->Set(iter.key() + ".new", iter.value().DeepCopy());
+ delta->Set(iter.key() + ".current", iter.value().DeepCopy());
if (old_value)
- delta->Set(iter.key() + ".old", old_value->DeepCopy());
+ delta->Set(iter.key() + ".previous", old_value->DeepCopy());
changed = true;
}
}
@@ -1031,7 +1005,7 @@ void ExtensionDownloadsEventRouter::OnDownloadUpdated(DownloadItem* item) {
for (base::DictionaryValue::Iterator iter(*old_json);
iter.HasNext(); iter.Advance()) {
if (new_fields.find(iter.key()) == new_fields.end()) {
- delta->Set(iter.key() + ".old", iter.value().DeepCopy());
+ delta->Set(iter.key() + ".previous", iter.value().DeepCopy());
changed = true;
}
}
@@ -1050,6 +1024,8 @@ void ExtensionDownloadsEventRouter::OnDownloadOpened(DownloadItem* item) {
}
void ExtensionDownloadsEventRouter::ModelChanged(DownloadManager* manager) {
+ if (!profile_)
+ return;
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(manager_ == manager);
typedef std::set<int> DownloadIdSet;
@@ -1106,11 +1082,14 @@ void ExtensionDownloadsEventRouter::ManagerGoingDown(
DownloadManager* manager) {
manager_->RemoveObserver(this);
manager_ = NULL;
+ profile_ = NULL;
}
void ExtensionDownloadsEventRouter::DispatchEvent(
const char* event_name, base::Value* arg) {
- ListValue args;
+ if (!profile_ || !profile_->GetExtensionEventRouter())
+ return;
+ base::ListValue args;
args.Append(arg);
std::string json_args;
base::JSONWriter::Write(&args, &json_args);

Powered by Google App Engine
This is Rietveld 408576698