gfx/skia/trunk/src/views/win/skia_win.cpp

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     2 /*
     3  * Copyright 2011 Google Inc.
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
     8 #include <windows.h>
     9 #include <tchar.h>
    11 #include "SkApplication.h"
    13 #define MAX_LOADSTRING 100
    15 // Global Variables:
    16 HINSTANCE hInst;                            // current instance
    17 TCHAR szTitle[] = _T("SampleApp");          // The title bar text
    18 TCHAR szWindowClass[] = _T("SAMPLEAPP");    // the main window class name
    20 // Forward declarations of functions included in this code module:
    21 ATOM                MyRegisterClass(HINSTANCE hInstance);
    22 BOOL                InitInstance(HINSTANCE, int, LPTSTR);
    23 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
    24 INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
    26 int APIENTRY _tWinMain(HINSTANCE hInstance,
    27                      HINSTANCE hPrevInstance,
    28                      LPTSTR    lpCmdLine,
    29                      int       nCmdShow)
    30 {
    31     UNREFERENCED_PARAMETER(hPrevInstance);
    33     MSG msg;
    35     // Initialize global strings
    36     MyRegisterClass(hInstance);
    38     // Perform application initialization:
    39     if (!InitInstance (hInstance, nCmdShow, lpCmdLine))
    40     {
    41         return FALSE;
    42     }
    44     // Main message loop:
    45     while (GetMessage(&msg, NULL, 0, 0))
    46     {
    47         if (true)
    48         {
    49             TranslateMessage(&msg);
    50             DispatchMessage(&msg);
    51         }
    52     }
    54     application_term();
    56     return (int) msg.wParam;
    57 }
    61 //
    62 //  FUNCTION: MyRegisterClass()
    63 //
    64 //  PURPOSE: Registers the window class.
    65 //
    66 //  COMMENTS:
    67 //
    68 //    This function and its usage are only necessary if you want this code
    69 //    to be compatible with Win32 systems prior to the 'RegisterClassEx'
    70 //    function that was added to Windows 95. It is important to call this function
    71 //    so that the application will get 'well formed' small icons associated
    72 //    with it.
    73 //
    74 ATOM MyRegisterClass(HINSTANCE hInstance)
    75 {
    76     WNDCLASSEX wcex;
    78     wcex.cbSize = sizeof(WNDCLASSEX);
    80     wcex.style            = CS_HREDRAW | CS_VREDRAW;
    81     wcex.lpfnWndProc    = WndProc;
    82     wcex.cbClsExtra        = 0;
    83     wcex.cbWndExtra        = 0;
    84     wcex.hInstance        = hInstance;
    85     wcex.hIcon            = NULL;
    86     wcex.hCursor        = NULL;
    87     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    88     wcex.lpszMenuName    = NULL;
    89     wcex.lpszClassName    = szWindowClass;
    90     wcex.hIconSm        = NULL;
    92     return RegisterClassEx(&wcex);
    93 }
    95 #include "SkOSWindow_Win.h"
    96 extern SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv);
    98 static SkOSWindow* gSkWind;
   100 char* tchar_to_utf8(const TCHAR* str) {
   101 #ifdef _UNICODE
   102     int size = WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), NULL, 0, NULL, NULL);
   103     char* str8 = (char*) malloc(size+1);
   104     WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), str8, size, NULL, NULL);
   105     str8[size] = '\0';
   106     return str8;
   107 #else
   108     return _strdup(str);
   109 #endif
   110 }
   112 //
   113 //   FUNCTION: InitInstance(HINSTANCE, int, LPTSTR)
   114 //
   115 //   PURPOSE: Saves instance handle and creates main window
   116 //
   117 //   COMMENTS:
   118 //
   119 //        In this function, we save the instance handle in a global variable and
   120 //        create and display the main program window.
   121 //
   124 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow, LPTSTR lpCmdLine)
   125 {
   126    application_init();
   128    hInst = hInstance; // Store instance handle in our global variable
   130    HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
   131                             CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
   133    if (!hWnd)
   134    {
   135       return FALSE;
   136    }
   138    char* argv[4096];
   139    int argc = 0;
   140    TCHAR exename[1024], *next;
   141    int exenameLen = GetModuleFileName(NULL, exename, SK_ARRAY_COUNT(exename));
   142    // we're ignoring the possibility that the exe name exceeds the exename buffer
   143    (void) exenameLen;
   144    argv[argc++] = tchar_to_utf8(exename);
   145    TCHAR* arg = _tcstok_s(lpCmdLine, _T(" "), &next);
   146    while (arg != NULL) {
   147       argv[argc++] = tchar_to_utf8(arg);
   148       arg = _tcstok_s(NULL, _T(" "), &next);
   149    }
   151    gSkWind = create_sk_window(hWnd, argc, argv);
   152    for (int i = 0; i < argc; ++i) {
   153       free(argv[i]);
   154    }
   155    ShowWindow(hWnd, nCmdShow);
   156    UpdateWindow(hWnd);
   158    return TRUE;
   159 }
   161 //
   162 //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
   163 //
   164 //  PURPOSE:  Processes messages for the main window.
   165 //
   166 //  WM_COMMAND    - process the application menu
   167 //  WM_PAINT    - Paint the main window
   168 //  WM_DESTROY    - post a quit message and return
   169 //
   170 //
   171 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
   172 {
   173     switch (message) {
   174     case WM_COMMAND:
   175         return DefWindowProc(hWnd, message, wParam, lParam);
   176     case WM_DESTROY:
   177         PostQuitMessage(0);
   178         break;
   179     default:
   180         if (gSkWind->wndProc(hWnd, message, wParam, lParam)) {
   181             return 0;
   182         } else {
   183             return DefWindowProc(hWnd, message, wParam, lParam);
   184         }
   185     }
   186     return 0;
   187 }
   189 // Message handler for about box.
   190 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
   191 {
   192     UNREFERENCED_PARAMETER(lParam);
   193     switch (message)
   194     {
   195     case WM_INITDIALOG:
   196         return (INT_PTR)TRUE;
   198     case WM_COMMAND:
   199         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
   200         {
   201             EndDialog(hDlg, LOWORD(wParam));
   202             return (INT_PTR)TRUE;
   203         }
   204         break;
   205     }
   206     return (INT_PTR)FALSE;
   207 }

mercurial