Changeset 232574 in webkit


Ignore:
Timestamp:
Jun 6, 2018 11:25:41 PM (6 years ago)
Author:
Fujii Hironori
Message:

[Win][MiniBrowser] Remove gMainWindow global variable
https://bugs.webkit.org/show_bug.cgi?id=186378

Reviewed by Ryosuke Niwa.

I'm going to support multiple MainWindow in Bug 186263. It should
not be assumed that MainWindow has only one instance. gMainWindow
is used only in DisplayAuthDialog.

  • MiniBrowser/win/Common.cpp:

(authDialogProc): Use DWLP_USER to store the dialog data.
(displayAuthDialog): Moved and renamed from
MainWindow::displayAuthDialog. Use DialogBoxParam instead of
DialogBox to pass a data pointer. Do not return S_OK if
DialogBoxParam returns -1. Take a HWND argument as the parent
window.
(DisplayAuthDialog): Deleted.

  • MiniBrowser/win/Common.h:
  • MiniBrowser/win/MainWindow.cpp:

(authDialogProc): Moved to Common.cpp.
(MainWindow::displayAuthDialog): Ditto.

  • MiniBrowser/win/MainWindow.h:
  • MiniBrowser/win/ResourceLoadDelegate.cpp:

(ResourceLoadDelegate::didReceiveAuthenticationChallenge):

  • MiniBrowser/win/WinMain.cpp:

(wWinMain): Added a local variable mainWindow instead of using
gMainWindow.

