Skip to content

Commit

Permalink
Revert bc90c50. rdar://problem/102292977
Browse files Browse the repository at this point in the history
  • Loading branch information
alancoon committed Nov 14, 2022
1 parent 0189004 commit dc9ff15
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 60 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -51,7 +51,7 @@ class NavigationSOAuthorizationSession : public SOAuthorizationSession, private
protected:
using Callback = CompletionHandler<void(bool)>;

NavigationSOAuthorizationSession(Ref<API::NavigationAction>&&, WebPageProxy&, InitiatingAction, Callback&&);
NavigationSOAuthorizationSession(SOAuthorization *, Ref<API::NavigationAction>&&, WebPageProxy&, InitiatingAction, Callback&&);

void invokeCallback(bool intercepted) { m_callback(intercepted); }

Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -35,8 +35,8 @@

namespace WebKit {

NavigationSOAuthorizationSession::NavigationSOAuthorizationSession(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, InitiatingAction action, Callback&& completionHandler)
: SOAuthorizationSession(WTFMove(navigationAction), page, action)
NavigationSOAuthorizationSession::NavigationSOAuthorizationSession(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, InitiatingAction action, Callback&& completionHandler)
: SOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, action)
, m_callback(WTFMove(completionHandler))
{
}
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -45,13 +45,13 @@ class PopUpSOAuthorizationSession final : public SOAuthorizationSession {
using NewPageCallback = CompletionHandler<void(RefPtr<WebPageProxy>&&)>;
using UIClientCallback = Function<void(Ref<API::NavigationAction>&&, NewPageCallback&&)>;

static Ref<SOAuthorizationSession> create(WebPageProxy&, Ref<API::NavigationAction>&&, NewPageCallback&&, UIClientCallback&&);
static Ref<SOAuthorizationSession> create(SOAuthorization *soAuthorization, WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback);
~PopUpSOAuthorizationSession();

void close(WKWebView *);

private:
PopUpSOAuthorizationSession(WebPageProxy&, Ref<API::NavigationAction>&&, NewPageCallback&&, UIClientCallback&&);
PopUpSOAuthorizationSession(SOAuthorization *, WebPageProxy&, Ref<API::NavigationAction>&&, NewPageCallback&&, UIClientCallback&&);

void shouldStartInternal() final;
void fallBackToWebPathInternal() final;
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -94,13 +94,13 @@ - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigat

namespace WebKit {

Ref<SOAuthorizationSession> PopUpSOAuthorizationSession::create(WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback)
Ref<SOAuthorizationSession> PopUpSOAuthorizationSession::create(SOAuthorization *soAuthorization, WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback)
{
return adoptRef(*new PopUpSOAuthorizationSession(page, WTFMove(navigationAction), WTFMove(newPageCallback), WTFMove(uiClientCallback)));
return adoptRef(*new PopUpSOAuthorizationSession(soAuthorization, page, WTFMove(navigationAction), WTFMove(newPageCallback), WTFMove(uiClientCallback)));
}

PopUpSOAuthorizationSession::PopUpSOAuthorizationSession(WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback)
: SOAuthorizationSession(WTFMove(navigationAction), page, InitiatingAction::PopUp)
PopUpSOAuthorizationSession::PopUpSOAuthorizationSession(SOAuthorization *soAuthorization, WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, NewPageCallback&& newPageCallback, UIClientCallback&& uiClientCallback)
: SOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, InitiatingAction::PopUp)
, m_newPageCallback(WTFMove(newPageCallback))
, m_uiClientCallback(WTFMove(uiClientCallback))
{
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -35,10 +35,10 @@ class RedirectSOAuthorizationSession final : public NavigationSOAuthorizationSes
public:
using Callback = CompletionHandler<void(bool)>;

static Ref<SOAuthorizationSession> create(Ref<API::NavigationAction>&&, WebPageProxy&, Callback&& completionHandler);
static Ref<SOAuthorizationSession> create(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler);

private:
RedirectSOAuthorizationSession(Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&);
RedirectSOAuthorizationSession(SOAuthorization *, Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&);

// SOAuthorizationSession
void fallBackToWebPathInternal() final;
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -38,13 +38,13 @@
namespace WebKit {
using namespace WebCore;

Ref<SOAuthorizationSession> RedirectSOAuthorizationSession::create(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler)
Ref<SOAuthorizationSession> RedirectSOAuthorizationSession::create(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler)
{
return adoptRef(*new RedirectSOAuthorizationSession(WTFMove(navigationAction), page, WTFMove(completionHandler)));
return adoptRef(*new RedirectSOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, WTFMove(completionHandler)));
}

RedirectSOAuthorizationSession::RedirectSOAuthorizationSession(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler)
: NavigationSOAuthorizationSession(WTFMove(navigationAction), page, InitiatingAction::Redirect, WTFMove(completionHandler))
RedirectSOAuthorizationSession::RedirectSOAuthorizationSession(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler)
: NavigationSOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, InitiatingAction::Redirect, WTFMove(completionHandler))
{
}

Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -55,6 +55,7 @@
#endif
m_soAuthorization = adoptNS([PAL::allocSOAuthorizationInstance() init]);
m_soAuthorizationDelegate = adoptNS([[WKSOAuthorizationDelegate alloc] init]);
m_soAuthorization.get().delegate = m_soAuthorizationDelegate.get();
[NSURLSession _disableAppSSO];
}

