mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
124 lines
5.6 KiB
Swift
124 lines
5.6 KiB
Swift
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import Foundation
|
|
import WebKit
|
|
|
|
/// This test should be disabled since getTopViewController() crashes with iOS 10
|
|
/// ------------------------------------------------------------------------------
|
|
/// Set of tests that wait for weak references to views to be cleared. Technically, this is
|
|
/// non-deterministic and there are no guarantees the references will be set to nil. In practice,
|
|
/// though, the references are consistently cleared, which should be good enough for testing.
|
|
class ViewMemoryLeakTests: KIFTestCase, UITextFieldDelegate {
|
|
fileprivate var webRoot: String!
|
|
|
|
override func setUp() {
|
|
webRoot = SimplePageServer.start()
|
|
}
|
|
|
|
override func tearDown() {
|
|
do {
|
|
try tester().tryFindingTappableView(withAccessibilityLabel: "home")
|
|
tester().tapView(withAccessibilityLabel: "home")
|
|
} catch _ {
|
|
}
|
|
BrowserUtils.resetToAboutHome(tester())
|
|
}
|
|
/*
|
|
func testAboutHomeDisposed() {
|
|
// about:home is already active on startup; grab a reference to it.
|
|
let browserViewController = getTopViewController()
|
|
weak var aboutHomeController = getChildViewController(browserViewController, childClass: "HomePanelViewController")
|
|
|
|
// Change the page to make about:home go away.
|
|
tester().tapViewWithAccessibilityIdentifier("url")
|
|
let url = "\(webRoot)/numberedPage.html?page=1"
|
|
|
|
// Work around potential KIF bug. The nillification does not seem to propagate unless we use and explicit autorelease pool.
|
|
// https://github.com/kif-framework/KIF/issues/739
|
|
autoreleasepool {
|
|
tester().clearTextFromAndThenEnterTextIntoCurrentFirstResponder("\(url)\n")
|
|
}
|
|
|
|
tester().waitForWebViewElementWithAccessibilityLabel("Page 1")
|
|
|
|
|
|
tester().runBlock { _ in
|
|
return (aboutHomeController == nil) ? KIFTestStepResult.Success : KIFTestStepResult.Wait
|
|
}
|
|
XCTAssertNil(aboutHomeController, "about:home controller disposed")
|
|
}
|
|
|
|
func testSearchViewControllerDisposed() {
|
|
// Type the URL to make the search controller appear.
|
|
tester().tapViewWithAccessibilityIdentifier("url")
|
|
tester().clearTextFromAndThenEnterTextIntoCurrentFirstResponder("foobar")
|
|
tester().waitForTimeInterval(0.1) // Wait to make sure that input has propagated through delegate methods
|
|
let browserViewController = getTopViewController()
|
|
weak var searchViewController = getChildViewController(browserViewController, childClass: "SearchViewController")
|
|
XCTAssertNotNil(searchViewController, "Got search controller reference")
|
|
|
|
// Submit to close about:home and the search controller.
|
|
tester().enterTextIntoCurrentFirstResponder("\n")
|
|
|
|
tester().runBlock { _ in
|
|
return (searchViewController == nil) ? KIFTestStepResult.Success : KIFTestStepResult.Wait
|
|
}
|
|
XCTAssertNil(searchViewController, "Search controller disposed")
|
|
}
|
|
|
|
func testTabTrayDisposed() {
|
|
// Enter the tab tray.
|
|
tester().tapViewWithAccessibilityLabel("Show Tabs")
|
|
tester().waitForViewWithAccessibilityLabel("Tabs Tray")
|
|
weak var tabTrayController = getTopViewController()
|
|
weak var tabCell = tester().waitForTappableViewWithAccessibilityLabel("home")
|
|
XCTAssertNotNil(tabTrayController, "Got tab tray reference")
|
|
XCTAssertNotNil(tabCell, "Got tab cell reference")
|
|
|
|
// Leave the tab tray.
|
|
tester().tapViewWithAccessibilityLabel("home")
|
|
|
|
tester().runBlock { _ in
|
|
return (tabTrayController == nil) ? KIFTestStepResult.Success : KIFTestStepResult.Wait
|
|
}
|
|
XCTAssertNil(tabTrayController, "Tab tray controller disposed")
|
|
|
|
tester().runBlock { _ in
|
|
return (tabCell == nil) ? KIFTestStepResult.Success : KIFTestStepResult.Wait
|
|
}
|
|
XCTAssertNil(tabCell, "Tab tray cell disposed")
|
|
}
|
|
|
|
func testWebViewDisposed() {
|
|
weak var webView = tester().waitForViewWithAccessibilityLabel("Web content")
|
|
XCTAssertNotNil(webView, "webView found")
|
|
|
|
tester().tapViewWithAccessibilityLabel("Show Tabs")
|
|
let tabsView = tester().waitForViewWithAccessibilityLabel("Tabs Tray").subviews.first as! UICollectionView
|
|
let cell = tabsView.cellForItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0))!
|
|
tester().swipeViewWithAccessibilityLabel(cell.accessibilityLabel, inDirection: KIFSwipeDirection.Left)
|
|
tester().waitForTappableViewWithAccessibilityLabel("Show Tabs")
|
|
|
|
tester().runBlock { _ in
|
|
return (webView == nil) ? KIFTestStepResult.Success : KIFTestStepResult.Wait
|
|
}
|
|
XCTAssertNil(webView, "webView disposed")
|
|
}
|
|
|
|
private func getTopViewController() -> UIViewController {
|
|
//return (UIApplication.sharedApplication().keyWindow!.rootViewController as! UINavigationController).topViewController!
|
|
return UIApplication.sharedApplication().keyWindow!.rootViewController!
|
|
}
|
|
|
|
private func getChildViewController(parent: UIViewController, childClass: String) -> UIViewController {
|
|
let childControllers = parent.childViewControllers.filter { child in
|
|
let description = NSString(string: child.description)
|
|
return description.containsString(childClass)
|
|
}
|
|
XCTAssertEqual(childControllers.count, 0, "Found 1 child controller of type: \(childClass)")
|
|
return childControllers.first!
|
|
}
|
|
*/
|
|
}
|