Move talk/app/webrtc to webrtc/api

The previously disabled warnings that were inherited from
talk/build/common.gypi are now replaced by target-specific disabling
of only the failing warnings. Additional disabling was needed since the stricter
compilation warnings that applies to code in webrtc/.

License headers will be updated in a follow-up CL.

Other modifications:
* Updated the header guards.
* Sorted the includes using chromium/src/tools/sort-headers.py
  except for these files:
  talk/app/webrtc/peerconnectionendtoend_unittest.cc
  talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
  talk/app/webrtc/java/jni/androidmediaencoder_jni.cc
  webrtc/media/devices/win32devicemanager.cc

The HAVE_SCTP define was added for the peerconnection_unittests target
in api_tests.gyp.

I also checked that none of
SRTP_RELATIVE_PATH
HAVE_SRTP
HAVE_WEBRTC_VIDEO
HAVE_WEBRTC_VOICE
were used by the talk/app/webrtc code.

For Chromium, the following changes will need to be applied to the roll CL that updates the
DEPS for WebRTC and libjingle:
https://codereview.chromium.org/1615433002

BUG=webrtc:5418
NOPRESUBMIT=True
R=deadbeef@webrtc.org, pthatcher@webrtc.org, tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1610243002 .

Cr-Commit-Position: refs/heads/master@{#11545}
diff --git a/webrtc/api/api_tests.gyp b/webrtc/api/api_tests.gyp
index cdb23fb..31bc699 100644
--- a/webrtc/api/api_tests.gyp
+++ b/webrtc/api/api_tests.gyp
@@ -8,7 +8,135 @@
 
 {
   'includes': [ '../build/common.gypi', ],
+  'targets': [
+    {
+      'target_name': 'peerconnection_unittests',
+      'type': '<(gtest_target_type)',
+      'dependencies': [
+        '<(DEPTH)/testing/gmock.gyp:gmock',
+        '<(webrtc_root)/api/api.gyp:libjingle_peerconnection',
+        '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
+        '<(webrtc_root)/common.gyp:webrtc_common',
+        '<(webrtc_root)/webrtc.gyp:rtc_unittest_main',
+        '../../talk/libjingle.gyp:libjingle_p2p',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)/testing/gmock/include',
+        ],
+      },
+      'defines': [
+        # Feature selection.
+        'HAVE_SCTP',
+      ],
+      'sources': [
+        'datachannel_unittest.cc',
+        'dtlsidentitystore_unittest.cc',
+        'dtmfsender_unittest.cc',
+        'fakemetricsobserver.cc',
+        'fakemetricsobserver.h',
+        'jsepsessiondescription_unittest.cc',
+        'localaudiosource_unittest.cc',
+        'mediastream_unittest.cc',
+        'peerconnection_unittest.cc',
+        'peerconnectionendtoend_unittest.cc',
+        'peerconnectionfactory_unittest.cc',
+        'peerconnectioninterface_unittest.cc',
+        # 'peerconnectionproxy_unittest.cc',
+        'remotevideocapturer_unittest.cc',
+        'rtpsenderreceiver_unittest.cc',
+        'statscollector_unittest.cc',
+        'test/fakeaudiocapturemodule.cc',
+        'test/fakeaudiocapturemodule.h',
+        'test/fakeaudiocapturemodule_unittest.cc',
+        'test/fakeconstraints.h',
+        'test/fakedatachannelprovider.h',
+        'test/fakedtlsidentitystore.h',
+        'test/fakeperiodicvideocapturer.h',
+        'test/fakevideotrackrenderer.h',
+        'test/mockpeerconnectionobservers.h',
+        'test/peerconnectiontestwrapper.h',
+        'test/peerconnectiontestwrapper.cc',
+        'test/testsdpstrings.h',
+        'videosource_unittest.cc',
+        'videotrack_unittest.cc',
+        'webrtcsdp_unittest.cc',
+        'webrtcsession_unittest.cc',
+      ],
+      # TODO(kjellander): Make the code compile without disabling these flags.
+      # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
+      'cflags': [
+        '-Wno-sign-compare',
+      ],
+      'cflags!': [
+        '-Wextra',
+      ],
+      'cflags_cc!': [
+        '-Wnon-virtual-dtor',
+        '-Woverloaded-virtual',
+      ],
+      'msvs_disabled_warnings': [
+        4245,  # conversion from 'int' to 'size_t', signed/unsigned mismatch.
+        4267,  # conversion from 'size_t' to 'int', possible loss of data.
+        4389,  # signed/unsigned mismatch.
+      ],
+      'conditions': [
+        ['clang==1', {
+          # TODO(kjellander): Make the code compile without disabling these flags.
+          # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
+          'cflags!': [
+            '-Wextra',
+          ],
+          'xcode_settings': {
+            'WARNING_CFLAGS!': ['-Wextra'],
+          },
+        }],
+        ['OS=="android"', {
+          'sources': [
+            'test/androidtestinitializer.cc',
+            'test/androidtestinitializer.h',
+          ],
+          'dependencies': [
+            '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
+            '<(webrtc_root)/api/api.gyp:libjingle_peerconnection_jni',
+          ],
+        }],
+        ['OS=="win" and clang==1', {
+          'msvs_settings': {
+            'VCCLCompilerTool': {
+              'AdditionalOptions': [
+                # Disable warnings failing when compiling with Clang on Windows.
+                # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
+                '-Wno-sign-compare',
+                '-Wno-unused-function',
+              ],
+            },
+          },
+        }],
+      ],  # conditions
+    },  # target peerconnection_unittests
+  ],  # targets
   'conditions': [
+    ['OS=="android"', {
+      'targets': [
+        {
+          'target_name': 'libjingle_peerconnection_android_unittest',
+          'type': 'none',
+          'dependencies': [
+            '<(webrtc_root)/api/api.gyp:libjingle_peerconnection_java',
+          ],
+          'variables': {
+            'apk_name': 'libjingle_peerconnection_android_unittest',
+            'java_in_dir': 'androidtests',
+            'resource_dir': 'androidtests/res',
+            'native_lib_target': 'libjingle_peerconnection_so',
+            'is_test_apk': 1,
+            'never_lint': 1,
+          },
+          'includes': [ '../../build/java_apk.gypi' ],
+        },
+      ],  # targets
+    }],  # OS=="android"
     ['OS=="ios"', {
       'targets': [
         {
@@ -35,8 +163,36 @@
             # https://developer.apple.com/library/mac/qa/qa1490/_index.html
             'OTHER_LDFLAGS': ['-ObjC'],
           },
-        }
+        },
       ],
-    }], # OS=="ios"
-  ],
+    }],  # OS=="ios"
+    ['OS=="android"', {
+      'targets': [
+        {
+          'target_name': 'peerconnection_unittests_apk_target',
+          'type': 'none',
+          'dependencies': [
+            '<(apk_tests_path):peerconnection_unittests_apk',
+          ],
+        },
+      ],
+    }],  # OS=="android"
+    ['test_isolation_mode != "noop"', {
+      'targets': [
+        {
+          'target_name': 'peerconnection_unittests_run',
+          'type': 'none',
+          'dependencies': [
+            'peerconnection_unittests',
+          ],
+          'includes': [
+            '../build/isolate.gypi',
+          ],
+          'sources': [
+            'peerconnection_unittests.isolate',
+          ],
+        },
+      ],  # targets
+    }],  # test_isolation_mode != "noop"
+  ],  # conditions
 }