Skip to content

Commit

Permalink
Merge pull request #135 from hotwired/expose-visitable-webview-lifecycle
Browse files Browse the repository at this point in the history
Expose web view activation/deactivation in Visitable
  • Loading branch information
svara authored Aug 7, 2023
2 parents 71d921a + c65e25c commit 312f369
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 1 deletion.
13 changes: 13 additions & 0 deletions Source/Visitable/Visitable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public protocol Visitable: AnyObject {
func visitableDidRender()
func showVisitableActivityIndicator()
func hideVisitableActivityIndicator()

func visitableDidActivateWebView(_ webView: WKWebView)
func visitableDidDeactivateWebView()
}

extension Visitable {
Expand All @@ -31,13 +34,23 @@ extension Visitable {
public func hideVisitableActivityIndicator() {
visitableView.hideActivityIndicator()
}

public func visitableDidActivateWebView(_ webView: WKWebView) {
// No-op
}

public func visitableDidDeactivateWebView() {
// No-op
}

func activateVisitableWebView(_ webView: WKWebView) {
visitableView.activateWebView(webView, forVisitable: self)
visitableDidActivateWebView(webView)
}

func deactivateVisitableWebView() {
visitableView.deactivateWebView()
visitableDidDeactivateWebView()
}

func updateVisitableScreenshot() {
Expand Down
9 changes: 9 additions & 0 deletions Source/Visitable/VisitableViewController.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import UIKit
import WebKit

open class VisitableViewController: UIViewController, Visitable {
open weak var visitableDelegate: VisitableDelegate?
Expand Down Expand Up @@ -41,6 +42,14 @@ open class VisitableViewController: UIViewController, Visitable {
visitableView.hideActivityIndicator()
}

open func visitableDidActivateWebView(_ webView: WKWebView) {
// No-op
}

open func visitableDidDeactivateWebView() {
// No-op
}

// MARK: Visitable View

open private(set) lazy var visitableView: VisitableView! = {
Expand Down
2 changes: 1 addition & 1 deletion Tests/SessionSpec.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import Nimble
import GCDWebServers
@testable import Turbo

private let timeout = DispatchTimeInterval.seconds(15)
private let timeout = DispatchTimeInterval.seconds(35)

class SessionSpec: QuickSpec {
let server = GCDWebServer()
Expand Down
11 changes: 11 additions & 0 deletions Tests/Test.swift
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import UIKit
import WebKit
@testable import Turbo

class TestVisitable: UIViewController, Visitable {
// MARK: - Tests
var visitableDidRenderCalled = false
var visitableDidActivateWebViewWasCalled = false
var visitableDidDeactivateWebViewWasCalled = false

// MARK: - Visitable
var visitableDelegate: VisitableDelegate?
Expand All @@ -23,6 +26,14 @@ class TestVisitable: UIViewController, Visitable {
func visitableDidRender() {
visitableDidRenderCalled = true
}

func visitableDidActivateWebView(_ webView: WKWebView) {
visitableDidActivateWebViewWasCalled = true
}

func visitableDidDeactivateWebView() {
visitableDidDeactivateWebViewWasCalled = true
}
}

class TestSessionDelegate: NSObject, SessionDelegate {
Expand Down

0 comments on commit 312f369

Please sign in to comment.