Adds support for webrtc::test::ResourcePath on iOS

BUG=webrtc:4752
R=tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9445}
diff --git a/talk/app/webrtc/objc/RTCDataChannel.mm b/talk/app/webrtc/objc/RTCDataChannel.mm
index 94d22d2..4fb03c2 100644
--- a/talk/app/webrtc/objc/RTCDataChannel.mm
+++ b/talk/app/webrtc/objc/RTCDataChannel.mm
@@ -57,7 +57,8 @@
 };
 }
 
-// TODO(tkchin): move to shared location
+// TODO(henrika): move to shared location.
+// See https://code.google.com/p/webrtc/issues/detail?id=4773 for details.
 NSString* NSStringFromStdString(const std::string& stdString) {
   // std::string may contain null termination character so we construct
   // using length.
diff --git a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
index 068d2e1..0d1c670 100644
--- a/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc
@@ -11,7 +11,6 @@
 
 #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 {
@@ -62,14 +61,14 @@
 }
 
 // Test failing Create.
-TEST_F(CngTest, DISABLED_ON_IOS(CngCreateFail)) {
+TEST_F(CngTest, 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, DISABLED_ON_IOS(CngCreate)) {
+TEST_F(CngTest, CngCreate) {
   EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
   EXPECT_EQ(0, WebRtcCng_CreateDec(&cng_dec_inst_));
   EXPECT_TRUE(cng_enc_inst_ != NULL);
@@ -80,7 +79,7 @@
 }
 
 // Create CNG encoder, init with faulty values, free CNG encoder.
-TEST_F(CngTest, DISABLED_ON_IOS(CngInitFail)) {
+TEST_F(CngTest, CngInitFail) {
   // Create encoder memory.
   EXPECT_EQ(0, WebRtcCng_CreateEnc(&cng_enc_inst_));
 
@@ -98,7 +97,7 @@
   EXPECT_EQ(0, WebRtcCng_FreeEnc(cng_enc_inst_));
 }
 
-TEST_F(CngTest, DISABLED_ON_IOS(CngEncode)) {
+TEST_F(CngTest, CngEncode) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -150,7 +149,7 @@
 }
 
 // Encode Cng with too long input vector.
-TEST_F(CngTest, DISABLED_ON_IOS(CngEncodeTooLong)) {
+TEST_F(CngTest, CngEncodeTooLong) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -169,7 +168,7 @@
 }
 
 // Call encode without calling init.
-TEST_F(CngTest, DISABLED_ON_IOS(CngEncodeNoInit)) {
+TEST_F(CngTest, CngEncodeNoInit) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -186,7 +185,7 @@
 }
 
 // Update SID parameters, for both 9 and 16 parameters.
-TEST_F(CngTest, DISABLED_ON_IOS(CngUpdateSid)) {
+TEST_F(CngTest, CngUpdateSid) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -223,7 +222,7 @@
 }
 
 // Update SID parameters, with wrong parameters or without calling decode.
-TEST_F(CngTest, DISABLED_ON_IOS(CngUpdateSidErroneous)) {
+TEST_F(CngTest, CngUpdateSidErroneous) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -259,7 +258,7 @@
 }
 
 // Test to generate cng data, by forcing SID. Both normal and faulty condition.
-TEST_F(CngTest, DISABLED_ON_IOS(CngGenerate)) {
+TEST_F(CngTest, CngGenerate) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t out_data[640];
   int16_t number_bytes;
@@ -293,7 +292,7 @@
 }
 
 // Test automatic SID.
-TEST_F(CngTest, DISABLED_ON_IOS(CngAutoSid)) {
+TEST_F(CngTest, CngAutoSid) {
   uint8_t sid_data[WEBRTC_CNG_MAX_LPC_ORDER + 1];
   int16_t number_bytes;
 
@@ -320,7 +319,7 @@
 }
 
 // Test automatic SID, with very short interval.
-TEST_F(CngTest, DISABLED_ON_IOS(CngAutoSidShort)) {
+TEST_F(CngTest, 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 73efee1..a751c24 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,7 +12,6 @@
 #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;
 
@@ -55,24 +54,24 @@
 }
 
 // Test failing Create.
-TEST_F(IsacTest, DISABLED_ON_IOS(IsacCreateFail)) {
+TEST_F(IsacTest, IsacCreateFail) {
   // Test to see that an invalid pointer is caught.
   EXPECT_EQ(-1, WebRtcIsac_Create(NULL));
 }
 
 // Test failing Free.
-TEST_F(IsacTest, DISABLED_ON_IOS(IsacFreeFail)) {
+TEST_F(IsacTest, IsacFreeFail) {
   // Test to see that free function doesn't crash.
   EXPECT_EQ(0, WebRtcIsac_Free(NULL));
 }
 
 // Test normal Create and Free.
-TEST_F(IsacTest, DISABLED_ON_IOS(IsacCreateFree)) {
+TEST_F(IsacTest, IsacCreateFree) {
   EXPECT_EQ(0, WebRtcIsac_Create(&isac_codec_));
   EXPECT_TRUE(isac_codec_ != NULL);
   EXPECT_EQ(0, WebRtcIsac_Free(isac_codec_));}
 
-TEST_F(IsacTest, DISABLED_ON_IOS(IsacUpdateBWE)) {
+TEST_F(IsacTest, 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 028d2ec..e218a6b 100644
--- a/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc
@@ -14,7 +14,6 @@
 #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 {
 
@@ -248,7 +247,7 @@
 }
 
 // Test failing Create.
-TEST(OpusTest, DISABLED_ON_IOS(OpusCreateFail)) {
+TEST(OpusTest, OpusCreateFail) {
   WebRtcOpusEncInst* opus_encoder;
   WebRtcOpusDecInst* opus_decoder;
 
@@ -265,14 +264,14 @@
 }
 
 // Test failing Free.
-TEST(OpusTest, DISABLED_ON_IOS(OpusFreeFail)) {
+TEST(OpusTest, 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, DISABLED_ON_IOS(OpusCreateFree)) {
+TEST_P(OpusTest, OpusCreateFree) {
   EXPECT_EQ(0, WebRtcOpus_EncoderCreate(&opus_encoder_,
                                         channels_,
                                         application_));
@@ -284,7 +283,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusEncodeDecode)) {
+TEST_P(OpusTest, OpusEncodeDecode) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -322,7 +321,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetBitRate)) {
+TEST_P(OpusTest, OpusSetBitRate) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetBitRate(opus_encoder_, 60000));
 
@@ -358,7 +357,7 @@
 
 // Encode and decode one frame, initialize the decoder and
 // decode once more.
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodeInit)) {
+TEST_P(OpusTest, OpusDecodeInit) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -388,7 +387,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusEnableDisableFec)) {
+TEST_P(OpusTest, OpusEnableDisableFec) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_EnableFec(opus_encoder_));
   EXPECT_EQ(-1, WebRtcOpus_DisableFec(opus_encoder_));
@@ -405,7 +404,7 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusEnableDisableDtx)) {
+TEST_P(OpusTest, OpusEnableDisableDtx) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_EnableDtx(opus_encoder_));
   EXPECT_EQ(-1, WebRtcOpus_DisableDtx(opus_encoder_));
@@ -439,15 +438,15 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDtxOff)) {
+TEST_P(OpusTest, OpusDtxOff) {
   TestDtxEffect(false);
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDtxOn)) {
+TEST_P(OpusTest, OpusDtxOn) {
   TestDtxEffect(true);
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetPacketLossRate)) {
+TEST_P(OpusTest, OpusSetPacketLossRate) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetPacketLossRate(opus_encoder_, 50));
 
@@ -464,7 +463,7 @@
   EXPECT_EQ(0, WebRtcOpus_EncoderFree(opus_encoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusSetMaxPlaybackRate)) {
+TEST_P(OpusTest, OpusSetMaxPlaybackRate) {
   // Test without creating encoder memory.
   EXPECT_EQ(-1, WebRtcOpus_SetMaxPlaybackRate(opus_encoder_, 20000));
 
@@ -489,7 +488,7 @@
 }
 
 // Test PLC.
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodePlc)) {
+TEST_P(OpusTest, OpusDecodePlc) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create encoder memory.
@@ -526,7 +525,7 @@
 }
 
 // Duration estimation.
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDurationEstimation)) {
+TEST_P(OpusTest, OpusDurationEstimation) {
   PrepareSpeechData(channels_, 20, 20);
 
   // Create.
@@ -560,7 +559,7 @@
   EXPECT_EQ(0, WebRtcOpus_DecoderFree(opus_decoder_));
 }
 
-TEST_P(OpusTest, DISABLED_ON_IOS(OpusDecodeRepacketized)) {
+TEST_P(OpusTest, 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 e5fcee3..eea51a3 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,18 +503,12 @@
   test::AudioLoop audio_loop_;
 };
 
-#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) {
+TEST_F(AcmIsacMtTest, 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.
+// Disabling all of these tests on iOS for now.
+// See https://code.google.com/p/webrtc/issues/detail?id=4768 for details.
 #if !defined(WEBRTC_IOS)
 
 class AcmReceiverBitExactness : public ::testing::Test {
diff --git a/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
index 188f727..e4db3a3 100644
--- a/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc
@@ -18,7 +18,6 @@
 
 #include "testing/gtest/include/gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
@@ -61,13 +60,13 @@
   fclose(data_file);
 }
 
-TEST(AudioClassifierTest, DISABLED_ON_IOS(DoAnalysisMono)) {
+TEST(AudioClassifierTest, DoAnalysisMono) {
   RunAnalysisTest(test::ResourcePath("short_mixed_mono_48", "pcm"),
                   test::ResourcePath("short_mixed_mono_48", "dat"),
                   1);
 }
 
-TEST(AudioClassifierTest, DISABLED_ON_IOS(DoAnalysisStereo)) {
+TEST(AudioClassifierTest, 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 bf68b3b..6f57a4a 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc
@@ -17,7 +17,6 @@
 #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 {
 
@@ -234,7 +233,7 @@
   int16_t output_[kMaxBlockSize];
 };
 
-TEST_F(NetEqExternalVsInternalDecoderTest, DISABLED_ON_IOS(RunTest)) {
+TEST_F(NetEqExternalVsInternalDecoderTest, RunTest) {
   RunTest(100);  // Run 100 laps @ 10 ms each in the test loop.
 }
 
@@ -329,7 +328,7 @@
   int16_t output_[kMaxBlockSize];
 };
 
-TEST_F(LargeTimestampJumpTest, DISABLED_ON_IOS(JumpLongerThanHalfRange)) {
+TEST_F(LargeTimestampJumpTest, 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.
@@ -353,8 +352,7 @@
   EXPECT_EQ(kRecovered, test_state_);
 }
 
-TEST_F(LargeTimestampJumpTest,
-       DISABLED_ON_IOS(JumpLongerThanHalfRangeAndWrap)) {
+TEST_F(LargeTimestampJumpTest, 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;
@@ -413,7 +411,7 @@
   }
 };
 
-TEST_F(ShortTimestampJumpTest, DISABLED_ON_IOS(JumpShorterThanHalfRange)) {
+TEST_F(ShortTimestampJumpTest, 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;
@@ -437,8 +435,7 @@
   EXPECT_EQ(kRecovered, test_state_);
 }
 
-TEST_F(ShortTimestampJumpTest,
-       DISABLED_ON_IOS(JumpShorterThanHalfRangeAndWrap)) {
+TEST_F(ShortTimestampJumpTest, 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 8a66262..7137a68 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
@@ -438,8 +438,6 @@
   *payload_len = 1;  // Only noise level, no spectral parameters.
 }
 
-// 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() +
@@ -1056,19 +1054,19 @@
   }
 };
 
-TEST_F(NetEqBgnTestOn, DISABLED_ON_IOS(RunTest)) {
+TEST_F(NetEqBgnTestOn, RunTest) {
   CheckBgn(8000);
   CheckBgn(16000);
   CheckBgn(32000);
 }
 
-TEST_F(NetEqBgnTestOff, DISABLED_ON_IOS(RunTest)) {
+TEST_F(NetEqBgnTestOff, RunTest) {
   CheckBgn(8000);
   CheckBgn(16000);
   CheckBgn(32000);
 }
 
-TEST_F(NetEqBgnTestFade, DISABLED_ON_IOS(RunTest)) {
+TEST_F(NetEqBgnTestFade, 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 dda7cc7..05385a1 100644
--- a/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc
@@ -21,7 +21,6 @@
 #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 {
@@ -109,7 +108,7 @@
   BackgroundNoise background_noise_;
 };
 
-TEST_F(TimeStretchTest, DISABLED_ON_IOS(Accelerate)) {
+TEST_F(TimeStretchTest, Accelerate) {
   // TestAccelerate returns the total length change in samples.
   EXPECT_EQ(15268, TestAccelerate(100, false));
   EXPECT_EQ(9, return_stats_[TimeStretch::kSuccess]);
@@ -117,7 +116,7 @@
   EXPECT_EQ(33, return_stats_[TimeStretch::kNoStretch]);
 }
 
-TEST_F(TimeStretchTest, DISABLED_ON_IOS(AccelerateFastMode)) {
+TEST_F(TimeStretchTest, 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 0b05ca9..d41aaca 100644
--- a/webrtc/modules/audio_processing/agc/histogram_unittest.cc
+++ b/webrtc/modules/audio_processing/agc/histogram_unittest.cc
@@ -17,7 +17,6 @@
 
 #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 {
@@ -90,13 +89,13 @@
   fclose(in_file);
 }
 
-TEST_F(HistogramTest, DISABLED_ON_IOS(ActiveCircularBuffer)) {
+TEST_F(HistogramTest, ActiveCircularBuffer) {
   RunTest(true,
           test::ResourcePath("audio_processing/agc/agc_with_circular_buffer",
                              "dat").c_str());
 }
 
-TEST_F(HistogramTest, DISABLED_ON_IOS(InactiveCircularBuffer)) {
+TEST_F(HistogramTest, 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 6526019..3ec0baa 100644
--- a/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc
+++ b/webrtc/modules/audio_processing/agc/pitch_based_vad_unittest.cc
@@ -16,11 +16,10 @@
 
 #include "gtest/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc/test/testsupport/gtest_disable.h"
 
 namespace webrtc {
 
-TEST(PitchBasedVadTest, DISABLED_ON_IOS(VoicingProbabilityTest)) {
+TEST(PitchBasedVadTest, 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/modules.gyp b/webrtc/modules/modules.gyp
index 753c800..e29f683 100644
--- a/webrtc/modules/modules.gyp
+++ b/webrtc/modules/modules.gyp
@@ -345,6 +345,23 @@
                 'audio_device/android/fine_audio_buffer_unittest.cc',
               ],
             }],
+            ['OS=="ios"', {
+              'mac_bundle_resources': [
+                '<(DEPTH)/resources/audio_coding/speech_mono_16kHz.pcm',
+                '<(DEPTH)/resources/audio_coding/testfile32kHz.pcm',
+                '<(DEPTH)/resources/audio_coding/teststereo32kHz.pcm',
+                '<(DEPTH)/resources/audio_processing/agc/agc_no_circular_buffer.dat',
+                '<(DEPTH)/resources/audio_processing/agc/agc_pitch_gain.dat',
+                '<(DEPTH)/resources/audio_processing/agc/agc_pitch_lag.dat',
+                '<(DEPTH)/resources/audio_processing/agc/agc_spectral_peak.dat',
+                '<(DEPTH)/resources/audio_processing/agc/agc_voicing_prob.dat',
+                '<(DEPTH)/resources/audio_processing/agc/agc_with_circular_buffer.dat',
+                '<(DEPTH)/resources/short_mixed_mono_48.dat',
+                '<(DEPTH)/resources/short_mixed_mono_48.pcm',
+                '<(DEPTH)/resources/short_mixed_stereo_48.dat',
+                '<(DEPTH)/resources/short_mixed_stereo_48.pcm',
+              ],
+            }],
           ],
           # Disable warnings to enable Win64 build, issue 1323.
           'msvs_disabled_warnings': [
diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp
index ea831a1..a19288e 100644
--- a/webrtc/test/test.gyp
+++ b/webrtc/test/test.gyp
@@ -124,6 +124,7 @@
         'testsupport/frame_writer.cc',
         'testsupport/frame_writer.h',
         'testsupport/gtest_disable.h',
+        'testsupport/iosfileutils.mm',
         'testsupport/mock/mock_frame_reader.h',
         'testsupport/mock/mock_frame_writer.h',
         'testsupport/packet_reader.cc',
@@ -133,6 +134,13 @@
         'testsupport/trace_to_stderr.cc',
         'testsupport/trace_to_stderr.h',
       ],
+      'conditions': [
+        ['OS=="ios"', {
+          'xcode_settings': {
+            'CLANG_ENABLE_OBJC_ARC': 'YES',
+          },
+        }],
+      ],
     },
     {
       # Depend on this target when you want to have test_support but also the
diff --git a/webrtc/test/testsupport/fileutils.cc b/webrtc/test/testsupport/fileutils.cc
index 8301e77..c29e502 100644
--- a/webrtc/test/testsupport/fileutils.cc
+++ b/webrtc/test/testsupport/fileutils.cc
@@ -41,6 +41,11 @@
 namespace webrtc {
 namespace test {
 
+#if defined(WEBRTC_IOS)
+// Defined in iosfileutils.mm.  No header file to discourage use elsewhere.
+std::string IOSResourcePath(std::string name, std::string extension);
+#endif
+
 namespace {
 
 #ifdef WIN32
@@ -57,7 +62,9 @@
 const char* kOutputDirName = "out";
 const char* kFallbackPath = "./";
 #endif
+#if !defined(WEBRTC_IOS)
 const char* kResourcesDirName = "resources";
+#endif
 
 char relative_dir_path[FILENAME_MAX];
 bool relative_dir_path_set = false;
@@ -205,6 +212,9 @@
 }
 
 std::string ResourcePath(std::string name, std::string extension) {
+#if defined(WEBRTC_IOS)
+  return IOSResourcePath(name, extension);
+#else
   std::string platform = "win";
 #ifdef WEBRTC_LINUX
   platform = "linux";
@@ -239,6 +249,7 @@
 
   // Fall back on name without architecture or platform.
   return resources_path + name + "." + extension;
+#endif  // defined (WEBRTC_IOS)
 }
 
 size_t GetFileSize(std::string filename) {
diff --git a/webrtc/test/testsupport/iosfileutils.mm b/webrtc/test/testsupport/iosfileutils.mm
new file mode 100644
index 0000000..f3615ed
--- /dev/null
+++ b/webrtc/test/testsupport/iosfileutils.mm
@@ -0,0 +1,60 @@
+/*
+ *  Copyright 2015 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#if defined(WEBRTC_IOS)
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+#import <Foundation/Foundation.h>
+#include <string.h>
+
+#include "webrtc/base/checks.h"
+#include "webrtc/typedefs.h"
+
+namespace webrtc {
+namespace test {
+
+// TODO(henrika): move to shared location.
+// See https://code.google.com/p/webrtc/issues/detail?id=4773 for details.
+NSString* NSStringFromStdString(const std::string& stdString) {
+  // std::string may contain null termination character so we construct
+  // using length.
+  return [[NSString alloc] initWithBytes:stdString.data()
+                                  length:stdString.length()
+                                encoding:NSUTF8StringEncoding];
+}
+
+std::string StdStringFromNSString(NSString* nsString) {
+  NSData* charData = [nsString dataUsingEncoding:NSUTF8StringEncoding];
+  return std::string(reinterpret_cast<const char*>([charData bytes]),
+                     [charData length]);
+}
+
+// For iOS, resource files are added to the application bundle in the root
+// and not in separate folders as is the case for other platforms. This method
+// therefore removes any prepended folders and uses only the actual file name.
+std::string IOSResourcePath(std::string name, std::string extension) {
+  @autoreleasepool {
+    NSString* path = NSStringFromStdString(name);
+    NSString* fileName = path.lastPathComponent;
+    NSString* fileType = NSStringFromStdString(extension);
+    // Get full pathname for the resource identified by the name and extension.
+    NSString* pathString = [[NSBundle mainBundle] pathForResource:fileName
+                                                           ofType:fileType];
+    return StdStringFromNSString(pathString);
+  }
+}
+
+}  // namespace test
+}  // namespace webrtc
+
+#endif  // defined(WEBRTC_IOS)