diff --git a/talk/app/webrtc/statstypes.h b/talk/app/webrtc/statstypes.h index 8eae1ad63b..656b83c3e6 100644 --- a/talk/app/webrtc/statstypes.h +++ b/talk/app/webrtc/statstypes.h @@ -36,6 +36,7 @@ #include #include "webrtc/base/basictypes.h" +#include "webrtc/base/common.h" #include "webrtc/base/stringencode.h" namespace webrtc { diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn index 4e14ab1c75..17cd3afee0 100644 --- a/webrtc/base/BUILD.gn +++ b/webrtc/base/BUILD.gn @@ -110,11 +110,35 @@ if (rtc_build_ssl == 0) { } } +# The subset of rtc_base approved for use outside of libjingle. +static_library("rtc_base_approved") { + configs += [ "..:common_config" ] + direct_dependent_configs = [ "..:common_inherited_config" ] + + sources = [ + "checks.cc", + "checks.h", + "exp_filter.cc", + "exp_filter.h", + "md5.cc", + "md5.h", + "md5digest.h", + "stringencode.cc", + "stringencode.h", + "stringutils.cc", + "stringutils.h", + "timeutils.cc", + "timeutils.h", + ] +} + static_library("webrtc_base") { cflags = [] cflags_cc = [] libs = [] - deps= [] + deps = [ + ":rtc_base_approved", + ] configs += [ "..:common_config", diff --git a/webrtc/base/base.gyp b/webrtc/base/base.gyp index 58c4994589..f5fad01f25 100644 --- a/webrtc/base/base.gyp +++ b/webrtc/base/base.gyp @@ -34,9 +34,32 @@ 'rtc_base', ], }, + { + # The subset of rtc_base approved for use outside of libjingle. + 'target_name': 'rtc_base_approved', + 'type': 'static_library', + 'sources': [ + 'checks.cc', + 'checks.h', + 'exp_filter.cc', + 'exp_filter.h', + 'md5.cc', + 'md5.h', + 'md5digest.h', + 'stringencode.cc', + 'stringencode.h', + 'stringutils.cc', + 'stringutils.h', + 'timeutils.cc', + 'timeutils.h', + ], + }, { 'target_name': 'rtc_base', 'type': 'static_library', + 'dependencies': [ + 'rtc_base_approved', + ], 'defines': [ 'FEATURE_ENABLE_SSL', 'LOGGING=1', @@ -75,11 +98,9 @@ 'byteorder.h', 'callback.h', 'callback.h.pump', - 'checks.cc', - 'checks.h', + 'constructormagic.h', 'common.cc', 'common.h', - 'constructormagic.h', 'cpumonitor.cc', 'cpumonitor.h', 'crc32.cc', @@ -94,8 +115,6 @@ 'diskcache_win32.h', 'event.cc', 'event.h', - 'exp_filter.cc', - 'exp_filter.h', 'filelock.cc', 'filelock.h', 'fileutils.cc', @@ -154,9 +173,6 @@ 'macwindowpicker.cc', 'macwindowpicker.h', 'mathutils.h', - 'md5.cc', - 'md5.h', - 'md5digest.h', 'messagedigest.cc', 'messagedigest.h', 'messagehandler.cc', @@ -261,10 +277,6 @@ 'stream.cc', 'stream.h', 'stringdigest.h', - 'stringencode.cc', - 'stringencode.h', - 'stringutils.cc', - 'stringutils.h', 'systeminfo.cc', 'systeminfo.h', 'task.cc', @@ -280,8 +292,6 @@ 'thread_checker.h', 'thread_checker_impl.cc', 'thread_checker_impl.h', - 'timeutils.cc', - 'timeutils.h', 'timing.cc', 'timing.h', 'transformadapter.cc', diff --git a/webrtc/base/stringencode.cc b/webrtc/base/stringencode.cc index 1e0a1493cd..52b75da705 100644 --- a/webrtc/base/stringencode.cc +++ b/webrtc/base/stringencode.cc @@ -14,7 +14,7 @@ #include #include "webrtc/base/basictypes.h" -#include "webrtc/base/common.h" +#include "webrtc/base/checks.h" #include "webrtc/base/stringutils.h" namespace rtc { @@ -26,7 +26,7 @@ namespace rtc { size_t escape(char * buffer, size_t buflen, const char * source, size_t srclen, const char * illegal, char escape) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -48,7 +48,7 @@ size_t escape(char * buffer, size_t buflen, size_t unescape(char * buffer, size_t buflen, const char * source, size_t srclen, char escape) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -67,7 +67,7 @@ size_t unescape(char * buffer, size_t buflen, size_t encode(char * buffer, size_t buflen, const char * source, size_t srclen, const char * illegal, char escape) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -118,9 +118,9 @@ const char* unsafe_filename_characters() { // all operating systems, unless one system is overly restrictive. #if defined(WEBRTC_WIN) return "\\/:*?\"<>|"; -#else // !WEBRTC_WIN +#else // !WEBRTC_WIN // TODO - ASSERT(false); + DCHECK(false); return ""; #endif // !WEBRTC_WIN } @@ -257,7 +257,7 @@ size_t utf8_encode(char* buffer, size_t buflen, unsigned long value) { size_t html_encode(char * buffer, size_t buflen, const char * source, size_t srclen) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -275,7 +275,7 @@ size_t html_encode(char * buffer, size_t buflen, case '\'': escseq = "'"; esclen = 5; break; case '\"': escseq = """; esclen = 6; break; case '&': escseq = "&"; esclen = 5; break; - default: ASSERT(false); + default: DCHECK(false); } if (bufpos + esclen >= buflen) { break; @@ -287,7 +287,8 @@ size_t html_encode(char * buffer, size_t buflen, } } else { // Largest value is 0x1FFFFF => � (10 characters) - char escseq[11]; + const size_t kEscseqSize = 11; + char escseq[kEscseqSize]; unsigned long val; if (size_t vallen = utf8_decode(&source[srcpos], srclen - srcpos, &val)) { srcpos += vallen; @@ -295,7 +296,7 @@ size_t html_encode(char * buffer, size_t buflen, // Not a valid utf8 sequence, just use the raw character. val = static_cast(source[srcpos++]); } - size_t esclen = sprintfn(escseq, ARRAY_SIZE(escseq), "&#%lu;", val); + size_t esclen = sprintfn(escseq, kEscseqSize, "&#%lu;", val); if (bufpos + esclen >= buflen) { break; } @@ -309,13 +310,13 @@ size_t html_encode(char * buffer, size_t buflen, size_t html_decode(char * buffer, size_t buflen, const char * source, size_t srclen) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size return xml_decode(buffer, buflen, source, srclen); } size_t xml_encode(char * buffer, size_t buflen, const char * source, size_t srclen) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -331,7 +332,7 @@ size_t xml_encode(char * buffer, size_t buflen, case '\'': escseq = "'"; esclen = 6; break; case '\"': escseq = """; esclen = 6; break; case '&': escseq = "&"; esclen = 5; break; - default: ASSERT(false); + default: DCHECK(false); } if (bufpos + esclen >= buflen) { break; @@ -348,7 +349,7 @@ size_t xml_encode(char * buffer, size_t buflen, size_t xml_decode(char * buffer, size_t buflen, const char * source, size_t srclen) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen <= 0) return 0; @@ -410,7 +411,7 @@ size_t xml_decode(char * buffer, size_t buflen, static const char HEX[] = "0123456789abcdef"; char hex_encode(unsigned char val) { - ASSERT(val < 16); + DCHECK_LT(val, 16); return (val < 16) ? HEX[val] : '!'; } @@ -435,7 +436,7 @@ size_t hex_encode(char* buffer, size_t buflen, size_t hex_encode_with_delimiter(char* buffer, size_t buflen, const char* csource, size_t srclen, char delimiter) { - ASSERT(NULL != buffer); // TODO: estimate output size + DCHECK(buffer); // TODO: estimate output size if (buflen == 0) return 0; @@ -475,7 +476,7 @@ std::string hex_encode_with_delimiter(const char* source, size_t srclen, char* buffer = STACK_ARRAY(char, kBufferSize); size_t length = hex_encode_with_delimiter(buffer, kBufferSize, source, srclen, delimiter); - ASSERT(srclen == 0 || length > 0); + DCHECK(srclen == 0 || length > 0); return std::string(buffer, length); } @@ -487,7 +488,7 @@ size_t hex_decode(char * cbuffer, size_t buflen, size_t hex_decode_with_delimiter(char* cbuffer, size_t buflen, const char* source, size_t srclen, char delimiter) { - ASSERT(NULL != cbuffer); // TODO: estimate output size + DCHECK(cbuffer); // TODO: estimate output size if (buflen == 0) return 0; @@ -551,7 +552,7 @@ std::string s_transform(const std::string& source, Transform t) { size_t tokenize(const std::string& source, char delimiter, std::vector* fields) { - ASSERT(NULL != fields); + DCHECK(fields); fields->clear(); size_t last = 0; for (size_t i = 0; i < source.length(); ++i) { @@ -608,7 +609,7 @@ size_t tokenize(const std::string& source, char delimiter, char start_mark, size_t split(const std::string& source, char delimiter, std::vector* fields) { - ASSERT(NULL != fields); + DCHECK(fields); fields->clear(); size_t last = 0; for (size_t i = 0; i < source.length(); ++i) { diff --git a/webrtc/base/stringencode.h b/webrtc/base/stringencode.h index b6c666f98a..2e69a9c021 100644 --- a/webrtc/base/stringencode.h +++ b/webrtc/base/stringencode.h @@ -15,7 +15,7 @@ #include #include -#include "webrtc/base/common.h" +#include "webrtc/base/checks.h" namespace rtc { @@ -167,7 +167,7 @@ size_t tokenize(const std::string& source, char delimiter, char start_mark, template static bool ToString(const T &t, std::string* s) { - ASSERT(NULL != s); + DCHECK(s); std::ostringstream oss; oss << std::boolalpha << t; *s = oss.str(); @@ -176,7 +176,7 @@ static bool ToString(const T &t, std::string* s) { template static bool FromString(const std::string& s, T* t) { - ASSERT(NULL != t); + DCHECK(t); std::istringstream iss(s); iss >> std::boolalpha >> *t; return !iss.fail(); diff --git a/webrtc/base/stringutils.cc b/webrtc/base/stringutils.cc index 041708d3d5..cb99c25489 100644 --- a/webrtc/base/stringutils.cc +++ b/webrtc/base/stringutils.cc @@ -8,8 +8,8 @@ * be found in the AUTHORS file in the root of the source tree. */ +#include "webrtc/base/checks.h" #include "webrtc/base/stringutils.h" -#include "webrtc/base/common.h" namespace rtc { @@ -57,7 +57,7 @@ int ascii_string_compare(const wchar_t* s1, const char* s2, size_t n, if (n-- == 0) return 0; c1 = transformation(*s1); // Double check that characters are not UTF-8 - ASSERT(static_cast(*s2) < 128); + DCHECK_LT(static_cast(*s2), 128); // Note: *s2 gets implicitly promoted to wchar_t c2 = transformation(*s2); if (c1 != c2) return (c1 < c2) ? -1 : 1; @@ -80,14 +80,14 @@ size_t asccpyn(wchar_t* buffer, size_t buflen, #if _DEBUG // Double check that characters are not UTF-8 for (size_t pos = 0; pos < srclen; ++pos) - ASSERT(static_cast(source[pos]) < 128); + DCHECK_LT(static_cast(source[pos]), 128); #endif // _DEBUG std::copy(source, source + srclen, buffer); buffer[srclen] = 0; return srclen; } -#endif // WEBRTC_WIN +#endif // WEBRTC_WIN void replace_substrs(const char *search, size_t search_len, diff --git a/webrtc/base/timeutils.cc b/webrtc/base/timeutils.cc index dcf83e3dd9..64dae2f975 100644 --- a/webrtc/base/timeutils.cc +++ b/webrtc/base/timeutils.cc @@ -18,12 +18,14 @@ #endif #if defined(WEBRTC_WIN) +#ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN +#endif #include #include #endif -#include "webrtc/base/common.h" +#include "webrtc/base/checks.h" #include "webrtc/base/timeutils.h" #define EFFICIENT_IMPLEMENTATION 1 @@ -39,7 +41,9 @@ uint64 TimeNanos() { if (timebase.denom == 0) { // Get the timebase if this is the first time we run. // Recommended by Apple's QA1398. - VERIFY(KERN_SUCCESS == mach_timebase_info(&timebase)); + if (mach_timebase_info(&timebase) != KERN_SUCCESS) { + DCHECK(false); + } } // Use timebase to convert absolute time tick units into nanoseconds. ticks = mach_absolute_time() * timebase.numer / timebase.denom; @@ -118,7 +122,7 @@ static struct tm *gmtime_r(const time_t *timep, struct tm *result) { *result = *tm; return result; } -#endif // WEBRTC_WIN +#endif // WEBRTC_WIN void CurrentTmTime(struct tm *tm, int *microseconds) { struct timeval timeval; @@ -132,8 +136,8 @@ void CurrentTmTime(struct tm *tm, int *microseconds) { } uint32 TimeAfter(int32 elapsed) { - ASSERT(elapsed >= 0); - ASSERT(static_cast(elapsed) < HALF); + DCHECK_GE(elapsed, 0); + DCHECK_LT(static_cast(elapsed), HALF); return Time() + elapsed; } diff --git a/webrtc/base/window.h b/webrtc/base/window.h index d961026524..9f4381a610 100644 --- a/webrtc/base/window.h +++ b/webrtc/base/window.h @@ -11,6 +11,7 @@ #ifndef WEBRTC_BASE_WINDOW_H_ #define WEBRTC_BASE_WINDOW_H_ +#include "webrtc/base/basictypes.h" #include "webrtc/base/stringencode.h" // Define platform specific window types. diff --git a/webrtc/modules/desktop_capture/BUILD.gn b/webrtc/modules/desktop_capture/BUILD.gn index f42ceecd68..10219b57ab 100644 --- a/webrtc/modules/desktop_capture/BUILD.gn +++ b/webrtc/modules/desktop_capture/BUILD.gn @@ -113,7 +113,10 @@ source_set("desktop_capture") { configs -= [ "//build/config/clang:find_bad_constructs" ] } - deps = ["../../system_wrappers"] + deps = [ + "../../system_wrappers", + "../../base:webrtc_base", + ] if (use_desktop_capture_differ_sse2) { deps += [":desktop_capture_differ_sse2"] diff --git a/webrtc/modules/desktop_capture/desktop_capture.gypi b/webrtc/modules/desktop_capture/desktop_capture.gypi index a0195d664e..df6c4bcf59 100644 --- a/webrtc/modules/desktop_capture/desktop_capture.gypi +++ b/webrtc/modules/desktop_capture/desktop_capture.gypi @@ -13,6 +13,7 @@ 'type': 'static_library', 'dependencies': [ '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers', + '<(webrtc_root)/base/base.gyp:rtc_base', ], 'sources': [ "desktop_and_cursor_composer.cc", diff --git a/webrtc/modules/video_capture/video_capture.gypi b/webrtc/modules/video_capture/video_capture.gypi index 5bdb158b61..3e83ab3f7e 100644 --- a/webrtc/modules/video_capture/video_capture.gypi +++ b/webrtc/modules/video_capture/video_capture.gypi @@ -60,6 +60,7 @@ 'link_settings': { 'xcode_settings': { 'OTHER_LDFLAGS': [ + '-framework Cocoa', '-framework CoreVideo', '-framework QTKit', ], diff --git a/webrtc/system_wrappers/BUILD.gn b/webrtc/system_wrappers/BUILD.gn index 67c47545a4..76a0f34073 100644 --- a/webrtc/system_wrappers/BUILD.gn +++ b/webrtc/system_wrappers/BUILD.gn @@ -193,7 +193,7 @@ static_library("system_wrappers") { ] deps += [ - "../base:webrtc_base", + "../base:rtc_base_approved", ] } diff --git a/webrtc/system_wrappers/source/system_wrappers.gyp b/webrtc/system_wrappers/source/system_wrappers.gyp index 610f6b0879..82addeb5ee 100644 --- a/webrtc/system_wrappers/source/system_wrappers.gyp +++ b/webrtc/system_wrappers/source/system_wrappers.gyp @@ -17,7 +17,7 @@ '../interface', ], 'dependencies': [ - '../../base/base.gyp:rtc_base', + '../../base/base.gyp:rtc_base_approved', ], 'direct_dependent_settings': { 'include_dirs': [