summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk2
-rw-r--r--base/string_split.cc10
-rw-r--r--base/string_util.h4
-rw-r--r--build/build_config.h10
-rw-r--r--chrome/browser/autofill/autofill_download.cc5
-rw-r--r--chrome/browser/net/sqlite_persistent_cookie_store.cc55
-rw-r--r--net/base/dns_util.cc6
-rw-r--r--net/base/escape.h3
-rw-r--r--net/socket/ssl_client_socket_openssl.cc10
-rw-r--r--net/url_request/url_request.cc6
-rw-r--r--ui/base/ui_export.h29
-rw-r--r--ui/gfx/point.cc56
-rw-r--r--ui/gfx/point.h107
13 files changed, 254 insertions, 49 deletions
diff --git a/Android.mk b/Android.mk
index 3238c39..7d1034e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -352,6 +352,8 @@ LOCAL_SRC_FILES += \
sdch/open-vcdiff/src/vcdecoder.cc \
sdch/open-vcdiff/src/vcdiffengine.cc \
sdch/open-vcdiff/src/vcencoder.cc \
+ \
+ ui/gfx/point.cc \
# AutoFill++ source files.
LOCAL_SRC_FILES += \
diff --git a/base/string_split.cc b/base/string_split.cc
index 44b5d06..9af0bbc 100644
--- a/base/string_split.cc
+++ b/base/string_split.cc
@@ -53,7 +53,10 @@ void SplitString(const string16& str,
void SplitString(const std::string& str,
char c,
std::vector<std::string>* r) {
- DCHECK(c >= 0 && c < 0x7F);
+#if CHAR_MIN < 0
+ DCHECK(c >= 0);
+#endif
+ DCHECK(c < 0x7F);
SplitStringT(str, c, true, r);
}
@@ -164,7 +167,10 @@ void SplitStringDontTrim(const std::string& str,
char c,
std::vector<std::string>* r) {
DCHECK(IsStringUTF8(str));
- DCHECK(c >= 0 && c < 0x7F);
+#if CHAR_MIN < 0
+ DCHECK(c >= 0);
+#endif
+ DCHECK(c < 0x7F);
SplitStringT(str, c, false, r);
}
diff --git a/base/string_util.h b/base/string_util.h
index 81d31d3..b6a1c0d 100644
--- a/base/string_util.h
+++ b/base/string_util.h
@@ -172,8 +172,8 @@ BASE_API const std::string& EmptyString();
BASE_API const std::wstring& EmptyWString();
BASE_API const string16& EmptyString16();
-extern const wchar_t kWhitespaceWide[];
-extern const char16 kWhitespaceUTF16[];
+BASE_API extern const wchar_t kWhitespaceWide[];
+BASE_API extern const char16 kWhitespaceUTF16[];
extern const char kWhitespaceASCII[];
extern const char kUtf8ByteOrderMark[];
diff --git a/build/build_config.h b/build/build_config.h
index df16071..cedac01 100644
--- a/build/build_config.h
+++ b/build/build_config.h
@@ -54,6 +54,7 @@
#define USE_OPENSSL 1
#define USE_SYSTEM_ZLIB 1
#define USE_SYSTEM_SQLITE 1
+#define OS_ANDROID 1
#endif
#if !defined(USE_OPENSSL)
@@ -145,4 +146,13 @@
//define CROS_FONTS_USING_BCI
#endif
+#if defined(OS_ANDROID)
+// The compiler thinks std::string::const_iterator and "const char*" are
+// equivalent types.
+#define STD_STRING_ITERATOR_IS_CHAR_POINTER
+// The compiler thinks base::string16::const_iterator and "char16*" are
+// equivalent types.
+#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER
+#endif
+
#endif // BUILD_BUILD_CONFIG_H_
diff --git a/chrome/browser/autofill/autofill_download.cc b/chrome/browser/autofill/autofill_download.cc
index 295aef0..e9f49b3 100644
--- a/chrome/browser/autofill/autofill_download.cc
+++ b/chrome/browser/autofill/autofill_download.cc
@@ -30,6 +30,9 @@
#define AUTO_FILL_UPLOAD_SERVER_REQUEST_URL \
"http://toolbarqueries.clients.google.com:80/tbproxy/af/upload"
#define AUTO_FILL_QUERY_SERVER_NAME_START_IN_HEADER "GFE/"
+#ifdef ANDROID
+#define ANDROID_AUTOFILL_CLIENT_PARAM "?client=AndroidBrowser"
+#endif
namespace {
const size_t kMaxFormCacheSize = 16;
@@ -225,6 +228,8 @@ bool AutofillDownloadManager::StartRequest(
request_url = android::AutofillRequestUrl::GetQueryUrl();
if (request_url.empty())
return false;
+ request_url += ANDROID_AUTOFILL_CLIENT_PARAM;
+
}
#endif
diff --git a/chrome/browser/net/sqlite_persistent_cookie_store.cc b/chrome/browser/net/sqlite_persistent_cookie_store.cc
index 57f646e..525b2ad 100644
--- a/chrome/browser/net/sqlite_persistent_cookie_store.cc
+++ b/chrome/browser/net/sqlite_persistent_cookie_store.cc
@@ -31,33 +31,17 @@
#ifdef ANDROID
namespace {
+class DbThread : public base::Thread {
+ public:
+ DbThread() : base::Thread("android-db") {
+ bool started = Start();
+ CHECK(started);
+ }
+};
+
// This class is used by CookieMonster, which is threadsafe, so this class must
// be threadsafe too.
-base::LazyInstance<base::Lock> db_thread_lock(base::LINKER_INITIALIZED);
-
-base::Thread* getDbThread() {
- base::AutoLock lock(*db_thread_lock.Pointer());
-
- // FIXME: We should probably be using LazyInstance here.
- static base::Thread* db_thread = NULL;
-
- if (db_thread && db_thread->IsRunning())
- return db_thread;
-
- if (!db_thread)
- db_thread = new base::Thread("db");
-
- if (!db_thread)
- return NULL;
-
- base::Thread::Options options;
- options.message_loop_type = MessageLoop::TYPE_DEFAULT;
- if (!db_thread->StartWithOptions(options)) {
- delete db_thread;
- db_thread = NULL;
- }
- return db_thread;
-}
+base::LazyInstance<DbThread> g_db_thread(base::LINKER_INITIALIZED);
} // namespace
#endif
@@ -409,9 +393,7 @@ void SQLitePersistentCookieStore::Backend::BatchOperation(
}
#ifdef ANDROID
- if (!getDbThread())
- return;
- MessageLoop* loop = getDbThread()->message_loop();
+ MessageLoop* loop = g_db_thread.Get().message_loop();
#endif
if (num_pending == 1) {
@@ -552,15 +534,9 @@ void SQLitePersistentCookieStore::Backend::Commit() {
void SQLitePersistentCookieStore::Backend::Flush(Task* completion_task) {
#if defined(ANDROID)
- if (!getDbThread()) {
- if (completion_task)
- MessageLoop::current()->PostTask(FROM_HERE, completion_task);
- return;
- }
-
- MessageLoop* loop = getDbThread()->message_loop();
- loop->PostTask(FROM_HERE, NewRunnableMethod(
- this, &Backend::Commit, completion_task));
+ MessageLoop* loop = g_db_thread.Get().message_loop();
+ loop->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &Backend::Commit, completion_task));
#else
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::DB));
BrowserThread::PostTask(
@@ -583,10 +559,7 @@ void SQLitePersistentCookieStore::Backend::Close() {
#endif
#ifdef ANDROID
- if (!getDbThread())
- return;
-
- MessageLoop* loop = getDbThread()->message_loop();
+ MessageLoop* loop = g_db_thread.Get().message_loop();
loop->PostTask(FROM_HERE,
NewRunnableMethod(this, &Backend::InternalBackgroundClose));
#else
diff --git a/net/base/dns_util.cc b/net/base/dns_util.cc
index d97d3d2..ea58e5d 100644
--- a/net/base/dns_util.cc
+++ b/net/base/dns_util.cc
@@ -60,7 +60,11 @@ std::string DNSDomainToString(const std::string& domain) {
std::string ret;
for (unsigned i = 0; i < domain.size() && domain[i]; i += domain[i] + 1) {
- if (domain[i] < 0 || domain[i] > 63)
+#if CHAR_MIN < 0
+ if (domain[i] < 0)
+ return "";
+#endif
+ if (domain[i] > 63)
return "";
if (i)
diff --git a/net/base/escape.h b/net/base/escape.h
index f4c99a3..24149c3 100644
--- a/net/base/escape.h
+++ b/net/base/escape.h
@@ -11,6 +11,7 @@
#include "base/basictypes.h"
#include "base/string16.h"
+#include "net/base/net_export.h"
// Escaping --------------------------------------------------------------------
@@ -127,7 +128,7 @@ string16 UnescapeForHTML(const string16& text);
// This is basically the same as encodeURIComponent in javascript.
// For the string16 version, we do a conversion to charset before encoding the
// string. If the charset doesn't exist, we return false.
-std::string EscapeQueryParamValue(const std::string& text, bool use_plus);
+NET_EXPORT std::string EscapeQueryParamValue(const std::string& text, bool use_plus);
bool EscapeQueryParamValue(const string16& text, const char* codepage,
bool use_plus, string16* escaped);
diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc
index 588098b..30a5f48 100644
--- a/net/socket/ssl_client_socket_openssl.cc
+++ b/net/socket/ssl_client_socket_openssl.cc
@@ -42,8 +42,10 @@ const size_t kMaxRecvBufferSize = 4096;
const int kSessionCacheTimeoutSeconds = 60 * 60;
const size_t kSessionCacheMaxEntires = 1024;
-// This method doesn't seemed to have made it into the OpenSSL headers.
+#if OPENSSL_VERSION_NUMBER < 0x1000100fL
+// This method was first included in OpenSSL 1.0.1.
unsigned long SSL_CIPHER_get_id(const SSL_CIPHER* cipher) { return cipher->id; }
+#endif
// Used for encoding the |connection_status| field of an SSLInfo object.
int EncodeSSLConnectionStatus(int cipher_suite,
@@ -445,6 +447,12 @@ bool SSLClientSocketOpenSSL::Init() {
options.ConfigureFlag(SSL_OP_NO_SSLv2, true);
options.ConfigureFlag(SSL_OP_NO_SSLv3, !ssl_config_.ssl3_enabled);
options.ConfigureFlag(SSL_OP_NO_TLSv1, !ssl_config_.tls1_enabled);
+#ifdef SSL_OP_NO_TLSv1_1
+ options.ConfigureFlag(SSL_OP_NO_TLSv1_1, true);
+#endif
+#ifdef SSL_OP_NO_TLSv1_2
+ options.ConfigureFlag(SSL_OP_NO_TLSv1_2, true);
+#endif
#if defined(SSL_OP_NO_COMPRESSION)
// If TLS was disabled also disable compression, to provide maximum site
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 007c7af..8fe7b43 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -221,7 +221,11 @@ void URLRequest::SetExtraRequestHeaderByName(const string& name,
const string& value,
bool overwrite) {
DCHECK(!is_pending_);
- NOTREACHED() << "implement me!";
+ if (overwrite) {
+ extra_request_headers_.SetHeader(name, value);
+ } else {
+ extra_request_headers_.SetHeaderIfMissing(name, value);
+ }
}
void URLRequest::SetExtraRequestHeaders(
diff --git a/ui/base/ui_export.h b/ui/base/ui_export.h
new file mode 100644
index 0000000..c54de1f
--- /dev/null
+++ b/ui/base/ui_export.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2011 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.
+
+#ifndef UI_UI_EXPORT_H_
+#define UI_UI_EXPORT_H_
+#pragma once
+
+// Defines UI_EXPORT so that functionality implemented by the UI module can be
+// exported to consumers.
+
+#if defined(COMPONENT_BUILD)
+#if defined(WIN32)
+
+#if defined(UI_IMPLEMENTATION)
+#define UI_EXPORT __declspec(dllexport)
+#else
+#define UI_EXPORT __declspec(dllimport)
+#endif // defined(UI_IMPLEMENTATION)
+
+#else // defined(WIN32)
+#define UI_EXPORT __attribute__((visibility("default")))
+#endif
+
+#else // defined(COMPONENT_BUILD)
+#define UI_EXPORT
+#endif
+
+#endif // UI_UI_EXPORT_H_
diff --git a/ui/gfx/point.cc b/ui/gfx/point.cc
new file mode 100644
index 0000000..ba9ced7
--- /dev/null
+++ b/ui/gfx/point.cc
@@ -0,0 +1,56 @@
+// Copyright (c) 2011 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 "ui/gfx/point.h"
+
+#if defined(OS_WIN)
+#include <windows.h>
+#endif
+
+#include "base/stringprintf.h"
+
+namespace gfx {
+
+Point::Point() : x_(0), y_(0) {
+}
+
+Point::Point(int x, int y) : x_(x), y_(y) {
+}
+
+#if defined(OS_WIN)
+Point::Point(DWORD point) {
+ POINTS points = MAKEPOINTS(point);
+ x_ = points.x;
+ y_ = points.y;
+}
+
+Point::Point(const POINT& point) : x_(point.x), y_(point.y) {
+}
+
+Point& Point::operator=(const POINT& point) {
+ x_ = point.x;
+ y_ = point.y;
+ return *this;
+}
+
+POINT Point::ToPOINT() const {
+ POINT p;
+ p.x = x_;
+ p.y = y_;
+ return p;
+}
+#elif defined(OS_MACOSX)
+Point::Point(const CGPoint& point) : x_(point.x), y_(point.y) {
+}
+
+CGPoint Point::ToCGPoint() const {
+ return CGPointMake(x_, y_);
+}
+#endif
+
+std::string Point::ToString() const {
+ return base::StringPrintf("%d,%d", x_, y_);
+}
+
+} // namespace gfx
diff --git a/ui/gfx/point.h b/ui/gfx/point.h
new file mode 100644
index 0000000..fe39e3b
--- /dev/null
+++ b/ui/gfx/point.h
@@ -0,0 +1,107 @@
+// Copyright (c) 2011 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.
+
+#ifndef UI_GFX_POINT_H_
+#define UI_GFX_POINT_H_
+#pragma once
+
+#include <string>
+
+#include "build/build_config.h"
+#include "ui/base/ui_export.h"
+
+#if defined(OS_WIN)
+typedef unsigned long DWORD;
+typedef struct tagPOINT POINT;
+#elif defined(OS_MACOSX)
+#include <ApplicationServices/ApplicationServices.h>
+#endif
+
+namespace gfx {
+
+// A point has an x and y coordinate.
+class UI_EXPORT Point {
+ public:
+ Point();
+ Point(int x, int y);
+#if defined(OS_WIN)
+ // |point| is a DWORD value that contains a coordinate. The x-coordinate is
+ // the low-order short and the y-coordinate is the high-order short. This
+ // value is commonly acquired from GetMessagePos/GetCursorPos.
+ explicit Point(DWORD point);
+ explicit Point(const POINT& point);
+ Point& operator=(const POINT& point);
+#elif defined(OS_MACOSX)
+ explicit Point(const CGPoint& point);
+#endif
+
+ ~Point() {}
+
+ int x() const { return x_; }
+ int y() const { return y_; }
+
+ void SetPoint(int x, int y) {
+ x_ = x;
+ y_ = y;
+ }
+
+ void set_x(int x) { x_ = x; }
+ void set_y(int y) { y_ = y; }
+
+ void Offset(int delta_x, int delta_y) {
+ x_ += delta_x;
+ y_ += delta_y;
+ }
+
+ Point Add(const Point& other) const{
+ Point copy = *this;
+ copy.Offset(other.x_, other.y_);
+ return copy;
+ }
+
+ Point Subtract(const Point& other) const {
+ Point copy = *this;
+ copy.Offset(-other.x_, -other.y_);
+ return copy;
+ }
+
+ Point Middle(const Point& other) const {
+ return Point((x_ + other.x_) / 2, (y_ + other.y_) / 2);
+ }
+
+ bool operator==(const Point& rhs) const {
+ return x_ == rhs.x_ && y_ == rhs.y_;
+ }
+
+ bool operator!=(const Point& rhs) const {
+ return !(*this == rhs);
+ }
+
+ // A point is less than another point if its y-value is closer
+ // to the origin. If the y-values are the same, then point with
+ // the x-value closer to the origin is considered less than the
+ // other.
+ // This comparison is required to use Points in sets, or sorted
+ // vectors.
+ bool operator<(const Point& rhs) const {
+ return (y_ == rhs.y_) ? (x_ < rhs.x_) : (y_ < rhs.y_);
+ }
+
+#if defined(OS_WIN)
+ POINT ToPOINT() const;
+#elif defined(OS_MACOSX)
+ CGPoint ToCGPoint() const;
+#endif
+
+ // Returns a string representation of point.
+ std::string ToString() const;
+
+ private:
+ int x_;
+ int y_;
+};
+
+} // namespace gfx
+
+#endif // UI_GFX_POINT_H_