Expand All @@ -81,7 +82,7 @@
return;
}

auto session = subframeNavigation ? SubFrameSOAuthorizationSession::create(WTFMove(navigationAction), page, WTFMove(completionHandler), targetFrame->handle()->frameID()) : RedirectSOAuthorizationSession::create(WTFMove(navigationAction), page, WTFMove(completionHandler));
auto session = subframeNavigation ? SubFrameSOAuthorizationSession::create(m_soAuthorization.get(), WTFMove(navigationAction), page, WTFMove(completionHandler), targetFrame->handle()->frameID()) : RedirectSOAuthorizationSession::create(m_soAuthorization.get(), WTFMove(navigationAction), page, WTFMove(completionHandler));
[m_soAuthorizationDelegate setSession:WTFMove(session)];
}

Expand All @@ -107,13 +108,12 @@
return;
}

auto session = PopUpSOAuthorizationSession::create(page, WTFMove(navigationAction), WTFMove(newPageCallback), WTFMove(uiClientCallback));
auto session = PopUpSOAuthorizationSession::create(m_soAuthorization.get(), page, WTFMove(navigationAction), WTFMove(newPageCallback), WTFMove(uiClientCallback));
[m_soAuthorizationDelegate setSession:WTFMove(session)];
}

} // namespace WebKit

#undef AUTHORIZATIONCOORDINATOR_RELEASE_LOG_ERROR
#undef AUTHORIZATIONCOORDINATOR_RELEASE_LOG

#endif
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -35,7 +35,6 @@
#include <wtf/WeakPtr.h>

OBJC_CLASS SOAuthorization;
OBJC_CLASS WKSOAuthorizationDelegate;

namespace API {
class NavigationAction;
Expand Down Expand Up @@ -64,8 +63,6 @@ class SOAuthorizationSession : public ThreadSafeRefCounted<SOAuthorizationSessio

virtual ~SOAuthorizationSession();

void setSOAuthorizationDelegate(WKSOAuthorizationDelegate *);

// Probably not start immediately.
void shouldStart();

Expand All @@ -90,7 +87,7 @@ class SOAuthorizationSession : public ThreadSafeRefCounted<SOAuthorizationSessio
Completed
};

SOAuthorizationSession(Ref<API::NavigationAction>&&, WebPageProxy&, InitiatingAction);
SOAuthorizationSession(SOAuthorization *, Ref<API::NavigationAction>&&, WebPageProxy&, InitiatingAction);

void start();
WebPageProxy* page() const { return m_page.get(); }
Expand All @@ -116,7 +113,7 @@ class SOAuthorizationSession : public ThreadSafeRefCounted<SOAuthorizationSessio
void continueStartAfterDecidePolicy(const SOAuthorizationLoadPolicy&);

