Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Unified Diff: ios/chrome/browser/native_app_launcher/native_app_navigation_controller_unittest.mm

Issue 2897213002: Removed NativeAppNavigationController and related code (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/native_app_launcher/native_app_navigation_controller_unittest.mm
diff --git a/ios/chrome/browser/native_app_launcher/native_app_navigation_controller_unittest.mm b/ios/chrome/browser/native_app_launcher/native_app_navigation_controller_unittest.mm
deleted file mode 100644
index 0607c78083f9b212766da3401b2041ebe71e6c4f..0000000000000000000000000000000000000000
--- a/ios/chrome/browser/native_app_launcher/native_app_navigation_controller_unittest.mm
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-#include "base/metrics/user_metrics.h"
-#include "base/strings/utf_string_conversions.h"
-#include "ios/chrome/browser/infobars/infobar_manager_impl.h"
-#import "ios/chrome/browser/installation_notifier.h"
-#include "ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h"
-#import "ios/chrome/browser/native_app_launcher/native_app_navigation_controller.h"
-#import "ios/chrome/browser/web/chrome_web_test.h"
-#include "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h"
-#import "ios/public/provider/chrome/browser/native_app_launcher/fake_native_app_metadata.h"
-#import "ios/public/provider/chrome/browser/native_app_launcher/fake_native_app_whitelist_manager.h"
-#include "ios/public/provider/chrome/browser/test_chrome_browser_provider.h"
-#import "testing/gtest_mac.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-@interface NativeAppNavigationController (Testing)
-- (void)recordInfobarDisplayedOfType:(NativeAppControllerType)type
- onLinkNavigation:(BOOL)isLinkNavigation;
-- (NSMutableSet*)appsPossiblyBeingInstalled;
-- (void)removeAppFromNotification:(NSNotification*)notification;
-@end
-
-namespace {
-
-class FakeChromeBrowserProvider : public ios::TestChromeBrowserProvider {
- public:
- FakeChromeBrowserProvider(FakeNativeAppWhitelistManager* fake_manager) {
- manager_ = fake_manager;
- }
- ~FakeChromeBrowserProvider() override {}
-
- id<NativeAppWhitelistManager> GetNativeAppWhitelistManager() const override {
- return manager_;
- }
-
- private:
- id<NativeAppWhitelistManager> manager_;
-};
-
-class NativeAppNavigationControllerTest : public ChromeWebTest {
- protected:
- void SetUp() override {
- ChromeWebTest::SetUp();
- controller_ =
- [[NativeAppNavigationController alloc] initWithWebState:web_state()];
-
- action_callback_ =
- base::Bind(&NativeAppNavigationControllerTest::OnUserAction,
- base::Unretained(this));
- base::AddActionCallback(action_callback_);
-
- handler_called_counter_ = 0;
- }
-
- void TearDown() override {
- base::RemoveActionCallback(action_callback_);
- ChromeWebTest::TearDown();
- }
-
- void SetExpectedActionName(const std::string& action_name) {
- expected_action_name_.reset(new std::string(action_name));
- }
-
- void OnUserAction(const std::string& action_name) {
- EXPECT_EQ(*expected_action_name_, action_name);
- handler_called_counter_++;
- }
-
- void ExpectHandlerCalledAndReset(int number_of_calls) {
- EXPECT_EQ(number_of_calls, handler_called_counter_);
- handler_called_counter_ = 0;
- }
-
- NativeAppNavigationController* controller_;
-
- // The callback to invoke when an action is recorded.
- base::ActionCallback action_callback_;
- std::unique_ptr<std::string> expected_action_name_;
- int handler_called_counter_;
-};
-
-TEST_F(NativeAppNavigationControllerTest, TestConstructor) {
- EXPECT_TRUE(controller_);
-}
-
-TEST_F(NativeAppNavigationControllerTest, TestUMA) {
- SetExpectedActionName("MobileGALInstallInfoBarLinkNavigation");
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_INSTALLER_CONTROLLER
- onLinkNavigation:YES];
- ExpectHandlerCalledAndReset(1);
-
- SetExpectedActionName("MobileGALInstallInfoBarDirectNavigation");
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_INSTALLER_CONTROLLER
- onLinkNavigation:NO];
- ExpectHandlerCalledAndReset(1);
-
- SetExpectedActionName("MobileGALLaunchInfoBar");
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_LAUNCHER_CONTROLLER
- onLinkNavigation:YES];
- ExpectHandlerCalledAndReset(1);
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_LAUNCHER_CONTROLLER
- onLinkNavigation:NO];
- ExpectHandlerCalledAndReset(1);
-
- SetExpectedActionName("MobileGALOpenPolicyInfoBar");
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_OPEN_POLICY_CONTROLLER
- onLinkNavigation:YES];
- ExpectHandlerCalledAndReset(1);
- [controller_ recordInfobarDisplayedOfType:NATIVE_APP_OPEN_POLICY_CONTROLLER
- onLinkNavigation:NO];
- ExpectHandlerCalledAndReset(1);
-}
-
-// Tests presenting NativeAppInfoBar after page is loaded.
-TEST_F(NativeAppNavigationControllerTest, NativeAppInfoBar) {
- SetExpectedActionName("MobileGALInstallInfoBarDirectNavigation");
- InfoBarManagerImpl::CreateForWebState(web_state());
-
- // Set up fake metadata.
- FakeNativeAppWhitelistManager* fakeManager =
- [[FakeNativeAppWhitelistManager alloc] init];
- IOSChromeScopedTestingChromeBrowserProvider provider(
- base::MakeUnique<FakeChromeBrowserProvider>(fakeManager));
- FakeNativeAppMetadata* metadata = [[FakeNativeAppMetadata alloc] init];
- fakeManager.metadata = metadata;
- metadata.appName = @"App";
- metadata.appId = @"App-ID";
-
- // Load the page to trigger infobar presentation.
- LoadHtml(@"<html><body></body></html>", GURL("http://test.com"));
-
- // Verify that infobar was presented
- auto* infobar_manager = InfoBarManagerImpl::FromWebState(web_state());
- ASSERT_EQ(1U, infobar_manager->infobar_count());
- infobars::InfoBar* infobar = infobar_manager->infobar_at(0);
- auto* delegate = infobar->delegate()->AsNativeAppInfoBarDelegate();
- ASSERT_TRUE(delegate);
-
- // Verify infobar appearance.
- EXPECT_EQ("Open this page in the App app?",
- base::UTF16ToUTF8(delegate->GetInstallText()));
- EXPECT_EQ("Open this page in the App app?",
- base::UTF16ToUTF8(delegate->GetLaunchText()));
- EXPECT_EQ("Open in App", base::UTF16ToUTF8(delegate->GetOpenPolicyText()));
- EXPECT_EQ("Just once", base::UTF16ToUTF8(delegate->GetOpenOnceText()));
- EXPECT_EQ("Always", base::UTF16ToUTF8(delegate->GetOpenAlwaysText()));
- EXPECT_NSEQ(@"App-ID", delegate->GetAppId());
-}
-
-TEST_F(NativeAppNavigationControllerTest,
- TestRemovingAppFromListAfterInstallation) {
- NSString* const kMapsAppName = @"Maps";
- NSString* const kMapsAppId = @"1";
- NSString* const kYoutubeAppName = @"Youtube";
- NSString* const kYoutubeAppId = @"2";
-
- InstallationNotifier* installationNotifier =
- [[InstallationNotifier alloc] init];
-
- FakeNativeAppWhitelistManager* fakeManager =
- [[FakeNativeAppWhitelistManager alloc] init];
- IOSChromeScopedTestingChromeBrowserProvider provider(
- base::MakeUnique<FakeChromeBrowserProvider>(fakeManager));
-
- FakeNativeAppMetadata* metadataMaps = [[FakeNativeAppMetadata alloc] init];
- [metadataMaps setAppName:kMapsAppName];
- [metadataMaps setAppId:kMapsAppId];
- ASSERT_TRUE(metadataMaps);
- NSString* appIdMaps = [metadataMaps appId];
- NSNotification* notificationMaps =
- [NSNotification notificationWithName:kMapsAppName
- object:installationNotifier];
-
- FakeNativeAppMetadata* metadataYouTube = [[FakeNativeAppMetadata alloc] init];
- [metadataYouTube setAppName:kYoutubeAppName];
- [metadataYouTube setAppId:kYoutubeAppId];
-
- ASSERT_TRUE(metadataYouTube);
- NSString* appIdYouTube = [metadataYouTube appId];
- NSNotification* notificationYouTube =
- [NSNotification notificationWithName:kYoutubeAppName
- object:installationNotifier];
-
- DCHECK([[controller_ appsPossiblyBeingInstalled] count] == 0);
- [[controller_ appsPossiblyBeingInstalled] addObject:appIdMaps];
- DCHECK([[controller_ appsPossiblyBeingInstalled] count] == 1);
- [[controller_ appsPossiblyBeingInstalled] addObject:appIdYouTube];
- DCHECK([[controller_ appsPossiblyBeingInstalled] count] == 2);
- [fakeManager setAppScheme:kMapsAppName];
- [controller_ removeAppFromNotification:notificationMaps];
- DCHECK([[controller_ appsPossiblyBeingInstalled] count] == 1);
- [fakeManager setAppScheme:kYoutubeAppName];
- [controller_ removeAppFromNotification:notificationYouTube];
- DCHECK([[controller_ appsPossiblyBeingInstalled] count] == 0);
-}
-
-} // namespace

Powered by Google App Engine
This is Rietveld 408576698