@@ -62,11 +62,9 @@ const char* kAdMobAppID = "ca-app-pub-3940256099942544~1458002511";
62
62
#if defined(__ANDROID__)
63
63
const char * kBannerAdUnit = " ca-app-pub-3940256099942544/6300978111" ;
64
64
const char * kInterstitialAdUnit = " ca-app-pub-3940256099942544/1033173712" ;
65
- const char * kRewardedVideoAdUnit = " ca-app-pub-3940256099942544/5224354917" ;
66
65
#else
67
66
const char * kBannerAdUnit = " ca-app-pub-3940256099942544/2934735716" ;
68
67
const char * kInterstitialAdUnit = " ca-app-pub-3940256099942544/4411468910" ;
69
- const char * kRewardedVideoAdUnit = " ca-app-pub-3940256099942544/1712485313" ;
70
68
#endif
71
69
72
70
using app_framework::LogDebug;
@@ -108,11 +106,11 @@ void FirebaseAdMobTest::SetUpTestSuite() {
108
106
LogDebug (" Initializing AdMob." );
109
107
110
108
::firebase::ModuleInitializer initializer;
111
- initializer.Initialize (
112
- shared_app_, nullptr , [](::firebase::App* app, void * /* userdata */ ) {
113
- LogDebug (" Try to initialize AdMob" );
114
- return ::firebase::admob::Initialize (*app, kAdMobAppID );
115
- });
109
+ initializer.Initialize (shared_app_, nullptr ,
110
+ [](::firebase::App* app, void * /* userdata */ ) {
111
+ LogDebug (" Try to initialize AdMob" );
112
+ return ::firebase::admob::Initialize (*app);
113
+ });
116
114
117
115
WaitForCompletion (initializer.InitializeLastResult (), " Initialize" );
118
116
@@ -147,31 +145,11 @@ firebase::admob::AdRequest FirebaseAdMobTest::GetAdRequest() {
147
145
// Sample keywords to use in making the request.
148
146
static const char * kKeywords [] = {" AdMob" , " C++" , " Fun" };
149
147
150
- // Sample birthday value to use in making the request.
151
- static const int kBirthdayDay = 10 ;
152
- static const int kBirthdayMonth = 11 ;
153
- static const int kBirthdayYear = 1976 ;
154
-
155
148
// Sample test device IDs to use in making the request.
156
149
static const char * kTestDeviceIDs [] = {" 2077ef9a63d2b398840261c8221a0c9b" ,
157
150
" 098fe087d987c9a878965454a65654d7" };
158
151
159
152
firebase::admob::AdRequest request;
160
- // If the app is aware of the user's gender, it can be added to the targeting
161
- // information. Otherwise, "unknown" should be used.
162
- request.gender = firebase::admob::kGenderUnknown ;
163
-
164
- // This value allows publishers to specify whether they would like the request
165
- // to be treated as child-directed for purposes of the Children’s Online
166
- // Privacy Protection Act (COPPA).
167
- // See http://business.ftc.gov/privacy-and-security/childrens-privacy.
168
- request.tagged_for_child_directed_treatment =
169
- firebase::admob::kChildDirectedTreatmentStateTagged ;
170
-
171
- // The user's birthday, if known. Note that months are indexed from one.
172
- request.birthday_day = kBirthdayDay ;
173
- request.birthday_month = kBirthdayMonth ;
174
- request.birthday_year = kBirthdayYear ;
175
153
176
154
// Additional keywords to be used in targeting.
177
155
request.keyword_count = sizeof (kKeywords ) / sizeof (kKeywords [0 ]);
@@ -199,7 +177,6 @@ firebase::admob::AdRequest FirebaseAdMobTest::GetAdRequest() {
199
177
}
200
178
201
179
// Test cases below.
202
-
203
180
TEST_F (FirebaseAdMobTest, TestGetAdRequest) { GetAdRequest (); }
204
181
205
182
// A simple listener to help test changes to a BannerView.
@@ -332,8 +309,8 @@ TEST_F(FirebaseAdMobTest, TestBannerView) {
332
309
WaitForCompletion (banner->Hide (), " Hide 2" );
333
310
expected_presentation_states.push_back (
334
311
firebase::admob::BannerView::kPresentationStateHidden );
335
-
336
312
delete banner;
313
+
337
314
expected_presentation_states.push_back (
338
315
firebase::admob::BannerView::kPresentationStateHidden );
339
316
expected_num_bounding_box_changes++;
@@ -376,6 +353,47 @@ TEST_F(FirebaseAdMobTest, TestBannerView) {
376
353
#endif
377
354
}
378
355
356
+ TEST_F (FirebaseAdMobTest, TestBannerViewAlreadyInitialized) {
357
+ SKIP_TEST_ON_DESKTOP;
358
+
359
+ static const int kBannerWidth = 320 ;
360
+ static const int kBannerHeight = 50 ;
361
+
362
+ firebase::admob::AdSize banner_ad_size;
363
+ banner_ad_size.ad_size_type = firebase::admob::kAdSizeStandard ;
364
+ banner_ad_size.width = kBannerWidth ;
365
+ banner_ad_size.height = kBannerHeight ;
366
+
367
+ firebase::admob::BannerView* banner = new firebase::admob::BannerView ();
368
+
369
+ {
370
+ firebase::Future<void > first_initialize = banner->Initialize (
371
+ app_framework::GetWindowContext (), kBannerAdUnit , banner_ad_size);
372
+ firebase::Future<void > second_initialize = banner->Initialize (
373
+ app_framework::GetWindowContext (), kBannerAdUnit , banner_ad_size);
374
+
375
+ WaitForCompletion (second_initialize, " Second Initialize 1" ,
376
+ firebase::admob::kAdMobErrorAlreadyInitialized );
377
+ WaitForCompletion (first_initialize, " First Initialize 1" );
378
+ delete banner;
379
+ }
380
+
381
+ // Reverse the order completion waits.
382
+ {
383
+ banner = new firebase::admob::BannerView ();
384
+
385
+ firebase::Future<void > first_initialize = banner->Initialize (
386
+ app_framework::GetWindowContext (), kBannerAdUnit , banner_ad_size);
387
+ firebase::Future<void > second_initialize = banner->Initialize (
388
+ app_framework::GetWindowContext (), kBannerAdUnit , banner_ad_size);
389
+
390
+ WaitForCompletion (first_initialize, " First Initialize - reverse test" );
391
+ WaitForCompletion (second_initialize, " Second Initialize - reverse test" ,
392
+ firebase::admob::kAdMobErrorAlreadyInitialized );
393
+ delete banner;
394
+ }
395
+ }
396
+
379
397
// A simple listener to help test changes to a InterstitialAd.
380
398
class TestInterstitialAdListener
381
399
: public firebase::admob::InterstitialAd::Listener {
@@ -394,18 +412,20 @@ TEST_F(FirebaseAdMobTest, TestInterstitialAd) {
394
412
395
413
firebase::admob::InterstitialAd* interstitial =
396
414
new firebase::admob::InterstitialAd ();
415
+
397
416
WaitForCompletion (interstitial->Initialize (app_framework::GetWindowContext (),
398
417
kInterstitialAdUnit ),
399
418
" Initialize" );
419
+
400
420
TestInterstitialAdListener interstitial_listener;
401
421
interstitial->SetListener (&interstitial_listener);
402
422
403
423
firebase::admob::AdRequest request = GetAdRequest ();
404
424
// When the InterstitialAd is initialized, load an ad.
405
425
WaitForCompletion (interstitial->LoadAd (request), " LoadAd" );
426
+
406
427
std::vector<firebase::admob::InterstitialAd::PresentationState>
407
428
expected_presentation_states;
408
-
409
429
WaitForCompletion (interstitial->Show (), " Show" );
410
430
expected_presentation_states.push_back (
411
431
firebase::admob::InterstitialAd::PresentationState::
@@ -416,6 +436,7 @@ TEST_F(FirebaseAdMobTest, TestInterstitialAd) {
416
436
kPresentationStateHidden ) {
417
437
app_framework::ProcessEvents (1000 );
418
438
}
439
+
419
440
expected_presentation_states.push_back (
420
441
firebase::admob::InterstitialAd::PresentationState::
421
442
kPresentationStateHidden );
@@ -426,78 +447,6 @@ TEST_F(FirebaseAdMobTest, TestInterstitialAd) {
426
447
delete interstitial;
427
448
}
428
449
429
- // A simple listener to help test changes to rewarded video state.
430
- class TestRewardedVideoListener
431
- : public firebase::admob::rewarded_video::Listener {
432
- public:
433
- TestRewardedVideoListener () { got_reward_ = false ; }
434
- void OnRewarded (firebase::admob::rewarded_video::RewardItem reward) override {
435
- got_reward_ = true ;
436
- reward_type_ = reward.reward_type ;
437
- reward_amount_ = reward.amount ;
438
- }
439
- void OnPresentationStateChanged (
440
- firebase::admob::rewarded_video::PresentationState state) override {
441
- presentation_states_.push_back (state);
442
- }
443
- bool got_reward_;
444
- std::string reward_type_;
445
- float reward_amount_;
446
- std::vector<firebase::admob::rewarded_video::PresentationState>
447
- presentation_states_;
448
- };
449
-
450
- TEST_F (FirebaseAdMobTest, TestRewardedVideoAd) {
451
- TEST_REQUIRES_USER_INTERACTION;
452
-
453
- namespace rewarded_video = firebase::admob::rewarded_video;
454
- WaitForCompletion (rewarded_video::Initialize (), " Initialize" );
455
-
456
- TestRewardedVideoListener rewarded_listener;
457
- rewarded_video::SetListener (&rewarded_listener);
458
-
459
- firebase::admob::AdRequest request = GetAdRequest ();
460
- WaitForCompletion (rewarded_video::LoadAd (kRewardedVideoAdUnit , request),
461
- " LoadAd" );
462
-
463
- std::vector<rewarded_video::PresentationState> expected_presentation_states;
464
-
465
- WaitForCompletion (rewarded_video::Show (app_framework::GetWindowContext ()),
466
- " Show" );
467
-
468
- expected_presentation_states.push_back (
469
- rewarded_video::PresentationState::kPresentationStateCoveringUI );
470
- expected_presentation_states.push_back (
471
- rewarded_video::PresentationState::kPresentationStateVideoHasStarted );
472
-
473
- // Wait a moment, then pause, then resume.
474
- ProcessEvents (1000 );
475
- WaitForCompletion (rewarded_video::Pause (), " Pause" );
476
- ProcessEvents (1000 );
477
- WaitForCompletion (rewarded_video::Resume (), " Resume" );
478
-
479
- #if defined(__ANDROID__) || TARGET_OS_IPHONE
480
- // Wait for video to complete.
481
- while (
482
- rewarded_listener.presentation_states_ .back () !=
483
- rewarded_video::PresentationState::kPresentationStateVideoHasCompleted ) {
484
- ProcessEvents (1000 );
485
- }
486
- expected_presentation_states.push_back (
487
- rewarded_video::PresentationState::kPresentationStateVideoHasCompleted );
488
-
489
- EXPECT_TRUE (rewarded_listener.got_reward_ );
490
- EXPECT_NE (rewarded_listener.reward_type_ , " " );
491
- EXPECT_NE (rewarded_listener.reward_amount_ , 0 );
492
- LogDebug (" Got reward: %.02f %s" , rewarded_listener.reward_amount_ ,
493
- rewarded_listener.reward_type_ .c_str ());
494
-
495
- EXPECT_EQ (rewarded_listener.presentation_states_ ,
496
- expected_presentation_states);
497
- #endif
498
- rewarded_video::Destroy ();
499
- }
500
-
501
450
#if defined(ANDROID) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
502
451
// Test runs & compiles for phones only.
503
452
0 commit comments