Location:
trunk/Tools
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r232573 r232574  
     12018-06-06  Fujii Hironori  <Hironori.Fujii@sony.com>
     2
     3        [Win][MiniBrowser] Remove gMainWindow global variable
     4        https://bugs.webkit.org/show_bug.cgi?id=186378
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        I'm going to support multiple MainWindow in Bug 186263. It should
     9        not be assumed that MainWindow has only one instance. gMainWindow
     10        is used only in DisplayAuthDialog.
     11
     12        * MiniBrowser/win/Common.cpp:
     13        (authDialogProc): Use DWLP_USER to store the dialog data.
     14        (displayAuthDialog): Moved and renamed from
     15        MainWindow::displayAuthDialog. Use DialogBoxParam instead of
     16        DialogBox to pass a data pointer. Do not return S_OK if
     17        DialogBoxParam returns -1. Take a HWND argument as the parent
     18        window.
     19        (DisplayAuthDialog): Deleted.
     20        * MiniBrowser/win/Common.h:
     21        * MiniBrowser/win/MainWindow.cpp:
     22        (authDialogProc): Moved to Common.cpp.
     23        (MainWindow::displayAuthDialog): Ditto.
     24        * MiniBrowser/win/MainWindow.h:
     25        * MiniBrowser/win/ResourceLoadDelegate.cpp:
     26        (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
     27        * MiniBrowser/win/WinMain.cpp:
     28        (wWinMain): Added a local variable mainWindow instead of using
     29        gMainWindow.
     30
    1312018-06-06  Dan Bernstein  <mitz@apple.com>
    232
  • trunk/Tools/MiniBrowser/win/Common.cpp

    r232458 r232574  
    3030#include "Common.h"
    3131
     32#include "MiniBrowserLibResource.h"
    3233#include "MiniBrowserReplace.h"
    3334#include <dbghelp.h>
    3435#include <shlobj.h>
     36#include <wtf/StdLibExtras.h>
    3537
    3638// Global Variables:
    3739HINSTANCE hInst;
    38 MainWindow* gMainWindow = nullptr;
    3940
    4041// Support moving the transparent window
     
    119120}
    120121
    121 HRESULT DisplayAuthDialog(std::wstring& username, std::wstring& password)
     122struct AuthDialogData {
     123    std::wstring& username;
     124    std::wstring& password;
     125};
     126
     127static INT_PTR CALLBACK authDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    122128{
    123     return gMainWindow->displayAuthDialog(username, password);
     129    AuthDialogData& data = *reinterpret_cast<AuthDialogData*>(GetWindowLongPtr(hDlg, DWLP_USER));
     130    switch (message) {
     131    case WM_INITDIALOG:
     132        SetWindowLongPtr(hDlg, DWLP_USER, lParam);
     133        return TRUE;
     134
     135    case WM_COMMAND: {
     136        int wmId = LOWORD(wParam);
     137        switch (wmId) {
     138        case IDOK: {
     139            TCHAR str[256];
     140            int strLen = GetWindowText(GetDlgItem(hDlg, IDC_AUTH_USER), str, WTF_ARRAY_LENGTH(str)-1);
     141            str[strLen] = 0;
     142            data.username = str;
     143
     144            strLen = GetWindowText(GetDlgItem(hDlg, IDC_AUTH_PASSWORD), str, WTF_ARRAY_LENGTH(str)-1);
     145            str[strLen] = 0;
     146            data.password = str;
     147
     148            EndDialog(hDlg, true);
     149            return TRUE;
     150        }
     151        case IDCANCEL:
     152            EndDialog(hDlg, false);
     153            return TRUE;
     154        }
     155        break;
     156    }
     157    }
     158    return FALSE;
     159}
     160
     161HRESULT displayAuthDialog(HWND hwnd, std::wstring& username, std::wstring& password)
     162{
     163    AuthDialogData data { username, password };
     164    auto result = DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_AUTH), hwnd, authDialogProc, reinterpret_cast<LPARAM>(&data));
     165    return result > 0 ? S_OK : E_FAIL;
    124166}
    125167
  • trunk/Tools/MiniBrowser/win/Common.h

    r232458 r232574  
    3434void parseCommandLine(bool& usesLayeredWebView, bool& useFullDesktop, bool& pageLoadTesting, _bstr_t& requestedURL);
    3535void createCrashReport(EXCEPTION_POINTERS*);
     36HRESULT displayAuthDialog(HWND, std::wstring& username, std::wstring& password);
    3637
    3738extern HINSTANCE hInst;
    38 extern MainWindow* gMainWindow;
    3939extern POINT s_windowPosition;
    4040extern SIZE s_windowSize;
  • trunk/Tools/MiniBrowser/win/MainWindow.cpp

    r232458 r232574  
    384384}
    385385
    386 static INT_PTR CALLBACK authDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    387 {
    388     switch (message) {
    389     case WM_INITDIALOG: {
    390         HWND edit = ::GetDlgItem(hDlg, IDC_AUTH_USER);
    391         ::SetWindowText(edit, static_cast<LPCTSTR>(L""));
    392 
    393         edit = ::GetDlgItem(hDlg, IDC_AUTH_PASSWORD);
    394         ::SetWindowText(edit, static_cast<LPCTSTR>(L""));
    395         return (INT_PTR)TRUE;
    396     }
    397 
    398     case WM_COMMAND:
    399         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
    400             INT_PTR result { };
    401 
    402             if (LOWORD(wParam) == IDOK) {
    403                 TCHAR user[256];
    404                 int strLen = ::GetWindowText(::GetDlgItem(hDlg, IDC_AUTH_USER), user, 256);
    405                 user[strLen] = 0;
    406 
    407                 TCHAR pass[256];
    408                 strLen = ::GetWindowText(::GetDlgItem(hDlg, IDC_AUTH_PASSWORD), pass, 256);
    409                 pass[strLen] = 0;
    410 
    411                 result = reinterpret_cast<INT_PTR>(new std::pair<std::wstring, std::wstring>(user, pass));
    412             }
    413 
    414             ::EndDialog(hDlg, result);
    415             return (INT_PTR)TRUE;
    416         }
    417         break;
    418     }
    419     return (INT_PTR)FALSE;
    420 }
    421 
    422 HRESULT MainWindow::displayAuthDialog(std::wstring& username, std::wstring& password)
    423 {
    424     auto result = DialogBox(hInst, MAKEINTRESOURCE(IDD_AUTH), hwnd(), authDialogProc);
    425     if (!result)
    426         return E_FAIL;
    427 
    428     auto pair = reinterpret_cast<std::pair<std::wstring, std::wstring>*>(result);
    429     username = pair->first;
    430     password = pair->second;
    431     delete pair;
    432 
    433     return S_OK;
    434 }
    435 
    436386void MainWindow::loadURL(BSTR url)
    437387{
  • trunk/Tools/MiniBrowser/win/MainWindow.h

    r232458 r232574  
    4040
    4141    void loadURL(BSTR url);
    42     HRESULT displayAuthDialog(std::wstring& username, std::wstring& password);
    4342   
    4443private:
  • trunk/Tools/MiniBrowser/win/ResourceLoadDelegate.cpp

    r229048 r232574  
    2626#include "ResourceLoadDelegate.h"
    2727
     28#include "Common.h"
    2829#include "MiniBrowser.h"
    2930#include "PageLoadTestClient.h"
     
    3738#include <string>
    3839#include <wininet.h>
    39 
    40 extern HRESULT DisplayAuthDialog(std::wstring& username, std::wstring& password);
    4140
    4241HRESULT ResourceLoadDelegate::QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject)
     
    9594
    9695    std::wstring username, password;
    97     if (DisplayAuthDialog(username, password) != S_OK)
     96    if (displayAuthDialog(m_client->hwnd(), username, password) != S_OK)
    9897        return E_FAIL;
    9998
  • trunk/Tools/MiniBrowser/win/WinMain.cpp

    r232458 r232574  
    6666    ::SetProcessDPIAware();
    6767
    68     gMainWindow = new MainWindow();
    69     HRESULT hr = gMainWindow->init(hInst, usesLayeredWebView, pageLoadTesting);
     68    auto mainWindow = new MainWindow();
     69    HRESULT hr = mainWindow->init(hInst, usesLayeredWebView, pageLoadTesting);
    7070    if (FAILED(hr))
    7171        goto exit;
    7272
    73     ShowWindow(gMainWindow->hwnd(), nCmdShow);
     73    ShowWindow(mainWindow->hwnd(), nCmdShow);
    7474
    7575    hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_MINIBROWSER));
    7676
    7777    if (requestedURL.length())
    78         gMainWindow->loadURL(requestedURL.GetBSTR());
     78        mainWindow->loadURL(requestedURL.GetBSTR());
    7979    else
    80         gMainWindow->browserWindow()->loadHTMLString(_bstr_t(defaultHTML).GetBSTR());
     80        mainWindow->browserWindow()->loadHTMLString(_bstr_t(defaultHTML).GetBSTR());
    8181
    8282#pragma warning(disable:4509)
Note: See TracChangeset for help on using the changeset viewer.