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

Unified Diff: chrome/browser/drive/drive_api_util.cc

Issue 1190203002: Move (most of) chrome/browser/drive into components/drive/service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing... Created 5 years, 5 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
« no previous file with comments | « chrome/browser/drive/drive_api_util.h ('k') | chrome/browser/drive/drive_api_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/drive/drive_api_util.cc
diff --git a/chrome/browser/drive/drive_api_util.cc b/chrome/browser/drive/drive_api_util.cc
deleted file mode 100644
index bd9ba99358fbfae6cb9ce13c8062b4fcb0e042c3..0000000000000000000000000000000000000000
--- a/chrome/browser/drive/drive_api_util.cc
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright (c) 2012 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 "chrome/browser/drive/drive_api_util.h"
-
-#include <string>
-
-#include "base/files/file.h"
-#include "base/logging.h"
-#include "base/md5.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/synchronization/cancellation_flag.h"
-#include "base/values.h"
-#include "google_apis/drive/drive_api_parser.h"
-#include "net/base/escape.h"
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-#include "storage/browser/fileapi/file_stream_reader.h"
-#include "third_party/re2/re2/re2.h"
-#include "url/gurl.h"
-
-namespace drive {
-namespace util {
-namespace {
-
-struct HostedDocumentKind {
- const char* mime_type;
- const char* extension;
-};
-
-const HostedDocumentKind kHostedDocumentKinds[] = {
- {kGoogleDocumentMimeType, ".gdoc"},
- {kGoogleSpreadsheetMimeType, ".gsheet"},
- {kGooglePresentationMimeType, ".gslides"},
- {kGoogleDrawingMimeType, ".gdraw"},
- {kGoogleTableMimeType, ".gtable"},
- {kGoogleFormMimeType, ".gform"},
- {kGoogleMapMimeType, ".gmaps"},
-};
-
-const char kUnknownHostedDocumentExtension[] = ".glink";
-
-const int kMd5DigestBufferSize = 512 * 1024; // 512 kB.
-
-} // namespace
-
-std::string EscapeQueryStringValue(const std::string& str) {
- std::string result;
- result.reserve(str.size());
- for (size_t i = 0; i < str.size(); ++i) {
- if (str[i] == '\\' || str[i] == '\'') {
- result.push_back('\\');
- }
- result.push_back(str[i]);
- }
- return result;
-}
-
-std::string TranslateQuery(const std::string& original_query) {
- // In order to handle non-ascii white spaces correctly, convert to UTF16.
- base::string16 query = base::UTF8ToUTF16(original_query);
- const base::string16 kDelimiter(
- base::kWhitespaceUTF16 + base::ASCIIToUTF16("\""));
-
- std::string result;
- for (size_t index = query.find_first_not_of(base::kWhitespaceUTF16);
- index != base::string16::npos;
- index = query.find_first_not_of(base::kWhitespaceUTF16, index)) {
- bool is_exclusion = (query[index] == '-');
- if (is_exclusion)
- ++index;
- if (index == query.length()) {
- // Here, the token is '-' and it should be ignored.
- continue;
- }
-
- size_t begin_token = index;
- base::string16 token;
- if (query[begin_token] == '"') {
- // Quoted query.
- ++begin_token;
- size_t end_token = query.find('"', begin_token);
- if (end_token == base::string16::npos) {
- // This is kind of syntax error, since quoted string isn't finished.
- // However, the query is built by user manually, so here we treat
- // whole remaining string as a token as a fallback, by appending
- // a missing double-quote character.
- end_token = query.length();
- query.push_back('"');
- }
-
- token = query.substr(begin_token, end_token - begin_token);
- index = end_token + 1; // Consume last '"', too.
- } else {
- size_t end_token = query.find_first_of(kDelimiter, begin_token);
- if (end_token == base::string16::npos) {
- end_token = query.length();
- }
-
- token = query.substr(begin_token, end_token - begin_token);
- index = end_token;
- }
-
- if (token.empty()) {
- // Just ignore an empty token.
- continue;
- }
-
- if (!result.empty()) {
- // If there are two or more tokens, need to connect with "and".
- result.append(" and ");
- }
-
- // The meaning of "fullText" should include title, description and content.
- base::StringAppendF(
- &result,
- "%sfullText contains \'%s\'",
- is_exclusion ? "not " : "",
- EscapeQueryStringValue(base::UTF16ToUTF8(token)).c_str());
- }
-
- return result;
-}
-
-std::string CanonicalizeResourceId(const std::string& resource_id) {
- // If resource ID is in the old WAPI format starting with a prefix like
- // "document:", strip it and return the remaining part.
- std::string stripped_resource_id;
- if (RE2::FullMatch(resource_id, "^[a-z-]+(?::|%3A)([\\w-]+)$",
- &stripped_resource_id))
- return stripped_resource_id;
- return resource_id;
-}
-
-std::string GetMd5Digest(const base::FilePath& file_path,
- const base::CancellationFlag* cancellation_flag) {
- base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
- if (!file.IsValid())
- return std::string();
-
- base::MD5Context context;
- base::MD5Init(&context);
-
- int64 offset = 0;
- scoped_ptr<char[]> buffer(new char[kMd5DigestBufferSize]);
- while (true) {
- if (cancellation_flag && cancellation_flag->IsSet()) { // Cancelled.
- return std::string();
- }
- int result = file.Read(offset, buffer.get(), kMd5DigestBufferSize);
- if (result < 0) {
- // Found an error.
- return std::string();
- }
-
- if (result == 0) {
- // End of file.
- break;
- }
-
- offset += result;
- base::MD5Update(&context, base::StringPiece(buffer.get(), result));
- }
-
- base::MD5Digest digest;
- base::MD5Final(&digest, &context);
- return base::MD5DigestToBase16(digest);
-}
-
-FileStreamMd5Digester::FileStreamMd5Digester()
- : buffer_(new net::IOBuffer(kMd5DigestBufferSize)) {
-}
-
-FileStreamMd5Digester::~FileStreamMd5Digester() {
-}
-
-void FileStreamMd5Digester::GetMd5Digest(
- scoped_ptr<storage::FileStreamReader> stream_reader,
- const ResultCallback& callback) {
- reader_ = stream_reader.Pass();
- base::MD5Init(&md5_context_);
-
- // Start the read/hash.
- ReadNextChunk(callback);
-}
-
-void FileStreamMd5Digester::ReadNextChunk(const ResultCallback& callback) {
- const int result =
- reader_->Read(buffer_.get(), kMd5DigestBufferSize,
- base::Bind(&FileStreamMd5Digester::OnChunkRead,
- base::Unretained(this), callback));
- if (result != net::ERR_IO_PENDING)
- OnChunkRead(callback, result);
-}
-
-void FileStreamMd5Digester::OnChunkRead(const ResultCallback& callback,
- int bytes_read) {
- if (bytes_read < 0) {
- // Error - just return empty string.
- callback.Run("");
- return;
- } else if (bytes_read == 0) {
- // EOF.
- base::MD5Digest digest;
- base::MD5Final(&digest, &md5_context_);
- std::string result = base::MD5DigestToBase16(digest);
- callback.Run(result);
- return;
- }
-
- // Read data and digest it.
- base::MD5Update(&md5_context_,
- base::StringPiece(buffer_->data(), bytes_read));
-
- // Kick off the next read.
- ReadNextChunk(callback);
-}
-
-std::string GetHostedDocumentExtension(const std::string& mime_type) {
- for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
- if (mime_type == kHostedDocumentKinds[i].mime_type)
- return kHostedDocumentKinds[i].extension;
- }
- return kUnknownHostedDocumentExtension;
-}
-
-bool IsKnownHostedDocumentMimeType(const std::string& mime_type) {
- for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
- if (mime_type == kHostedDocumentKinds[i].mime_type)
- return true;
- }
- return false;
-}
-
-bool HasHostedDocumentExtension(const base::FilePath& path) {
- const std::string extension = base::FilePath(path.Extension()).AsUTF8Unsafe();
- for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) {
- if (extension == kHostedDocumentKinds[i].extension)
- return true;
- }
- return extension == kUnknownHostedDocumentExtension;
-}
-
-} // namespace util
-} // namespace drive
« no previous file with comments | « chrome/browser/drive/drive_api_util.h ('k') | chrome/browser/drive/drive_api_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698