Changeset 199557 in webkit


Ignore:
Timestamp:
Apr 14, 2016 2:54:13 PM (8 years ago)
Author:
jiewen_tan@apple.com
Message:

Unreviewed, rolling out r199554.

The change breaks Yosemite Release/Debug build

Reverted changeset:

"[Mac] Add API for open panel handling to WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=137759
http://trac.webkit.org/changeset/199554

Location:
trunk
Files:
3 deleted
27 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r199554 r199557  
     12016-04-14  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        Unreviewed, rolling out r199554.
     4
     5        The change breaks Yosemite Release/Debug build
     6
     7        Reverted changeset:
     8
     9        "[Mac] Add API for open panel handling to WKWebView"
     10        https://bugs.webkit.org/show_bug.cgi?id=137759
     11        http://trac.webkit.org/changeset/199554
     12
    1132016-04-14  Anders Carlsson  <andersca@apple.com>
    214
  • trunk/Source/WebKit2/Shared/API/Cocoa/WebKit.h

    r199554 r199557  
    3434#import <WebKit/WKNavigationDelegate.h>
    3535#import <WebKit/WKNavigationResponse.h>
    36 #import <WebKit/WKOpenPanelParameters.h>
    3736#import <WebKit/WKPreferences.h>
    3837#import <WebKit/WKPreviewActionItem.h>
  • trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm

    r199554 r199557  
    4747#import "WKNavigationInternal.h"
    4848#import "WKNavigationResponseInternal.h"
    49 #import "WKOpenPanelParametersInternal.h"
    5049#import "WKPreferencesInternal.h"
    5150#import "WKProcessPoolInternal.h"
     
    183182        break;
    184183
    185     case Type::OpenPanelParameters:
    186         wrapper = [WKOpenPanelParameters alloc];
    187         break;
    188 
    189184    case Type::PageGroup:
    190185        wrapper = [WKBrowsingContextGroup alloc];
  • trunk/Source/WebKit2/Shared/WebOpenPanelParameters.cpp

    r199556 r199557  
    2626
    2727#include "config.h"
    28 #include "APIOpenPanelParameters.h"
     28#include "WebOpenPanelParameters.h"
    2929
    3030#include "APIArray.h"
     
    3434using namespace WebCore;
    3535
    36 namespace API {
     36namespace WebKit {
    3737
    38 Ref<OpenPanelParameters> OpenPanelParameters::create(const FileChooserSettings& settings)
     38PassRefPtr<WebOpenPanelParameters> WebOpenPanelParameters::create(const FileChooserSettings& settings)
    3939{
    40     return adoptRef(*new OpenPanelParameters(settings));
     40    return adoptRef(new WebOpenPanelParameters(settings));
    4141}
    4242
    43 OpenPanelParameters::OpenPanelParameters(const FileChooserSettings& settings)
     43WebOpenPanelParameters::WebOpenPanelParameters(const FileChooserSettings& settings)
    4444    : m_settings(settings)
    4545{
    4646}
    4747
    48 OpenPanelParameters::~OpenPanelParameters()
     48WebOpenPanelParameters::~WebOpenPanelParameters()
    4949{
    5050}
    5151
    52 Ref<API::Array> OpenPanelParameters::acceptMIMETypes() const
     52Ref<API::Array> WebOpenPanelParameters::acceptMIMETypes() const
    5353{
    5454    return API::Array::createStringArray(m_settings.acceptMIMETypes);
     
    5656
    5757#if ENABLE(MEDIA_CAPTURE)
    58 bool OpenPanelParameters::capture() const
     58bool WebOpenPanelParameters::capture() const
    5959{
    6060    return m_settings.capture;
     
    6262#endif
    6363
    64 Ref<API::Array> OpenPanelParameters::selectedFileNames() const
     64Ref<API::Array> WebOpenPanelParameters::selectedFileNames() const
    6565{
    6666    return API::Array::createStringArray(m_settings.selectedFiles);
  • trunk/Source/WebKit2/Shared/WebOpenPanelParameters.h

    r199556 r199557  
    2525 */
    2626
    27 #pragma once
     27#ifndef WebOpenPanelParameters_h
     28#define WebOpenPanelParameters_h
    2829
    2930#include "APIObject.h"
    3031#include <WebCore/FileChooser.h>
     32#include <wtf/Vector.h>
     33#include <wtf/text/WTFString.h>
    3134
    3235namespace API {
     36class Array;
     37}
    3338
    34 class Array;
     39namespace WebKit {
    3540
    36 class OpenPanelParameters : public API::ObjectImpl<API::Object::Type::OpenPanelParameters> {
     41class WebOpenPanelParameters : public API::ObjectImpl<API::Object::Type::OpenPanelParameters> {
    3742public:
    38     static Ref<OpenPanelParameters> create(const WebCore::FileChooserSettings&);
    39     ~OpenPanelParameters();
     43    static PassRefPtr<WebOpenPanelParameters> create(const WebCore::FileChooserSettings&);
     44    ~WebOpenPanelParameters();
    4045
    4146    bool allowMultipleFiles() const { return m_settings.allowsMultipleFiles; }
     
    4752
    4853private:
    49     explicit OpenPanelParameters(const WebCore::FileChooserSettings&);
     54    explicit WebOpenPanelParameters(const WebCore::FileChooserSettings&);
    5055
    5156    WebCore::FileChooserSettings m_settings;
    5257};
    5358
    54 } // namespace API
     59} // namespace WebKit
     60
     61#endif // WebOpenPanelParameters_h
  • trunk/Source/WebKit2/UIProcess/API/APIUIClient.h

    r199554 r199557  
    5656class WebColorPickerResultListenerProxy;
    5757class WebFrameProxy;
     58class WebOpenPanelParameters;
    5859class WebOpenPanelResultListenerProxy;
    5960class WebPageProxy;
     
    7071class Dictionary;
    7172class Object;
    72 class OpenPanelParameters;
    7373class SecurityOrigin;
    7474
     
    131131    }
    132132
    133     virtual bool runOpenPanel(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::SecurityOriginData&, OpenPanelParameters*, WebKit::WebOpenPanelResultListenerProxy*) { return false; }
     133    virtual bool runOpenPanel(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebOpenPanelParameters*, WebKit::WebOpenPanelResultListenerProxy*) { return false; }
    134134    virtual bool decidePolicyForGeolocationPermissionRequest(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, SecurityOrigin*, WebKit::GeolocationPermissionRequestProxy*) { return false; }
    135135    virtual bool decidePolicyForUserMediaPermissionRequest(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, SecurityOrigin&, SecurityOrigin&, WebKit::UserMediaPermissionRequestProxy&) { return false; }
  • trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h

    r199554 r199557  
    5959class NavigationData;
    6060class NavigationResponse;
    61 class OpenPanelParameters;
    6261class PageConfiguration;
    6362class ProcessPoolConfiguration;
     
    9998class WebNotificationManagerProxy;
    10099class WebNotificationProvider;
     100class WebOpenPanelParameters;
    101101class WebOpenPanelResultListenerProxy;
    102102class WebPageGroup;
     
    147147WK_ADD_API_MAPPING(WKNotificationProviderRef, WebNotificationProvider)
    148148WK_ADD_API_MAPPING(WKNotificationRef, WebNotification)
    149 WK_ADD_API_MAPPING(WKOpenPanelParametersRef, API::OpenPanelParameters)
     149WK_ADD_API_MAPPING(WKOpenPanelParametersRef, WebOpenPanelParameters)
    150150WK_ADD_API_MAPPING(WKOpenPanelResultListenerRef, WebOpenPanelResultListenerProxy)
    151151WK_ADD_API_MAPPING(WKPageGroupRef, WebPageGroup)
  • trunk/Source/WebKit2/UIProcess/API/C/WKOpenPanelParametersRef.cpp

    r199554 r199557  
    2929
    3030#include "APIArray.h"
    31 #include "APIOpenPanelParameters.h"
    3231#include "WKAPICast.h"
     32#include "WebOpenPanelParameters.h"
    3333
    3434using namespace WebKit;
     
    3636WKTypeID WKOpenPanelParametersGetTypeID()
    3737{
    38     return toAPI(API::OpenPanelParameters::APIType);
     38    return toAPI(WebOpenPanelParameters::APIType);
    3939}
    4040
  • trunk/Source/WebKit2/UIProcess/API/C/WKOpenPanelResultListener.cpp

    r199554 r199557  
    2929#include "WKAPICast.h"
    3030#include "WebOpenPanelResultListenerProxy.h"
    31 #include <WebCore/URL.h>
    3231
    3332using namespace WebKit;
     
    3837}
    3938
    40 static Vector<String> filePathsFromFileURLs(const API::Array& fileURLs)
    41 {
    42     Vector<String> filePaths;
    43 
    44     size_t size = fileURLs.size();
    45     filePaths.reserveInitialCapacity(size);
    46 
    47     for (size_t i = 0; i < size; ++i) {
    48         API::URL* apiURL = fileURLs.at<API::URL>(i);
    49         if (apiURL)
    50             filePaths.uncheckedAppend(WebCore::URL(WebCore::URL(), apiURL->string()).fileSystemPath());
    51     }
    52 
    53     return filePaths;
    54 }
    55 
    5639void WKOpenPanelResultListenerChooseFiles(WKOpenPanelResultListenerRef listenerRef, WKArrayRef fileURLsRef)
    5740{
    58     toImpl(listenerRef)->chooseFiles(filePathsFromFileURLs(*toImpl(fileURLsRef)));
     41    toImpl(listenerRef)->chooseFiles(toImpl(fileURLsRef));
    5942}
    6043
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r199554 r199557  
    4141#include "APINavigationClient.h"
    4242#include "APINavigationResponse.h"
    43 #include "APIOpenPanelParameters.h"
    4443#include "APIPageConfiguration.h"
    4544#include "APIPolicyClient.h"
     
    6362#include "WebImage.h"
    6463#include "WebInspectorProxy.h"
     64#include "WebOpenPanelParameters.h"
    6565#include "WebOpenPanelResultListenerProxy.h"
    6666#include "WebPageGroup.h"
     
    20542054        }
    20552055
    2056         bool runOpenPanel(WebPageProxy* page, WebFrameProxy* frame, const WebCore::SecurityOriginData&, API::OpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener) override
     2056        bool runOpenPanel(WebPageProxy* page, WebFrameProxy* frame, WebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener) override
    20572057        {
    20582058            if (!m_client.runOpenPanel)
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegate.h

    r199554 r199557  
    3535@class WKFrameInfo;
    3636@class WKNavigationAction;
    37 @class WKOpenPanelParameters;
    3837@class WKPreviewElementInfo;
    3938@class WKWebViewConfiguration;
     
    145144 if a non-nil view controller was returned.
    146145 */
    147 - (nullable UIViewController *)webView:(WKWebView *)webView previewingViewControllerForElement:(WKPreviewElementInfo *)elementInfo defaultActions:(NSArray<id <WKPreviewActionItem>> *)previewActions WK_AVAILABLE(NA, WK_IOS_TBA);
     146- (nullable UIViewController *)webView:(WKWebView *)webView previewingViewControllerForElement:(WKPreviewElementInfo *)elementInfo defaultActions:(NSArray <id <WKPreviewActionItem>> *)previewActions WK_AVAILABLE(NA, WK_IOS_TBA);
    148147
    149148/*! @abstract Allows your app to pop to the view controller it created.
     
    155154#endif // TARGET_OS_IPHONE
    156155
    157 #if !TARGET_OS_IPHONE
    158 
    159 /*! @abstract Displays a file upload panel.
    160  @param webView The web view invoking the delegate method.
    161  @param parameters Parameters describing the file upload control.
    162  @param frame Information about the frame whose file upload control initiated this call.
    163  @param completionHandler The completion handler to call after open panel has been dismissed. Pass the selected URLs if the user chose OK, otherwise nil.
    164 
    165  If you do not implement this method, the web view will behave as if the user selected the Cancel button.
    166  */
    167 - (void)webView:(WKWebView *)webView runOpenPanelWithParameters:(WKOpenPanelParameters *)parameters initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSArray<NSURL *> * WK_NULLABLE_SPECIFIER URLs))completionHandler WK_AVAILABLE(WK_MAC_TBA, NA);
    168 
    169 #endif
    170 
    171156@end
    172157
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h

    r199554 r199557  
    8787        void exceededDatabaseQuota(WebPageProxy*, WebFrameProxy*, API::SecurityOrigin*, const WTF::String& databaseName, const WTF::String& displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentUsage, unsigned long long expectedUsage, std::function<void (unsigned long long)>) override;
    8888        void reachedApplicationCacheOriginQuota(WebPageProxy*, const WebCore::SecurityOrigin&, uint64_t currentQuota, uint64_t totalBytesNeeded, std::function<void (unsigned long long)> completionHandler) override;
    89 #if PLATFORM(MAC)
    90         bool runOpenPanel(WebPageProxy*, WebFrameProxy*, const WebCore::SecurityOriginData&, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) override;
    91 #endif
    9289        void printFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) override;
    9390#if PLATFORM(IOS)
     
    112109        bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1;
    113110        bool webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler : 1;
    114 #if PLATFORM(MAC)
    115         bool webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler : 1;
    116 #endif
    117111        bool webViewDecideDatabaseQuotaForSecurityOriginCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler : 1;
    118112        bool webViewDecideWebApplicationCacheQuotaForSecurityOriginCurrentQuotaTotalBytesNeeded : 1;
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm

    r199554 r199557  
    3333#import "WKFrameInfoInternal.h"
    3434#import "WKNavigationActionInternal.h"
    35 #import "WKOpenPanelParametersInternal.h"
    3635#import "WKSecurityOriginInternal.h"
    3736#import "WKWebViewConfigurationInternal.h"
     
    3938#import "WKWindowFeaturesInternal.h"
    4039#import "WKUIDelegatePrivate.h"
    41 #import "WebOpenPanelResultListenerProxy.h"
    4240#import "_WKContextMenuElementInfo.h"
    4341#import "_WKFrameHandleInternal.h"
     
    8179    m_delegateMethods.webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:)];
    8280    m_delegateMethods.webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:)];
    83 
    84 #if PLATFORM(MAC)
    85     m_delegateMethods.webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:)];
    86 #endif
    87 
    8881    m_delegateMethods.webViewDecideDatabaseQuotaForSecurityOriginCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler = [delegate respondsToSelector:@selector(_webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:)];
    8982    m_delegateMethods.webViewDecideWebApplicationCacheQuotaForSecurityOriginCurrentQuotaTotalBytesNeeded = [delegate respondsToSelector:@selector(_webView:decideWebApplicationCacheQuotaForSecurityOrigin:currentQuota:totalBytesNeeded:decisionHandler:)];
     
    258251}
    259252
    260 #if PLATFORM(MAC)
    261 bool UIDelegate::UIClient::runOpenPanel(WebPageProxy*, WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, API::OpenPanelParameters* openPanelParameters, WebOpenPanelResultListenerProxy* listener)
    262 {
    263     if (!m_uiDelegate.m_delegateMethods.webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler)
    264         return false;
    265 
    266     auto delegate = m_uiDelegate.m_delegate.get();
    267     if (!delegate)
    268         return false;
    269 
    270     auto frame = API::FrameInfo::create(*webFrameProxy, securityOriginData.securityOrigin());
    271     RefPtr<WebOpenPanelResultListenerProxy> resultListener = listener;
    272 
    273     RefPtr<CompletionHandlerCallChecker> checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:));
    274 
    275     [delegate webView:m_uiDelegate.m_webView runOpenPanelWithParameters:wrapper(*openPanelParameters) initiatedByFrame:wrapper(frame) completionHandler:[checker, resultListener](NSArray<NSURL *> *URLs) {
    276         checker->didCallCompletionHandler();
    277 
    278         if (!URLs) {
    279             resultListener->cancel();
    280             return;
    281         }
    282 
    283         Vector<String> filenames;
    284         for (NSURL *url in URLs)
    285             filenames.append(url.fileSystemRepresentation);
    286 
    287         resultListener->chooseFiles(filenames);
    288     }];
    289 
    290     return true;
    291 }
    292 #endif
    293 
    294253void UIDelegate::UIClient::reachedApplicationCacheOriginQuota(WebPageProxy*, const WebCore::SecurityOrigin& securityOrigin, uint64_t currentQuota, uint64_t totalBytesNeeded, std::function<void (unsigned long long)> completionHandler)
    295254{
  • trunk/Source/WebKit2/UIProcess/PageClient.h

    r199554 r199557  
    152152    virtual void handleDownloadRequest(DownloadProxy*) = 0;
    153153
    154     virtual bool handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) { return false; }
     154    virtual bool handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, WebOpenPanelParameters*, WebOpenPanelResultListenerProxy*) { return false; }
    155155
    156156    virtual void didChangeContentSize(const WebCore::IntSize&) = 0;
  • trunk/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.cpp

    r199554 r199557  
    4646}
    4747
     48static Vector<String> filePathsFromFileURLs(const API::Array& fileURLs)
     49{
     50    Vector<String> filePaths;
     51
     52    size_t size = fileURLs.size();
     53    filePaths.reserveInitialCapacity(size);
     54
     55    for (size_t i = 0; i < size; ++i) {
     56        API::URL* apiURL = fileURLs.at<API::URL>(i);
     57        if (apiURL)
     58            filePaths.uncheckedAppend(URL(URL(), apiURL->string()).fileSystemPath());
     59    }
     60
     61    return filePaths;
     62}
     63
    4864#if PLATFORM(IOS)
    49 void WebOpenPanelResultListenerProxy::chooseFiles(const Vector<WTF::String>& filenames, const String& displayString, const API::Data* iconImageData)
     65void WebOpenPanelResultListenerProxy::chooseFiles(API::Array* fileURLsArray, API::String* displayString, const API::Data* iconImageData)
    5066{
    5167    if (!m_page)
    5268        return;
    5369
    54     m_page->didChooseFilesForOpenPanelWithDisplayStringAndIcon(filenames, displayString, iconImageData);
     70    m_page->didChooseFilesForOpenPanelWithDisplayStringAndIcon(filePathsFromFileURLs(*fileURLsArray), displayString ? displayString->string() : String(), iconImageData);
    5571}
    5672#endif
    5773
    58 void WebOpenPanelResultListenerProxy::chooseFiles(const Vector<String>& filenames)
     74void WebOpenPanelResultListenerProxy::chooseFiles(API::Array* fileURLsArray)
    5975{
    6076    if (!m_page)
    6177        return;
    6278
    63     m_page->didChooseFilesForOpenPanel(filenames);
     79    m_page->didChooseFilesForOpenPanel(filePathsFromFileURLs(*fileURLsArray));
    6480}
    6581
  • trunk/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h

    r199554 r199557  
    2828
    2929#include "APIObject.h"
    30 #include <wtf/Forward.h>
    3130#include <wtf/PassRefPtr.h>
    3231#include <wtf/RefPtr.h>
    33 #include <wtf/Vector.h>
    3432
    3533namespace API {
     
    5351
    5452#if PLATFORM(IOS)
    55     void chooseFiles(const Vector<String>& filenames, const String& displayString, const API::Data* iconImageData);
     53    void chooseFiles(API::Array*, API::String* displayString, const API::Data* iconImageData);
    5654#endif
    57     void chooseFiles(const Vector<String>& filenames);
     55    void chooseFiles(API::Array*);
    5856    void cancel();
    5957
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r199554 r199557  
    4343#include "APINavigationClient.h"
    4444#include "APINavigationResponse.h"
    45 #include "APIOpenPanelParameters.h"
    4645#include "APIPageConfiguration.h"
    4746#include "APIPolicyClient.h"
     
    9291#include "WebNavigationState.h"
    9392#include "WebNotificationManagerProxy.h"
     93#include "WebOpenPanelParameters.h"
    9494#include "WebOpenPanelResultListenerProxy.h"
    9595#include "WebPageCreationParameters.h"
     
    38543854}
    38553855
    3856 void WebPageProxy::runOpenPanel(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, const FileChooserSettings& settings)
     3856void WebPageProxy::runOpenPanel(uint64_t frameID, const FileChooserSettings& settings)
    38573857{
    38583858    if (m_openPanelResultListener) {
     
    38643864    MESSAGE_CHECK(frame);
    38653865
    3866     Ref<API::OpenPanelParameters> parameters = API::OpenPanelParameters::create(settings);
     3866    RefPtr<WebOpenPanelParameters> parameters = WebOpenPanelParameters::create(settings);
    38673867    m_openPanelResultListener = WebOpenPanelResultListenerProxy::create(this);
    38683868
     
    38703870    m_process->responsivenessTimer().stop();
    38713871
    3872 
    3873     if (!m_uiClient->runOpenPanel(this, frame, frameSecurityOrigin, parameters.ptr(), m_openPanelResultListener.get())) {
    3874         if (!m_pageClient.handleRunOpenPanel(this, frame, parameters.ptr(), m_openPanelResultListener.get()))
     3872    if (!m_uiClient->runOpenPanel(this, frame, parameters.get(), m_openPanelResultListener.get())) {
     3873        if (!m_pageClient.handleRunOpenPanel(this, frame, parameters.get(), m_openPanelResultListener.get()))
    38753874            didCancelForOpenPanel();
    38763875    }
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r199554 r199557  
    12111211    void didChangeViewportProperties(const WebCore::ViewportAttributes&);
    12121212    void pageDidScroll();
    1213     void runOpenPanel(uint64_t frameID, const WebCore::SecurityOriginData&, const WebCore::FileChooserSettings&);
     1213    void runOpenPanel(uint64_t frameID, const WebCore::FileChooserSettings&);
    12141214    void printFrame(uint64_t frameID);
    12151215    void exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, PassRefPtr<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r199554 r199557  
    7272    RunBeforeUnloadConfirmPanel(String message, uint64_t frameID) -> (bool shouldClose) Delayed
    7373    PageDidScroll()
    74     RunOpenPanel(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebCore::FileChooserSettings parameters)
     74    RunOpenPanel(uint64_t frameID, struct WebCore::FileChooserSettings parameters)
    7575    PrintFrame(uint64_t frameID) -> ()
    7676    RunModal()
  • trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h

    r199554 r199557  
    133133    void showPlaybackTargetPicker(bool hasVideo, const WebCore::IntRect& elementRect) override;
    134134
    135     bool handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) override;
     135    bool handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, WebOpenPanelParameters*, WebOpenPanelResultListenerProxy*) override;
    136136    void disableDoubleTapGesturesDuringTapIfNecessary(uint64_t requestID) override;
    137137    double minimumZoomScale() const override;
  • trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm

    r199554 r199557  
    561561}
    562562
    563 bool PageClientImpl::handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, API::OpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener)
     563bool PageClientImpl::handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, WebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener)
    564564{
    565565    [m_contentView _showRunOpenPanel:parameters resultListener:listener];
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h

    r199554 r199557  
    4545#import <wtf/text/WTFString.h>
    4646
    47 namespace API {
    48 class OpenPanelParameters;
    49 }
    50 
    5147namespace WebCore {
    5248class Color;
     
    5854class NativeWebTouchEvent;
    5955class SmartMagnificationController;
     56class WebOpenPanelParameters;
    6057class WebOpenPanelResultListenerProxy;
    6158class WebPageProxy;
     
    213210- (void)_didUpdateBlockSelectionWithTouch:(WebKit::SelectionTouch)touch withFlags:(WebKit::SelectionFlags)flags growThreshold:(CGFloat)growThreshold shrinkThreshold:(CGFloat)shrinkThreshold;
    214211- (void)_showPlaybackTargetPicker:(BOOL)hasVideo fromRect:(const WebCore::IntRect&)elementRect;
    215 - (void)_showRunOpenPanel:(API::OpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener;
     212- (void)_showRunOpenPanel:(WebKit::WebOpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener;
    216213- (void)accessoryDone;
    217214- (void)_didHandleKeyEvent:(WebIOSEvent *)event eventWasHandled:(BOOL)eventWasHandled;
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm

    r199554 r199557  
    36623662}
    36633663
    3664 - (void)_showRunOpenPanel:(API::OpenPanelParameters*)parameters resultListener:(WebOpenPanelResultListenerProxy*)listener
     3664- (void)_showRunOpenPanel:(WebOpenPanelParameters*)parameters resultListener:(WebOpenPanelResultListenerProxy*)listener
    36653665{
    36663666    ASSERT(!_fileUploadPanel);
  • trunk/Source/WebKit2/UIProcess/ios/forms/WKFileUploadPanel.h

    r199554 r199557  
    3131@protocol WKFileUploadPanelDelegate;
    3232
    33 namespace API {
    34 class OpenPanelParameters;
    35 }
    36 
    3733namespace WebKit {
     34class WebOpenPanelParameters;
    3835class WebOpenPanelResultListenerProxy;
    3936}
     
    4239@property (nonatomic, assign) id <WKFileUploadPanelDelegate> delegate;
    4340- (instancetype)initWithView:(WKContentView *)view;
    44 - (void)presentWithParameters:(API::OpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener;
     41- (void)presentWithParameters:(WebKit::WebOpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener;
    4542- (void)dismiss;
    4643@end
  • trunk/Source/WebKit2/UIProcess/ios/forms/WKFileUploadPanel.mm

    r199554 r199557  
    3131#import "APIArray.h"
    3232#import "APIData.h"
    33 #import "APIOpenPanelParameters.h"
    3433#import "APIString.h"
    3534#import "UIKitSPI.h"
     
    3837#import "WKStringCF.h"
    3938#import "WKURLCF.h"
     39#import "WebOpenPanelParameters.h"
    4040#import "WebOpenPanelResultListenerProxy.h"
    4141#import "WebPageProxy.h"
     
    334334    }
    335335
    336     Vector<String> filenames;
    337     filenames.reserveInitialCapacity(count);
     336    Vector<RefPtr<API::Object>> urls;
     337    urls.reserveInitialCapacity(count);
    338338    for (NSURL *fileURL in fileURLs)
    339         filenames.uncheckedAppend(fileURL.fileSystemRepresentation);
     339        urls.uncheckedAppend(adoptRef(toImpl(WKURLCreateWithCFURL((CFURLRef)fileURL))));
     340    Ref<API::Array> fileURLsRef = API::Array::create(WTFMove(urls));
    340341
    341342    NSData *jpeg = UIImageJPEGRepresentation(iconImage, 1.0);
    342343    RefPtr<API::Data> iconImageDataRef = adoptRef(toImpl(WKDataCreate(reinterpret_cast<const unsigned char*>([jpeg bytes]), [jpeg length])));
    343344
    344     _listener->chooseFiles(filenames, displayString, iconImageDataRef.get());
     345    RefPtr<API::String> displayStringRef = adoptRef(toImpl(WKStringCreateWithCFString((CFStringRef)displayString)));
     346
     347    _listener->chooseFiles(fileURLsRef.ptr(), displayStringRef.get(), iconImageDataRef.get());
    345348    [self _dispatchDidDismiss];
    346349}
     
    348351#pragma mark - Present / Dismiss API
    349352
    350 - (void)presentWithParameters:(API::OpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener
     353- (void)presentWithParameters:(WebKit::WebOpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener
    351354{
    352355    ASSERT(!_listener);
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r199554 r199557  
    286286                1A6563E51B7A8C50009CF787 /* APIWindowFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6563E31B7A8C50009CF787 /* APIWindowFeatures.h */; };
    287287                1A66BF8F18A052ED002071B4 /* WKWebViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A66BF8E18A052ED002071B4 /* WKWebViewInternal.h */; };
    288                 1A67CD2E1CBC513F00BFE3EA /* WKOpenPanelParametersInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A67CD2D1CBC513F00BFE3EA /* WKOpenPanelParametersInternal.h */; };
    289288                1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */; };
    290289                1A6F9FB711E1408500DB1371 /* CommandLinePOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6F9FB611E1408500DB1371 /* CommandLinePOSIX.cpp */; };
     
    438437                1AC75A1B1B3368270056745B /* HangDetectionDisabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC75A1A1B3368270056745B /* HangDetectionDisabler.h */; };
    439438                1AC75A1E1B33695E0056745B /* HangDetectionDisablerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AC75A1C1B33695E0056745B /* HangDetectionDisablerMac.mm */; };
    440                 1ACC50F11CBC381D003C7D03 /* WKOpenPanelParameters.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACC50EF1CBC381D003C7D03 /* WKOpenPanelParameters.mm */; };
    441                 1ACC50F21CBC381D003C7D03 /* WKOpenPanelParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACC50F01CBC381D003C7D03 /* WKOpenPanelParameters.h */; settings = {ATTRIBUTES = (Public, ); }; };
    442439                1ACC87BA1981C341003D1AF4 /* WKNavigationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACC87B91981C341003D1AF4 /* WKNavigationPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    443440                1ACECD2417162DB1001FC9EF /* StorageAreaMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACECD2217162DB1001FC9EF /* StorageAreaMap.cpp */; };
     
    15081505                BC857F8512B82D0B00EDEB2E /* WebOpenPanelResultListener.h in Headers */ = {isa = PBXBuildFile; fileRef = BC857F8312B82D0B00EDEB2E /* WebOpenPanelResultListener.h */; };
    15091506                BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC857F8412B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp */; };
    1510                 BC857FB512B830E600EDEB2E /* APIOpenPanelParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = BC857FB312B830E600EDEB2E /* APIOpenPanelParameters.h */; };
    1511                 BC857FB612B830E600EDEB2E /* APIOpenPanelParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC857FB412B830E600EDEB2E /* APIOpenPanelParameters.cpp */; };
     1507                BC857FB512B830E600EDEB2E /* WebOpenPanelParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = BC857FB312B830E600EDEB2E /* WebOpenPanelParameters.h */; };
     1508                BC857FB612B830E600EDEB2E /* WebOpenPanelParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC857FB412B830E600EDEB2E /* WebOpenPanelParameters.cpp */; };
    15121509                BC857FE612B843D800EDEB2E /* WKOpenPanelParametersRef.h in Headers */ = {isa = PBXBuildFile; fileRef = BC857FE412B843D800EDEB2E /* WKOpenPanelParametersRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
    15131510                BC85806212B8505700EDEB2E /* WKOpenPanelResultListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1DFE8E12B31CA8005DF730 /* WKOpenPanelResultListener.cpp */; };
     
    22342231                1A6563E31B7A8C50009CF787 /* APIWindowFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIWindowFeatures.h; sourceTree = "<group>"; };
    22352232                1A66BF8E18A052ED002071B4 /* WKWebViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewInternal.h; sourceTree = "<group>"; };
    2236                 1A67CD2D1CBC513F00BFE3EA /* WKOpenPanelParametersInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKOpenPanelParametersInternal.h; sourceTree = "<group>"; };
    22372233                1A6D141F1B0167D500785FF0 /* Info-OSX-10.9-10.10.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-OSX-10.9-10.10.plist"; sourceTree = "<group>"; };
    22382234                1A6D14211B01681600785FF0 /* PluginService.32-64-10.9-10.10.Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "PluginService.32-64-10.9-10.10.Info.plist"; path = "PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64-10.9-10.10.Info.plist"; sourceTree = SOURCE_ROOT; };
     
    24092405                1AC75A1A1B3368270056745B /* HangDetectionDisabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HangDetectionDisabler.h; sourceTree = "<group>"; };
    24102406                1AC75A1C1B33695E0056745B /* HangDetectionDisablerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HangDetectionDisablerMac.mm; sourceTree = "<group>"; };
    2411                 1ACC50EF1CBC381D003C7D03 /* WKOpenPanelParameters.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKOpenPanelParameters.mm; sourceTree = "<group>"; };
    2412                 1ACC50F01CBC381D003C7D03 /* WKOpenPanelParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKOpenPanelParameters.h; sourceTree = "<group>"; };
    24132407                1ACC87B91981C341003D1AF4 /* WKNavigationPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationPrivate.h; sourceTree = "<group>"; };
    24142408                1ACECD2217162DB1001FC9EF /* StorageAreaMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageAreaMap.cpp; sourceTree = "<group>"; };
     
    35703564                BC857F8312B82D0B00EDEB2E /* WebOpenPanelResultListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebOpenPanelResultListener.h; sourceTree = "<group>"; };
    35713565                BC857F8412B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebOpenPanelResultListener.cpp; sourceTree = "<group>"; };
    3572                 BC857FB312B830E600EDEB2E /* APIOpenPanelParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIOpenPanelParameters.h; sourceTree = "<group>"; };
    3573                 BC857FB412B830E600EDEB2E /* APIOpenPanelParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIOpenPanelParameters.cpp; sourceTree = "<group>"; };
     3566                BC857FB312B830E600EDEB2E /* WebOpenPanelParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebOpenPanelParameters.h; sourceTree = "<group>"; };
     3567                BC857FB412B830E600EDEB2E /* WebOpenPanelParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebOpenPanelParameters.cpp; sourceTree = "<group>"; };
    35743568                BC857FE412B843D800EDEB2E /* WKOpenPanelParametersRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKOpenPanelParametersRef.h; sourceTree = "<group>"; };
    35753569                BC857FE512B843D800EDEB2E /* WKOpenPanelParametersRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKOpenPanelParametersRef.cpp; sourceTree = "<group>"; };
     
    45194513                                C0337DAF127A28D0008FF4F4 /* WebMouseEvent.cpp */,
    45204514                                BCF69F981176CED600471A52 /* WebNavigationDataStore.h */,
     4515                                BC857FB412B830E600EDEB2E /* WebOpenPanelParameters.cpp */,
     4516                                BC857FB312B830E600EDEB2E /* WebOpenPanelParameters.h */,
    45214517                                C06C6093124C14430001682F /* WebPageCreationParameters.cpp */,
    45224518                                C06C6094124C14430001682F /* WebPageCreationParameters.h */,
     
    51415137                                1AD60F5B18E20F4C0020C034 /* WKWindowFeatures.mm */,
    51425138                                1AD60F5F18E20F740020C034 /* WKWindowFeaturesInternal.h */,
    5143                                 1ACC50EF1CBC381D003C7D03 /* WKOpenPanelParameters.mm */,
    5144                                 1ACC50F01CBC381D003C7D03 /* WKOpenPanelParameters.h */,
    5145                                 1A67CD2D1CBC513F00BFE3EA /* WKOpenPanelParametersInternal.h */,
    51465139                        );
    51475140                        path = Cocoa;
     
    59905983                                99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */,
    59915984                                990D28B31C6526D400986977 /* APIAutomationSessionClient.h */,
    5992                                 BC857FB412B830E600EDEB2E /* APIOpenPanelParameters.cpp */,
    5993                                 BC857FB312B830E600EDEB2E /* APIOpenPanelParameters.h */,
    59945985                                076E884D1A13CADF005E90FC /* APIContextMenuClient.h */,
    59955986                                83891B621A68B3420030F386 /* APIDiagnosticLoggingClient.h */,
     
    73577348                                A1DF631318E0B7C8003A3E2A /* DownloadClient.h in Headers */,
    73587349                                1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */,
    7359                                 1ACC50F21CBC381D003C7D03 /* WKOpenPanelParameters.h in Headers */,
    73607350                                1AD25E96167AB08100EA9BCD /* DownloadProxyMap.h in Headers */,
    73617351                                1AB7D61A1288B9D900CFD08C /* DownloadProxyMessages.h in Headers */,
     
    77187708                                31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */,
    77197709                                31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */,
    7720                                 BC857FB512B830E600EDEB2E /* APIOpenPanelParameters.h in Headers */,
     7710                                BC857FB512B830E600EDEB2E /* WebOpenPanelParameters.h in Headers */,
    77217711                                BC857F8512B82D0B00EDEB2E /* WebOpenPanelResultListener.h in Headers */,
    77227712                                BC1DFEA412B31F87005DF730 /* WebOpenPanelResultListenerProxy.h in Headers */,
     
    78357825                                51A728DE1B1BAD3800102EEE /* WKBundleNavigationActionPrivate.h in Headers */,
    78367826                                BC4BEFE1120A1A4C00FBA0C7 /* WKBundleNodeHandle.h in Headers */,
    7837                                 1A67CD2E1CBC513F00BFE3EA /* WKOpenPanelParametersInternal.h in Headers */,
    78387827                                BC57450C1263B155006F0F12 /* WKBundleNodeHandlePrivate.h in Headers */,
    78397828                                BC20528111C94284008F3375 /* WKBundlePage.h in Headers */,
     
    90479036                                1A6420E412DCE2FF00CAAE2C /* ShareableBitmap.cpp in Sources */,
    90489037                                C01A260112662F2100C9ED55 /* ShareableBitmapCG.cpp in Sources */,
    9049                                 1ACC50F11CBC381D003C7D03 /* WKOpenPanelParameters.mm in Sources */,
    90509038                                51217460164C20E30037A5C1 /* ShareableResource.cpp in Sources */,
    90519039                                1A24BF3A120896A600FBB059 /* SharedMemoryMac.cpp in Sources */,
     
    92039191                                31A2EC4A148997C200810D71 /* WebNotificationManagerProxy.cpp in Sources */,
    92049192                                31A2EC4D148997C200810D71 /* WebNotificationProvider.cpp in Sources */,
    9205                                 BC857FB612B830E600EDEB2E /* APIOpenPanelParameters.cpp in Sources */,
     9193                                BC857FB612B830E600EDEB2E /* WebOpenPanelParameters.cpp in Sources */,
    92069194                                BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */,
    92079195                                BC857F7E12B82CEE00EDEB2E /* WebOpenPanelResultListenerProxy.cpp in Sources */,
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r199554 r199557  
    4444#include "WebHitTestResultData.h"
    4545#include "WebImage.h"
     46#include "WebOpenPanelParameters.h"
    4647#include "WebOpenPanelResultListener.h"
    4748#include "WebPage.h"
     
    718719    ASSERT(webFrame);
    719720
    720     m_page->send(Messages::WebPageProxy::RunOpenPanel(webFrame->frameID(), SecurityOriginData::fromFrame(frame), fileChooser->settings()));
     721    m_page->send(Messages::WebPageProxy::RunOpenPanel(webFrame->frameID(), fileChooser->settings()));
    721722}
    722723
  • trunk/Tools/ChangeLog

    r199554 r199557  
     12016-04-14  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        Unreviewed, rolling out r199554.
     4
     5        The change breaks Yosemite Release/Debug build
     6
     7        Reverted changeset:
     8
     9        "[Mac] Add API for open panel handling to WKWebView"
     10        https://bugs.webkit.org/show_bug.cgi?id=137759
     11        http://trac.webkit.org/changeset/199554
     12
    1132016-04-14  Anders Carlsson  <andersca@apple.com>
    214
  • trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m

    r199554 r199557  
    449449}
    450450
    451 - (void)webView:(WKWebView *)webView runOpenPanelWithParameters:(WKOpenPanelParameters *)parameters initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSArray<NSURL *> * _Nullable result))completionHandler
    452 {
    453     NSOpenPanel *openPanel = [NSOpenPanel openPanel];
    454 
    455     openPanel.allowsMultipleSelection = parameters.allowsMultipleSelection;
    456 
    457     [openPanel beginSheetModalForWindow:webView.window completionHandler:^(NSInteger result) {
    458         if (result == NSFileHandlingPanelOKButton)
    459             completionHandler(openPanel.URLs);
    460         else
    461             completionHandler(@[]);
    462     }];
    463 }
    464 
    465451- (void)updateTextFieldFromURL:(NSURL *)URL
    466452{
Note: See TracChangeset for help on using the changeset viewer.