Ensures that modules_unittests runs on iOS

BUG=4752
R=tkchin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#9408}
diff --git a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
index 0d1c670..068d2e1 100644
--- a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
@@ -11,6 +11,7 @@
 
 #include "testing/gtest/include/gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 #include "webrtc_cng.h"
 
 namespace webrtc {
@@ -61,14 +62,14 @@
 }
 
 // Test failing Create.
-TEST_F(CngTest, CngCreateFail) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngCreateFail)) {
   // Test to see that an invalid pointer is caught.
   EXPECT_EQ(-1, WebRtcCng_CreateEnc(NULL));
   EXPECT_EQ(-1, WebRtcCng_CreateDec(NULL));
 }
 
 // Test normal Create.
-TEST_F(CngTest, CngCreate) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngCreate)) {
   EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
   EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
   EXPECT_TRUE(cng_enc_inst_ != NULL);
@@ -79,7 +80,7 @@
 }
 
 // Create CNG encoder, init with faulty values, free CNG encoder.
-TEST_F(CngTest, CngInitFail) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngInitFail)) {
   // Create encoder memory.
   EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
 
@@ -97,7 +98,7 @@
   EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
 }
 
-TEST_F(CngTest, CngEncode) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngEncode)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -149,7 +150,7 @@
 }
 
 // Encode Cng with too long input vector.
-TEST_F(CngTest, CngEncodeTooLong) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngEncodeTooLong)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -168,7 +169,7 @@
 }
 
 // Call encode without calling init.
-TEST_F(CngTest, CngEncodeNoInit) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngEncodeNoInit)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -185,7 +186,7 @@
 }
 
 // Update SID parameters, for both 9 and 16 parameters.
-TEST_F(CngTest, CngUpdateSid) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngUpdateSid)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -222,7 +223,7 @@
 }
 
 // Update SID parameters, with wrong parameters or without calling decode.
-TEST_F(CngTest, CngUpdateSidErroneous) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngUpdateSidErroneous)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -258,7 +259,7 @@
 }
 
 // Test to generate cng data, by forcing SID. Both normal and faulty condition.
-TEST_F(CngTest, CngGenerate) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngGenerate)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t out_data[640];
   int16_t number_bytes;
@@ -292,7 +293,7 @@
 }
 
 // Test automatic SID.
-TEST_F(CngTest, CngAutoSid) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngAutoSid)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -319,7 +320,7 @@
 }
 
 // Test automatic SID, with very short interval.
-TEST_F(CngTest, CngAutoSidShort) {
+TEST_F(CngTest, DISABLED_ON_IOS(CngAutoSidShort)) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
diff --git a/webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc b/webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc
index a751c24..73efee1 100644
--- a/webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc
@@ -12,6 +12,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "webrtc/modules/audio_coding/codecs/isac/main/interface/isac.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 struct WebRtcISACStruct;
 
@@ -54,24 +55,24 @@
 }
 
 // Test failing Create.
-TEST_F(IsacTest, IsacCreateFail) {
+TEST_F(IsacTest, DISABLED_ON_IOS(IsacCreateFail)) {
   // Test to see that an invalid pointer is caught.
   EXPECT_EQ(-1, WebRtcIsac_Create(NULL));
 }
 
 // Test failing Free.
-TEST_F(IsacTest, IsacFreeFail) {
+TEST_F(IsacTest, DISABLED_ON_IOS(IsacFreeFail)) {
   // Test to see that free function doesn't crash.
   EXPECT_EQ(0, WebRtcIsac_Free(NULL));
 }
 
 // Test normal Create and Free.
-TEST_F(IsacTest, IsacCreateFree) {
+TEST_F(IsacTest, DISABLED_ON_IOS(IsacCreateFree)) {
   EXPECT_EQ(0, WebRtcIsac_Create(&isac_codec_));
   EXPECT_TRUE(isac_codec_ != NULL);
   EXPECT_EQ(0, WebRtcIsac_Free(isac_codec_));}
 
-TEST_F(IsacTest, IsacUpdateBWE) {
+TEST_F(IsacTest, DISABLED_ON_IOS(IsacUpdateBWE)) {
   // Create encoder memory.
   EXPECT_EQ(0, WebRtcIsac_Create(&isac_codec_));
 
diff --git a/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc b/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc
index 9289933..15188a9 100644
--- a/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc
@@ -14,6 +14,7 @@
 #include "webrtc/modules/audio_coding/codecs/opus/opus_inst.h"
 #include "webrtc/modules/audio_coding/neteq/tools/audio_loop.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -246,7 +247,7 @@
 }
 
 // Test failing Create.
-TEST(OpusTest, OpusCreateFail) {
+TEST(OpusTest, DISABLED_ON_IOS(OpusCreateFail)) {
   WebRtcOpusEncInst* opus_encoder;
   WebRtcOpusDecInst* opus_decoder;
 
@@ -263,14 +264,14 @@
 }
 
 // Test failing Free.
-TEST(OpusTest, OpusFreeFail) {
+TEST(OpusTest, DISABLED_ON_IOS(OpusFreeFail)) {
   // Test to see that an invalid pointer is caught.
   EXPECT_EQ(-1, WebRtcOpus_EncoderFree(NULL));
   EXPECT_EQ(-1, WebRtcOpus_DecoderFree(NULL));
 }
 
 // Test normal Create and Free.
-TEST_P(OpusTest, OpusCreateFree) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusCreateFree)) {
   EXPECT_EQ(0, WebRtcOpus_EncoderCreate(&opus_encoder_,
                                         channels_,
                                         application_));
@@ -282,7 +283,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, OpusEncodeDecode) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusEncodeDecode)) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -320,7 +321,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, OpusSetBitRate) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetBitRate)) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetBitRate(opus_encoder_, 60000));
 
