Module: Turbo::Session::NavigationDelegateMethods

Included in:
Turbo::Session
Defined in:
lib/turbo/session/navigation_delegate_methods.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

Returns the value of attribute navigationAction.



5
6
7
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 5

def navigationAction
  @navigationAction
end

Instance Method Details

#externallyOpenableURLObject



22
23
24
25
26
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 22

def externallyOpenableURL
  if url = navigationAction.request.url && shouldOpenURLExternally
    url
  end
end

#isMainFrameNavigationObject



38
39
40
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 38

def isMainFrameNavigation
  navigationAction.targetFrame.isMainFrame if navigationAction.targetFrame
end

#policyObject



18
19
20
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 18

def policy
  navigationAction.navigationType == WKNavigationTypeLinkActivated || isMainFrameNavigation ? WKNavigationResponsePolicyCancel : WKNavigationResponsePolicyAllow
end

#shouldOpenURLExternallyObject



28
29
30
31
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 28

def shouldOpenURLExternally
  type = navigationAction.navigationType
  return type == WKNavigationTypeLinkActivated || (isMainFrameNavigation && type == WKNavigationTypeOther)
end

#shouldReloadPageObject



33
34
35
36
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 33

def shouldReloadPage
  type = navigationAction.navigationType
  return isMainFrameNavigation && type == WKNavigationTypeReload
end

#webView(webview, decidePolicyForNavigationAction: navigationAction, decisionHandler: decisionHandler) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/turbo/session/navigation_delegate_methods.rb', line 7

def webView(webview, decidePolicyForNavigationAction: navigationAction, decisionHandler: decisionHandler)
  navigationDecision = NavigationDecision(navigationAction: navigationAction)
  decisionHandler(navigationDecision.policy)

  if url = navigationDecision.externallyOpenableURL
    openExternalURL(url)
  elsif navigationDecision.shouldReloadPage
    reload
  end
end