State m_state { State::Idle };
RetainPtr<SOAuthorization> m_soAuthorization;
WeakObjCPtr<SOAuthorization *> m_soAuthorization;
RefPtr<API::NavigationAction> m_navigationAction;
WeakPtr<WebPageProxy> m_page;
InitiatingAction m_action;
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -34,8 +34,7 @@
#import "APIUIClient.h"
#import "Logging.h"
#import "SOAuthorizationLoadPolicy.h"
#import "WKSOAuthorizationDelegate.h"
#import "WKUIDelegatePrivate.h"
#import <WebKit/WKUIDelegatePrivate.h>
#import "WKWebViewInternal.h"
#import "WebPageProxy.h"
#import "WebsiteDataStore.h"
Expand Down Expand Up @@ -87,8 +86,8 @@ static bool isSameOrigin(const WebCore::ResourceRequest& request, const WebCore:

} // namespace

SOAuthorizationSession::SOAuthorizationSession(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, InitiatingAction action)
: m_soAuthorization(adoptNS([PAL::allocSOAuthorizationInstance() init]))
SOAuthorizationSession::SOAuthorizationSession(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, InitiatingAction action)
: m_soAuthorization(soAuthorization)
, m_navigationAction(WTFMove(navigationAction))
, m_page(page)
, m_action(action)
Expand All @@ -110,11 +109,6 @@ static bool isSameOrigin(const WebCore::ResourceRequest& request, const WebCore:
dismissViewController();
}

void SOAuthorizationSession::setSOAuthorizationDelegate(WKSOAuthorizationDelegate *delegate)
{
[m_soAuthorization setDelegate:delegate];
}

const char* SOAuthorizationSession::initiatingActionString() const
{
return toString(m_action);
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -42,14 +42,14 @@ class SubFrameSOAuthorizationSession final : public NavigationSOAuthorizationSes
using SOAuthorizationSession::WeakValueType;
using SOAuthorizationSession::WeakPtrImplType;

static Ref<SOAuthorizationSession> create(Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&, WebCore::FrameIdentifier);
static Ref<SOAuthorizationSession> create(SOAuthorization *, Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&, WebCore::FrameIdentifier);

~SubFrameSOAuthorizationSession();

private:
using Supplement = std::variant<Vector<uint8_t>, String>;

SubFrameSOAuthorizationSession(Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&, WebCore::FrameIdentifier);
SubFrameSOAuthorizationSession(SOAuthorization *, Ref<API::NavigationAction>&&, WebPageProxy&, Callback&&, WebCore::FrameIdentifier);

// SOAuthorizationSession
void fallBackToWebPathInternal() final;
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -47,13 +47,13 @@

} // namespace

Ref<SOAuthorizationSession> SubFrameSOAuthorizationSession::create(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler, FrameIdentifier frameID)
Ref<SOAuthorizationSession> SubFrameSOAuthorizationSession::create(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler, FrameIdentifier frameID)
{
return adoptRef(*new SubFrameSOAuthorizationSession(WTFMove(navigationAction), page, WTFMove(completionHandler), frameID));
return adoptRef(*new SubFrameSOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, WTFMove(completionHandler), frameID));
}

SubFrameSOAuthorizationSession::SubFrameSOAuthorizationSession(Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler, FrameIdentifier frameID)
: NavigationSOAuthorizationSession(WTFMove(navigationAction), page, InitiatingAction::SubFrame, WTFMove(completionHandler))
SubFrameSOAuthorizationSession::SubFrameSOAuthorizationSession(SOAuthorization *soAuthorization, Ref<API::NavigationAction>&& navigationAction, WebPageProxy& page, Callback&& completionHandler, FrameIdentifier frameID)
: NavigationSOAuthorizationSession(soAuthorization, WTFMove(navigationAction), page, InitiatingAction::SubFrame, WTFMove(completionHandler))
, m_frameID(frameID)
{
if (auto* frame = page.process().webFrame(m_frameID))
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Apple Inc. All rights reserved.
* Copyright (C) 2019-2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -144,18 +144,9 @@ - (void)setSession:(RefPtr<WebKit::SOAuthorizationSession>&&)session
{
RELEASE_ASSERT(RunLoop::isMain());
WKSOAUTHORIZATIONDELEGATE_RELEASE_LOG("setSession: (existing session = %p, new session = %p)", _session.get(), session.get());
if (_session.get() == session.get())
return;

if (_session)
_session->setSOAuthorizationDelegate(nil);

_session = WTFMove(session);

if (_session) {
_session->setSOAuthorizationDelegate(self);
if (_session)
_session->shouldStart();
}
}
@end

Expand Down

0 comments on commit dc9ff15

Please sign in to comment.