@@ -356,7 +357,7 @@
 
 // Encode and decode one frame, initialize the decoder and
 // decode once more.
-TEST_P(OpusTest, OpusDecodeInit) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodeInit)) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -386,7 +387,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, OpusEnableDisableFec) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusEnableDisableFec)) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_EnableFec(opus_encoder_));
   EXPECT_EQ(-1, WebRtcOpus_DisableFec(opus_encoder_));
@@ -403,7 +404,7 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, OpusEnableDisableDtx) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusEnableDisableDtx)) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_EnableDtx(opus_encoder_));
   EXPECT_EQ(-1, WebRtcOpus_DisableDtx(opus_encoder_));
@@ -437,15 +438,15 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, OpusDtxOff) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDtxOff)) {
   TestDtxEffect(false);
 }
 
-TEST_P(OpusTest, OpusDtxOn) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDtxOn)) {
   TestDtxEffect(true);
 }
 
-TEST_P(OpusTest, OpusSetPacketLossRate) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetPacketLossRate)) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetPacketLossRate(opus_encoder_, 50));
 
@@ -462,7 +463,7 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, OpusSetMaxPlaybackRate) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetMaxPlaybackRate)) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetMaxPlaybackRate(opus_encoder_, 20000));
 
@@ -487,7 +488,7 @@
 }
 
 // Test PLC.
-TEST_P(OpusTest, OpusDecodePlc) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodePlc)) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -524,7 +525,7 @@
 }
 
 // Duration estimation.
-TEST_P(OpusTest, OpusDurationEstimation) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDurationEstimation)) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create.
@@ -556,7 +557,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, OpusDecodeRepacketized) {
+TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodeRepacketized)) {
   const int kPackets = 6;
 
   PrepareSpeechData(channels_, 20, 20 * kPackets);
diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc
index 80ce082..e5fcee3 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc
@@ -503,10 +503,20 @@
   test::AudioLoop audio_loop_;
 };
 
-TEST_F(AcmIsacMtTest, DoTest) {
+#if defined(WEBRTC_IOS)
+// See https://code.google.com/p/webrtc/issues/detail?id=4752 for details.
+#define MAYBE_DoTest DISABLED_DoTest
+#else
+#define MAYBE_DoTest DoTest
+#endif
+TEST_F(AcmIsacMtTest, MAYBE_DoTest) {
   EXPECT_EQ(kEventSignaled, RunTest());
 }
 
+// Disabling all of these tests on iOS until file support has been added.
+// See https://code.google.com/p/webrtc/issues/detail?id=4752 for details.
+#if !defined(WEBRTC_IOS)
+
 class AcmReceiverBitExactness : public ::testing::Test {
  public:
   static std::string PlatformChecksum(std::string win64,
@@ -963,4 +973,6 @@
       test::AcmReceiveTest::kStereoOutput);
 }
 
+#endif
+
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
index 929439f..d97f4e6 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
@@ -595,7 +595,7 @@
   rtc::scoped_ptr<SimulatedClock> fake_clock_;
 };
 
-TEST_F(AudioCodingModuleMtTestOldApi, DoTest) {
+TEST_F(AudioCodingModuleMtTestOldApi, DISABLED_ON_IOS(DoTest)) {
   EXPECT_EQ(kEventSignaled, RunTest());
 }
 
@@ -695,10 +695,14 @@
   test::AudioLoop audio_loop_;
 };
 
-TEST_F(AcmIsacMtTestOldApi, DoTest) {
+TEST_F(AcmIsacMtTestOldApi, DISABLED_ON_IOS(DoTest)) {
   EXPECT_EQ(kEventSignaled, RunTest());
 }
 
+// Disabling all of these tests on iOS until file support has been added.
+// See https://code.google.com/p/webrtc/issues/detail?id=4752 for details.
+#if !defined(WEBRTC_IOS)
+
 class AcmReceiverBitExactnessOldApi : public ::testing::Test {
  public:
   static std::string PlatformChecksum(std::string win64,
@@ -1524,4 +1528,7 @@
 TEST_F(AcmSwitchingOutputFrequencyOldApi, Toggle8KhzTo16Khz) {
   Run(8000, 16000, 1000);
 }
+
+#endif
+
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
index e4db3a3..188f727 100644
--- a/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
@@ -18,6 +18,7 @@
 
 #include "testing/gtest/include/gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -60,13 +61,13 @@
   fclose(data_file);
 }
 
-TEST(AudioClassifierTest, DoAnalysisMono) {
+TEST(AudioClassifierTest, DISABLED_ON_IOS(DoAnalysisMono)) {
   RunAnalysisTest(test::ResourcePath("short_mixed_mono_48", "pcm"),
                   test::ResourcePath("short_mixed_mono_48", "dat"),
                   1);
 }
 
-TEST(AudioClassifierTest, DoAnalysisStereo) {
+TEST(AudioClassifierTest, DISABLED_ON_IOS(DoAnalysisStereo)) {
   RunAnalysisTest(test::ResourcePath("short_mixed_stereo_48", "pcm"),
                   test::ResourcePath("short_mixed_stereo_48", "dat"),
                   2);
diff --git a/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc
index f0158b9..729dbf6 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc
@@ -17,6 +17,7 @@
 #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h"
 #include "webrtc/modules/audio_coding/neteq/tools/rtp_generator.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -233,7 +234,7 @@
   int16_t output_[kMaxBlockSize];
 };
 
-TEST_F(NetEqExternalVsInternalDecoderTest, RunTest) {
+TEST_F(NetEqExternalVsInternalDecoderTest, DISABLED_ON_IOS(RunTest)) {
   RunTest(100);  // Run 100 laps @ 10 ms each in the test loop.
 }
 
@@ -328,7 +329,7 @@
   int16_t output_[kMaxBlockSize];
 };
 
-TEST_F(LargeTimestampJumpTest, JumpLongerThanHalfRange) {
+TEST_F(LargeTimestampJumpTest, DISABLED_ON_IOS(JumpLongerThanHalfRange)) {
   // Set the timestamp series to start at 2880, increase to 7200, then jump to
   // 2869342376. The sequence numbers start at 42076 and increase by 1 for each
   // packet, also when the timestamp jumps.
@@ -352,7 +353,8 @@
   EXPECT_EQ(kRecovered, test_state_);
 }
 
-TEST_F(LargeTimestampJumpTest, JumpLongerThanHalfRangeAndWrap) {
+TEST_F(LargeTimestampJumpTest,
+       DISABLED_ON_IOS(JumpLongerThanHalfRangeAndWrap)) {
   // Make a jump larger than half the 32-bit timestamp range. Set the start
   // timestamp such that the jump will result in a wrap around.
   static const uint16_t kStartSeqeunceNumber = 42076;
@@ -411,7 +413,7 @@
   }
 };
 
-TEST_F(ShortTimestampJumpTest, JumpShorterThanHalfRange) {
+TEST_F(ShortTimestampJumpTest, DISABLED_ON_IOS(JumpShorterThanHalfRange)) {
   // Make a jump shorter than half the 32-bit timestamp range. Set the start
   // timestamp such that the jump will not result in a wrap around.
   static const uint16_t kStartSeqeunceNumber = 42076;
@@ -435,7 +437,8 @@
   EXPECT_EQ(kRecovered, test_state_);
 }
 
-TEST_F(ShortTimestampJumpTest, JumpShorterThanHalfRangeAndWrap) {
+TEST_F(ShortTimestampJumpTest,
+       DISABLED_ON_IOS(JumpShorterThanHalfRangeAndWrap)) {
   // Make a jump shorter than half the 32-bit timestamp range. Set the start
   // timestamp such that the jump will result in a wrap around.
   static const uint16_t kStartSeqeunceNumber = 42076;
diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
index b3d6f25..3bdaa69b 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
@@ -437,7 +437,10 @@
   *payload_len = 1;  // Only noise level, no spectral parameters.
 }
 
-TEST_F(NetEqDecodingTest, DISABLED_ON_ANDROID(TestBitExactness)) {
+// TODO(henrika): add support for IOS for all tests in this file.
+// See https://code.google.com/p/webrtc/issues/detail?id=4752 for details.
+TEST_F(NetEqDecodingTest,
+       DISABLED_ON_IOS(DISABLED_ON_ANDROID(TestBitExactness))) {
   const std::string input_rtp_file = webrtc::test::ProjectRootPath() +
       "resources/audio_coding/neteq_universal_new.rtp";
   // Note that neteq4_universal_ref.pcm and neteq4_universal_ref_win_32.pcm
@@ -1052,19 +1055,19 @@
   }
 };
 
-TEST_F(NetEqBgnTestOn, RunTest) {
+TEST_F(NetEqBgnTestOn, DISABLED_ON_IOS(RunTest)) {
   CheckBgn(8000);
   CheckBgn(16000);
   CheckBgn(32000);
 }
 
-TEST_F(NetEqBgnTestOff, RunTest) {
+TEST_F(NetEqBgnTestOff, DISABLED_ON_IOS(RunTest)) {
   CheckBgn(8000);
   CheckBgn(16000);
   CheckBgn(32000);
 }
 
-TEST_F(NetEqBgnTestFade, RunTest) {
+TEST_F(NetEqBgnTestFade, DISABLED_ON_IOS(RunTest)) {
   CheckBgn(8000);
   CheckBgn(16000);
   CheckBgn(32000);
diff --git a/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc b/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc
index 05385a1..dda7cc7 100644
--- a/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc
@@ -21,6 +21,7 @@
 #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
 #include "webrtc/modules/audio_coding/neteq/background_noise.h"
 #include "webrtc/modules/audio_coding/neteq/tools/input_audio_file.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 #include "webrtc/test/testsupport/fileutils.h"
 
 namespace webrtc {
@@ -108,7 +109,7 @@
   BackgroundNoise background_noise_;
 };
 
-TEST_F(TimeStretchTest, Accelerate) {
+TEST_F(TimeStretchTest, DISABLED_ON_IOS(Accelerate)) {
   // TestAccelerate returns the total length change in samples.
   EXPECT_EQ(15268, TestAccelerate(100, false));
   EXPECT_EQ(9, return_stats_[TimeStretch::kSuccess]);
@@ -116,7 +117,7 @@
   EXPECT_EQ(33, return_stats_[TimeStretch::kNoStretch]);
 }
 
-TEST_F(TimeStretchTest, AccelerateFastMode) {
+TEST_F(TimeStretchTest, DISABLED_ON_IOS(AccelerateFastMode)) {
   // TestAccelerate returns the total length change in samples.
   EXPECT_EQ(21400, TestAccelerate(100, true));
   EXPECT_EQ(31, return_stats_[TimeStretch::kSuccess]);
diff --git a/webrtc/modules/audio_processing/agc/histogram_unittest.cc b/webrtc/modules/audio_processing/agc/histogram_unittest.cc
index d41aaca..0b05ca9 100644
--- a/webrtc/modules/audio_processing/agc/histogram_unittest.cc
+++ b/webrtc/modules/audio_processing/agc/histogram_unittest.cc
@@ -17,6 +17,7 @@
 
 #include "gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 #include "webrtc/modules/audio_processing/agc/utility.h"
 
 namespace webrtc {
@@ -89,13 +90,13 @@
   fclose(in_file);
 }
 
-TEST_F(HistogramTest, ActiveCircularBuffer) {
+TEST_F(HistogramTest, DISABLED_ON_IOS(ActiveCircularBuffer)) {
   RunTest(true,
           test::ResourcePath("audio_processing/agc/agc_with_circular_buffer",
                              "dat").c_str());
 }
 
-TEST_F(HistogramTest, InactiveCircularBuffer) {
+TEST_F(HistogramTest, DISABLED_ON_IOS(InactiveCircularBuffer)) {
   RunTest(false,
           test::ResourcePath("audio_processing/agc/agc_no_circular_buffer",
                              "dat").c_str());
diff --git a/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc b/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc
index 3ec0baa..6526019 100644
--- a/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc
+++ b/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc
@@ -16,10 +16,11 @@
 
 #include "gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
-TEST(PitchBasedVadTest, VoicingProbabilityTest) {
+TEST(PitchBasedVadTest, DISABLED_ON_IOS(VoicingProbabilityTest)) {
   std::string spectral_peak_file_name = test::ResourcePath(
       "audio_processing/agc/agc_spectral_peak", "dat");
   FILE* spectral_peak_file = fopen(spectral_peak_file_name.c_str(), "rb");
diff --git a/webrtc/modules/audio_processing/agc/standalone_vad_unittest.cc b/webrtc/modules/audio_processing/agc/standalone_vad_unittest.cc
index 3887828..a8caaae 100644
--- a/webrtc/modules/audio_processing/agc/standalone_vad_unittest.cc
+++ b/webrtc/modules/audio_processing/agc/standalone_vad_unittest.cc
@@ -16,6 +16,7 @@
 #include "webrtc/base/scoped_ptr.h"
 #include "webrtc/modules/interface/module_common_types.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -54,7 +55,7 @@
   EXPECT_EQ(kMode, vad->mode());
 }
 
-TEST(StandaloneVadTest, ActivityDetection) {
+TEST(StandaloneVadTest, DISABLED_ON_IOS(ActivityDetection)) {
   rtc::scoped_ptr<StandaloneVad> vad(StandaloneVad::Create());
   const size_t kDataLength = kLength10Ms;
   int16_t data[kDataLength] = { 0 };
diff --git a/webrtc/modules/audio_processing/transient/file_utils_unittest.cc b/webrtc/modules/audio_processing/transient/file_utils_unittest.cc
index 8507d90..a5240f8 100644
--- a/webrtc/modules/audio_processing/transient/file_utils_unittest.cc
+++ b/webrtc/modules/audio_processing/transient/file_utils_unittest.cc
@@ -17,6 +17,7 @@
 #include "webrtc/base/scoped_ptr.h"
 #include "webrtc/system_wrappers/interface/file_wrapper.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 #include "webrtc/typedefs.h"
 
 namespace webrtc {
@@ -58,7 +59,7 @@
   const std::string kTestFileNamef;
 };
 
-TEST_F(TransientFileUtilsTest, ConvertByteArrayToFloat) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ConvertByteArrayToFloat)) {
   float value = 0.0;
 
   EXPECT_EQ(0, ConvertByteArrayToFloat(kPiBytesf, &value));
@@ -71,7 +72,7 @@
   EXPECT_FLOAT_EQ(kAvogadro, value);
 }
 
-TEST_F(TransientFileUtilsTest, ConvertByteArrayToDouble) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ConvertByteArrayToDouble)) {
   double value = 0.0;
 
   EXPECT_EQ(0, ConvertByteArrayToDouble(kPiBytes, &value));
@@ -84,7 +85,7 @@
   EXPECT_DOUBLE_EQ(kAvogadro, value);
 }
 
-TEST_F(TransientFileUtilsTest, ConvertFloatToByteArray) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ConvertFloatToByteArray)) {
   rtc::scoped_ptr<uint8_t[]> bytes(new uint8_t[4]);
 
   EXPECT_EQ(0, ConvertFloatToByteArray(kPi, bytes.get()));
@@ -97,7 +98,7 @@
   EXPECT_EQ(0, memcmp(bytes.get(), kAvogadroBytesf, 4));
 }
 
-TEST_F(TransientFileUtilsTest, ConvertDoubleToByteArray) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ConvertDoubleToByteArray)) {
   rtc::scoped_ptr<uint8_t[]> bytes(new uint8_t[8]);
 
   EXPECT_EQ(0, ConvertDoubleToByteArray(kPi, bytes.get()));
@@ -110,7 +111,7 @@
   EXPECT_EQ(0, memcmp(bytes.get(), kAvogadroBytes, 8));
 }
 
-TEST_F(TransientFileUtilsTest, ReadInt16BufferFromFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ReadInt16BufferFromFile)) {
   std::string test_filename = kTestFileName;
 
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
@@ -148,7 +149,8 @@
   EXPECT_EQ(17631, buffer[kBufferLength - 1]);
 }
 
-TEST_F(TransientFileUtilsTest, ReadInt16FromFileToFloatBuffer) {
+TEST_F(TransientFileUtilsTest,
+       DISABLED_ON_IOS(ReadInt16FromFileToFloatBuffer)) {
   std::string test_filename = kTestFileName;
 
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
@@ -189,7 +191,8 @@
   EXPECT_DOUBLE_EQ(17631, buffer[kBufferLength - 1]);
 }
 
-TEST_F(TransientFileUtilsTest, ReadInt16FromFileToDoubleBuffer) {
+TEST_F(TransientFileUtilsTest,
+       DISABLED_ON_IOS(ReadInt16FromFileToDoubleBuffer)) {
   std::string test_filename = kTestFileName;
 
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
@@ -229,7 +232,7 @@
   EXPECT_DOUBLE_EQ(17631, buffer[kBufferLength - 1]);
 }
 
-TEST_F(TransientFileUtilsTest, ReadFloatBufferFromFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ReadFloatBufferFromFile)) {
   std::string test_filename = kTestFileNamef;
 
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
@@ -266,7 +269,7 @@
   EXPECT_FLOAT_EQ(kAvogadro, buffer[2]);
 }
 
-TEST_F(TransientFileUtilsTest, ReadDoubleBufferFromFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ReadDoubleBufferFromFile)) {
   std::string test_filename = kTestFileName;
 
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
@@ -303,7 +306,7 @@
   EXPECT_DOUBLE_EQ(kAvogadro, buffer[2]);
 }
 
-TEST_F(TransientFileUtilsTest, WriteInt16BufferToFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(WriteInt16BufferToFile)) {
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
 
   std::string kOutFileName = test::TempFilename(test::OutputPath(),
@@ -345,7 +348,7 @@
                       kBufferLength * sizeof(written_buffer[0])));
 }
 
-TEST_F(TransientFileUtilsTest, WriteFloatBufferToFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(WriteFloatBufferToFile)) {
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
 
   std::string kOutFileName = test::TempFilename(test::OutputPath(),
@@ -387,7 +390,7 @@
                       kBufferLength * sizeof(written_buffer[0])));
 }
 
-TEST_F(TransientFileUtilsTest, WriteDoubleBufferToFile) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(WriteDoubleBufferToFile)) {
   rtc::scoped_ptr<FileWrapper> file(FileWrapper::Create());
 
   std::string kOutFileName = test::TempFilename(test::OutputPath(),
@@ -429,7 +432,7 @@
                       kBufferLength * sizeof(written_buffer[0])));
 }
 
-TEST_F(TransientFileUtilsTest, ExpectedErrorReturnValues) {
+TEST_F(TransientFileUtilsTest, DISABLED_ON_IOS(ExpectedErrorReturnValues)) {
   std::string test_filename = kTestFileName;
 
   double value;
diff --git a/webrtc/modules/audio_processing/transient/transient_detector_unittest.cc b/webrtc/modules/audio_processing/transient/transient_detector_unittest.cc
index 16a7915..c45aaa8 100644
--- a/webrtc/modules/audio_processing/transient/transient_detector_unittest.cc
+++ b/webrtc/modules/audio_processing/transient/transient_detector_unittest.cc
@@ -19,7 +19,8 @@
 #include "webrtc/modules/audio_processing/transient/file_utils.h"
 #include "webrtc/system_wrappers/interface/file_wrapper.h"
 #include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc/typedefs.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
+ #include "webrtc/typedefs.h"
 
 namespace webrtc {
 
@@ -36,7 +37,7 @@
 // The files contain all the results in double precision (Little endian).
 // The audio files used with different sample rates are stored in the same
 // directory.
-TEST(TransientDetectorTest, CorrectnessBasedOnFiles) {
+TEST(TransientDetectorTest, DISABLED_ON_IOS(CorrectnessBasedOnFiles)) {
   for (size_t i = 0; i < kNumberOfSampleRates; ++i) {
     int sample_rate_hz = kSampleRatesHz[i];
 
diff --git a/webrtc/modules/audio_processing/transient/wpd_tree_unittest.cc b/webrtc/modules/audio_processing/transient/wpd_tree_unittest.cc
index dd5b5c8..f242f93 100644
--- a/webrtc/modules/audio_processing/transient/wpd_tree_unittest.cc
+++ b/webrtc/modules/audio_processing/transient/wpd_tree_unittest.cc
@@ -19,6 +19,7 @@
 #include "webrtc/modules/audio_processing/transient/file_utils.h"
 #include "webrtc/system_wrappers/interface/file_wrapper.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -68,7 +69,7 @@
 // It also writes the results in its own set of files in the out directory.
 // Matlab and output files contain all the results in double precision (Little
 // endian) appended.
-TEST(WPDTreeTest, CorrectnessBasedOnMatlabFiles) {
+TEST(WPDTreeTest, DISABLED_ON_IOS(CorrectnessBasedOnMatlabFiles)) {
   // 10 ms at 16000 Hz.
   const size_t kTestBufferSize = 160;
   const int kLevels = 3;
diff --git a/webrtc/modules/media_file/source/media_file_unittest.cc b/webrtc/modules/media_file/source/media_file_unittest.cc
index ea6b953..c21843c 100644
--- a/webrtc/modules/media_file/source/media_file_unittest.cc
+++ b/webrtc/modules/media_file/source/media_file_unittest.cc
@@ -28,7 +28,8 @@
   webrtc::MediaFile* media_file_;
 };
 
-TEST_F(MediaFileTest, DISABLED_ON_ANDROID(StartPlayingAudioFileWithoutError)) {
+TEST_F(MediaFileTest, DISABLED_ON_IOS(
+       DISABLED_ON_ANDROID(StartPlayingAudioFileWithoutError))) {
   // TODO(leozwang): Use hard coded filename here, we want to
   // loop through all audio files in future
   const std::string audio_file = webrtc::test::ProjectRootPath() +
@@ -46,7 +47,7 @@
   ASSERT_EQ(0, media_file_->StopPlaying());
 }
 
-TEST_F(MediaFileTest, WriteWavFile) {
+TEST_F(MediaFileTest, DISABLED_ON_IOS(WriteWavFile)) {
   // Write file.
   static const size_t kHeaderSize = 44;
   static const size_t kPayloadSize = 320;
diff --git a/webrtc/modules/utility/source/file_player_unittests.cc b/webrtc/modules/utility/source/file_player_unittests.cc
index 7ce9d47..c5f6fba 100644
--- a/webrtc/modules/utility/source/file_player_unittests.cc
+++ b/webrtc/modules/utility/source/file_player_unittests.cc
@@ -20,6 +20,7 @@
 #include "webrtc/base/md5digest.h"
 #include "webrtc/base/stringencode.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 DEFINE_bool(file_player_output, false, "Generate reference files.");
 
@@ -81,7 +82,7 @@
   FILE* output_file_;
 };
 
-TEST_F(FilePlayerTest, PlayWavPcmuFile) {
+TEST_F(FilePlayerTest, DISABLED_ON_IOS(PlayWavPcmuFile)) {
   const std::string kFileName =
       test::ResourcePath("utility/encapsulated_pcmu_8khz", "wav");
   // The file is longer than this, but keeping the output shorter limits the
@@ -92,7 +93,7 @@
   PlayFileAndCheck(kFileName, kRefChecksum, kOutputLengthMs);
 }
 
-TEST_F(FilePlayerTest, PlayWavPcm16File) {
+TEST_F(FilePlayerTest, DISABLED_ON_IOS(PlayWavPcm16File)) {
   const std::string kFileName =
       test::ResourcePath("utility/encapsulated_pcm16b_8khz", "wav");
   // The file is longer than this, but keeping the output shorter limits the
diff --git a/webrtc/modules/video_coding/main/source/video_sender_unittest.cc b/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
index c7c2e81..fe1ea98 100644
--- a/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
+++ b/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
@@ -386,7 +386,7 @@
 };
 
 TEST_F(TestVideoSenderWithVp8,
-       DISABLED_ON_ANDROID(FixedTemporalLayersStrategy)) {
+       DISABLED_ON_IOS(DISABLED_ON_ANDROID(FixedTemporalLayersStrategy))) {
   const int low_b = codec_bitrate_kbps_ * kVp8LayerRateAlloction[2][0];
   const int mid_b = codec_bitrate_kbps_ * kVp8LayerRateAlloction[2][1];
   const int high_b = codec_bitrate_kbps_ * kVp8LayerRateAlloction[2][2];
@@ -401,7 +401,7 @@
 }
 
 TEST_F(TestVideoSenderWithVp8,
-       DISABLED_ON_ANDROID(RealTimeTemporalLayersStrategy)) {
+       DISABLED_ON_IOS(DISABLED_ON_ANDROID(RealTimeTemporalLayersStrategy))) {
   Config extra_options;
   extra_options.Set<TemporalLayers::Factory>(
       new RealTimeTemporalLayersFactory());
diff --git a/webrtc/modules/video_processing/main/test/unit_test/brightness_detection_test.cc b/webrtc/modules/video_processing/main/test/unit_test/brightness_detection_test.cc
index 8e15d64..4d0de3a 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/brightness_detection_test.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/brightness_detection_test.cc
@@ -11,10 +11,11 @@
 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
 #include "webrtc/modules/video_processing/main/interface/video_processing.h"
 #include "webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 using namespace webrtc;
 
-TEST_F(VideoProcessingModuleTest, BrightnessDetection)
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(BrightnessDetection))
 {
     uint32_t frameNum = 0;
     int32_t brightnessWarning = 0;
diff --git a/webrtc/modules/video_processing/main/test/unit_test/content_metrics_test.cc b/webrtc/modules/video_processing/main/test/unit_test/content_metrics_test.cc
index 8a2404f..d9c1309 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/content_metrics_test.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/content_metrics_test.cc
@@ -12,10 +12,11 @@
 #include "webrtc/modules/video_processing/main/interface/video_processing.h"
 #include "webrtc/modules/video_processing/main/source/content_analysis.h"
 #include "webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
-TEST_F(VideoProcessingModuleTest, ContentAnalysis) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(ContentAnalysis)) {
   VPMContentAnalysis    ca__c(false);
   VPMContentAnalysis    ca__sse(true);
   VideoContentMetrics  *_cM_c, *_cM_SSE;
diff --git a/webrtc/modules/video_processing/main/test/unit_test/deflickering_test.cc b/webrtc/modules/video_processing/main/test/unit_test/deflickering_test.cc
index 2a260d2..f270813 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/deflickering_test.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/deflickering_test.cc
@@ -16,10 +16,11 @@
 #include "webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.h"
 #include "webrtc/system_wrappers/interface/tick_util.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
-TEST_F(VideoProcessingModuleTest, Deflickering)
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(Deflickering))
 {
     enum { NumRuns = 30 };
     uint32_t frameNum = 0;
diff --git a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
index e17223f..5e74ec0 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
@@ -16,6 +16,7 @@
 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
 #include "webrtc/system_wrappers/interface/tick_util.h"
 #include "webrtc/test/testsupport/fileutils.h"
+#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -93,7 +94,7 @@
   vpm_ = NULL;
 }
 
-TEST_F(VideoProcessingModuleTest, HandleNullBuffer) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(HandleNullBuffer)) {
   // TODO(mikhal/stefan): Do we need this one?
   VideoProcessingModule::FrameStats stats;
   // Video frame with unallocated buffer.
@@ -106,7 +107,7 @@
   EXPECT_EQ(-3, vpm_->BrightnessDetection(videoFrame, stats));
 }
 
-TEST_F(VideoProcessingModuleTest, HandleBadStats) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(HandleBadStats)) {
   VideoProcessingModule::FrameStats stats;
   rtc::scoped_ptr<uint8_t[]> video_buffer(new uint8_t[frame_length_]);
   ASSERT_EQ(frame_length_, fread(video_buffer.get(), 1, frame_length_,
@@ -119,7 +120,7 @@
   EXPECT_EQ(-3, vpm_->BrightnessDetection(video_frame_, stats));
 }
 
-TEST_F(VideoProcessingModuleTest, IdenticalResultsAfterReset) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(IdenticalResultsAfterReset)) {
   VideoFrame video_frame2;
   VideoProcessingModule::FrameStats stats;
   // Only testing non-static functions here.
@@ -149,7 +150,7 @@
   EXPECT_TRUE(CompareFrames(video_frame_, video_frame2));
 }
 
-TEST_F(VideoProcessingModuleTest, FrameStats) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(FrameStats)) {
   VideoProcessingModule::FrameStats stats;
   rtc::scoped_ptr<uint8_t[]> video_buffer(new uint8_t[frame_length_]);
   ASSERT_EQ(frame_length_, fread(video_buffer.get(), 1, frame_length_,
@@ -174,7 +175,7 @@
   EXPECT_FALSE(vpm_->ValidFrameStats(stats));
 }
 
-TEST_F(VideoProcessingModuleTest, PreprocessorLogic) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(PreprocessorLogic)) {
   // Disable temporal sampling (frame dropping).
   vpm_->EnableTemporalDecimation(false);
   int resolution = 100;
@@ -194,7 +195,7 @@
   EXPECT_TRUE(out_frame == NULL);
 }
 
-TEST_F(VideoProcessingModuleTest, Resampler) {
+TEST_F(VideoProcessingModuleTest, DISABLED_ON_IOS(Resampler)) {
   enum { NumRuns = 1 };
 
   int64_t min_runtime = 0;
diff --git a/webrtc/test/testsupport/gtest_disable.h b/webrtc/test/testsupport/gtest_disable.h
index 257d836..fdc56ac 100644
--- a/webrtc/test/testsupport/gtest_disable.h
+++ b/webrtc/test/testsupport/gtest_disable.h
@@ -36,10 +36,22 @@
 #define DISABLED_ON_WIN(test) test
 #endif
 
+// Using some extra magic here to be able to chain Android and iOS macros.
+// http://stackoverflow.com/questions/8231966/why-do-i-need-double-layer-of-indirection-for-macros
 #ifdef WEBRTC_ANDROID
-#define DISABLED_ON_ANDROID(test) DISABLED_##test
+#define DISABLED_ON_ANDROID_HIDDEN(test) DISABLED_##test
+#define DISABLED_ON_ANDROID(test) DISABLED_ON_ANDROID_HIDDEN(test)
 #else
-#define DISABLED_ON_ANDROID(test) test
+#define DISABLED_ON_ANDROID_HIDDEN(test) test
+#define DISABLED_ON_ANDROID(test) DISABLED_ON_ANDROID_HIDDEN(test)
+#endif
+
+#ifdef WEBRTC_IOS
+#define DISABLED_ON_IOS_HIDDEN(test) DISABLED_##test
+#define DISABLED_ON_IOS(test) DISABLED_ON_IOS_HIDDEN(test)
+#else
+#define DISABLED_ON_IOS_HIDDEN(test) test
+#define DISABLED_ON_IOS(test) DISABLED_ON_IOS_HIDDEN(test)
 #endif
 
 #endif  // TEST_TESTSUPPORT_INCLUDE_GTEST_DISABLE_H_