| OLD | NEW | 
|     1 #include "PluginStdAfx.h" |     1 #include "PluginStdAfx.h" | 
|     2  |     2  | 
|     3 #include "PluginClass.h" |     3 #include "PluginClass.h" | 
|     4 #include "PluginSettings.h" |     4 #include "PluginSettings.h" | 
|     5 #include "PluginSystem.h" |     5 #include "PluginSystem.h" | 
|     6 #ifdef SUPPORT_FILTER |     6 #ifdef SUPPORT_FILTER | 
|     7 #include "PluginFilter.h" |     7 #include "PluginFilter.h" | 
|     8 #endif |     8 #endif | 
|     9 #include "PluginMimeFilterClient.h" |     9 #include "PluginMimeFilterClient.h" | 
|    10 #include "PluginClient.h" |    10 #include "PluginClient.h" | 
|    11 #include "PluginClientFactory.h" |    11 #include "PluginClientFactory.h" | 
|    12 #include "PluginHttpRequest.h" |  | 
|    13 #include "PluginMutex.h" |    12 #include "PluginMutex.h" | 
|    14 #include "DownloadSource.h" |  | 
|    15 #include "sddl.h" |    13 #include "sddl.h" | 
|    16 #include "PluginUtil.h" |    14 #include "PluginUtil.h" | 
|    17 #include "PluginUserSettings.h" |    15 #include "PluginUserSettings.h" | 
|    18  |    16  | 
|    19 #include "../shared/Dictionary.h" |    17 #include "../shared/Dictionary.h" | 
|    20  |    18  | 
|    21 #ifdef DEBUG_HIDE_EL |    19 #ifdef DEBUG_HIDE_EL | 
|    22 DWORD profileTime = 0; |    20 DWORD profileTime = 0; | 
|    23 #endif |    21 #endif | 
|    24  |    22  | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    65   m_hStatusBarWnd = NULL; |    63   m_hStatusBarWnd = NULL; | 
|    66   m_hPaneWnd = NULL; |    64   m_hPaneWnd = NULL; | 
|    67   m_nPaneWidth = 0; |    65   m_nPaneWidth = 0; | 
|    68   m_pWndProcStatus = NULL; |    66   m_pWndProcStatus = NULL; | 
|    69   m_hTheme = NULL; |    67   m_hTheme = NULL; | 
|    70   m_isInitializedOk = false; |    68   m_isInitializedOk = false; | 
|    71  |    69  | 
|    72  |    70  | 
|    73   m_tab = new CPluginTab(this); |    71   m_tab = new CPluginTab(this); | 
|    74  |    72  | 
|    75   // Load / create settings |  | 
|    76   CPluginSettings* settings = CPluginSettings::GetInstance(); |  | 
|    77  |  | 
|    78   CPluginSystem* system = CPluginSystem::GetInstance(); |    73   CPluginSystem* system = CPluginSystem::GetInstance(); | 
|    79  |    74  | 
|    80   std::wstring locale((LPCWSTR)system->GetBrowserLanguage()); |    75   std::wstring locale((LPCWSTR)system->GetBrowserLanguage()); | 
|    81   Dictionary::Create(locale); |    76   Dictionary::Create(locale); | 
|    82  |  | 
|    83   bool isMainTab = settings->IncrementTabCount(); |  | 
|    84  |  | 
|    85   if (isMainTab) |  | 
|    86   { |  | 
|    87     // Prepare settings |  | 
|    88     settings->SetMainProcessId(); |  | 
|    89     settings->SetMainUiThreadId(); |  | 
|    90  |  | 
|    91     // Ensure plugin version |  | 
|    92     if (!settings->Has(SETTING_PLUGIN_VERSION)) |  | 
|    93     { |  | 
|    94       settings->SetString(SETTING_PLUGIN_VERSION, IEPLUGIN_VERSION); |  | 
|    95       settings->SetFirstRunUpdate(); |  | 
|    96     } |  | 
|    97  |  | 
|    98     // First run or deleted settings file (dictionary version = 1) |  | 
|    99     if (settings->GetString(SETTING_DICTIONARY_VERSION, L"1").Compare(L"1") == 0
      ) |  | 
|   100     { |  | 
|   101       settings->SetFirstRun(); |  | 
|   102     } |  | 
|   103  |  | 
|   104     // Update? |  | 
|   105     CString oldVersion = settings->GetString(SETTING_PLUGIN_VERSION); |  | 
|   106     if (settings->IsFirstRunUpdate() || settings->GetString(SETTING_PLUGIN_UPDAT
      E_VERSION) == IEPLUGIN_VERSION || oldVersion != IEPLUGIN_VERSION) |  | 
|   107     { |  | 
|   108       settings->SetString(SETTING_PLUGIN_VERSION, IEPLUGIN_VERSION); |  | 
|   109  |  | 
|   110       settings->SetFirstRunUpdate(); |  | 
|   111     } |  | 
|   112  |  | 
|   113     int info = settings->GetValue(SETTING_PLUGIN_INFO_PANEL, 0); |  | 
|   114  |  | 
|   115 #ifdef ENABLE_DEBUG_RESULT |  | 
|   116     CPluginDebug::DebugResultClear(); |  | 
|   117 #endif |  | 
|   118  |  | 
|   119 #ifdef ENABLE_DEBUG_INFO |  | 
|   120     if (info == 0 || info > 2) |  | 
|   121     { |  | 
|   122       CPluginDebug::DebugClear(); |  | 
|   123     } |  | 
|   124 #endif // ENABLE_DEBUG_INFO |  | 
|   125  |  | 
|   126     settings->Write(false); |  | 
|   127   } |  | 
|   128 } |    77 } | 
|   129  |    78  | 
|   130 CPluginClass::~CPluginClass() |    79 CPluginClass::~CPluginClass() | 
|   131 { |    80 { | 
|   132   delete m_tab; |    81   delete m_tab; | 
|   133  |  | 
|   134   CPluginSettings* settings = CPluginSettings::GetInstance(); |  | 
|   135  |  | 
|   136   settings->DecrementTabCount(); |  | 
|   137 } |    82 } | 
|   138  |    83  | 
|   139  |    84  | 
|   140 ///////////////////////////////////////////////////////////////////////////// |    85 ///////////////////////////////////////////////////////////////////////////// | 
|   141 // Initialization |    86 // Initialization | 
|   142  |    87  | 
|   143 HRESULT CPluginClass::FinalConstruct() |    88 HRESULT CPluginClass::FinalConstruct() | 
|   144 { |    89 { | 
|   145   return S_OK; |    90   return S_OK; | 
|   146 } |    91 } | 
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   259     } |   204     } | 
|   260   } |   205   } | 
|   261   else |   206   else | 
|   262   { |   207   { | 
|   263     url = m_tab->GetDocumentUrl(); |   208     url = m_tab->GetDocumentUrl(); | 
|   264   } |   209   } | 
|   265  |   210  | 
|   266   return url; |   211   return url; | 
|   267 } |   212 } | 
|   268  |   213  | 
|   269 void CPluginClass::LaunchUpdater(const CString& strPath) |  | 
|   270 { |  | 
|   271   PROCESS_INFORMATION pi; |  | 
|   272   ::ZeroMemory(&pi, sizeof(pi)); |  | 
|   273  |  | 
|   274   STARTUPINFO si; |  | 
|   275   ::ZeroMemory(&si, sizeof(si)); |  | 
|   276   si.cb = sizeof(si); |  | 
|   277   si.wShowWindow = FALSE; |  | 
|   278   CString cpath; |  | 
|   279   if (strPath.Find(L".exe") == strPath.GetLength() - 4) |  | 
|   280   { |  | 
|   281     cpath = strPath; |  | 
|   282   } |  | 
|   283   else |  | 
|   284   { |  | 
|   285     cpath = _T("\"msiexec.exe\" /i \"") + strPath + _T("\" UPDATEPLUGIN=\"True\"
      "); |  | 
|   286   } |  | 
|   287  |  | 
|   288   if (!::CreateProcess(NULL, cpath.GetBuffer(), NULL, NULL, FALSE, CREATE_BREAKA
      WAY_FROM_JOB, NULL, NULL, &si, &pi)) |  | 
|   289   { |  | 
|   290     DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UPDATER, PLUGIN_ERROR_UPDATER
      _CREATE_PROCESS, "Class::Updater - Failed to start process"); |  | 
|   291     return; |  | 
|   292   } |  | 
|   293 #ifndef AUTOMATIC_SHUTDOWN |  | 
|   294   else |  | 
|   295   { |  | 
|   296     ::WaitForSingleObject(pi.hProcess, INFINITE); |  | 
|   297   } |  | 
|   298 #endif // not AUTOMATIC_SHUTDOWN |  | 
|   299  |  | 
|   300   ::CloseHandle(pi.hProcess); |  | 
|   301   ::CloseHandle(pi.hThread); |  | 
|   302 } |  | 
|   303  |  | 
|   304 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) |   214 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) | 
|   305 { |   215 { | 
|   306   if (thisPtr == NULL) |   216   if (thisPtr == NULL) | 
|   307     return 0; |   217     return 0; | 
|   308   if (!((CPluginClass*)thisPtr)->InitObject(true)) |   218   if (!((CPluginClass*)thisPtr)->InitObject(true)) | 
|   309   { |   219   { | 
|   310     ((CPluginClass*)thisPtr)->Unadvice(); |   220     ((CPluginClass*)thisPtr)->Unadvice(); | 
|   311   } |   221   } | 
|   312  |   222  | 
|   313   if ((((CPluginClass*)thisPtr)->m_hPaneWnd == NULL) || (!((CPluginClass*)thisPt
      r)->IsStatusBarEnabled())) |   223   if ((((CPluginClass*)thisPtr)->m_hPaneWnd == NULL) || (!((CPluginClass*)thisPt
      r)->IsStatusBarEnabled())) | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|   326 // so we should handle that it is called this way several times during a session |   236 // so we should handle that it is called this way several times during a session | 
|   327 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite) |   237 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite) | 
|   328 { |   238 { | 
|   329   CPluginSettings* settings = CPluginSettings::GetInstance(); |   239   CPluginSettings* settings = CPluginSettings::GetInstance(); | 
|   330   CPluginSystem* system = CPluginSystem::GetInstance(); |   240   CPluginSystem* system = CPluginSystem::GetInstance(); | 
|   331  |   241  | 
|   332   MULTIPLE_VERSIONS_CHECK(); |   242   MULTIPLE_VERSIONS_CHECK(); | 
|   333  |   243  | 
|   334   if (unknownSite) |   244   if (unknownSite) | 
|   335   { |   245   { | 
|   336     if (settings->IsMainProcess() && settings->IsMainUiThread()) |   246     DEBUG_GENERAL(L"============================================================
      ====================\nNEW TAB UI\n==============================================
      ==================================") | 
|   337     { |  | 
|   338       DEBUG_GENERAL(L"==========================================================
      ======================\nMAIN TAB UI\n===========================================
      =====================================") |  | 
|   339     } |  | 
|   340     else |  | 
|   341     { |  | 
|   342       DEBUG_GENERAL(L"==========================================================
      ======================\nNEW TAB UI\n============================================
      ====================================") |  | 
|   343     } |  | 
|   344  |   247  | 
|   345     HRESULT hr = ::CoInitialize(NULL); |   248     HRESULT hr = ::CoInitialize(NULL); | 
|   346     if (FAILED(hr)) |   249     if (FAILED(hr)) | 
|   347     { |   250     { | 
|   348       DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, "
      Class::SetSite - CoInitialize"); |   251       DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, "
      Class::SetSite - CoInitialize"); | 
|   349     } |   252     } | 
|   350  |   253  | 
|   351     s_criticalSectionBrowser.Lock(); |   254     s_criticalSectionBrowser.Lock(); | 
|   352     { |   255     { | 
|   353       m_webBrowser2 = unknownSite; |   256       m_webBrowser2 = unknownSite; | 
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   458     m_hStatusBarWnd = NULL; |   361     m_hStatusBarWnd = NULL; | 
|   459  |   362  | 
|   460     // Remove instance from the list, shutdown threads |   363     // Remove instance from the list, shutdown threads | 
|   461     HANDLE hMainThread = NULL; |   364     HANDLE hMainThread = NULL; | 
|   462     HANDLE hTabThread = NULL; |   365     HANDLE hTabThread = NULL; | 
|   463  |   366  | 
|   464     s_criticalSectionLocal.Lock(); |   367     s_criticalSectionLocal.Lock(); | 
|   465     { |   368     { | 
|   466       s_instances.Remove(this); |   369       s_instances.Remove(this); | 
|   467  |   370  | 
|   468       if (s_instances.GetSize() == 0) |  | 
|   469       { |  | 
|   470         if (settings->IsMainProcess() && settings->IsMainUiThread()) |  | 
|   471         { |  | 
|   472           hMainThread = s_hMainThread; |  | 
|   473           s_hMainThread = NULL; |  | 
|   474         } |  | 
|   475       } |  | 
|   476  |  | 
|   477       std::map<DWORD,CPluginClass*>::iterator it = s_threadInstances.find(::GetC
      urrentThreadId()); |   371       std::map<DWORD,CPluginClass*>::iterator it = s_threadInstances.find(::GetC
      urrentThreadId()); | 
|   478       if (it != s_threadInstances.end()) |   372       if (it != s_threadInstances.end()) | 
|   479       { |   373       { | 
|   480         s_threadInstances.erase(it); |   374         s_threadInstances.erase(it); | 
|   481       } |   375       } | 
|   482       if (s_instances.GetSize() == 0) |   376       if (s_instances.GetSize() == 0) | 
|   483       { |   377       { | 
|   484         CPluginClientFactory::ReleaseMimeFilterClientInstance(); |   378         CPluginClientFactory::ReleaseMimeFilterClientInstance(); | 
|   485       } |   379       } | 
|   486     } |   380     } | 
|   487     s_criticalSectionLocal.Unlock(); |   381     s_criticalSectionLocal.Unlock(); | 
|   488  |   382  | 
|   489     if (hMainThread != NULL) |  | 
|   490     { |  | 
|   491       s_isMainThreadDone = true; |  | 
|   492  |  | 
|   493       ::WaitForSingleObject(hMainThread, INFINITE); |  | 
|   494       ::CloseHandle(hMainThread); |  | 
|   495     } |  | 
|   496  |  | 
|   497     // Release browser interface |   383     // Release browser interface | 
|   498     s_criticalSectionBrowser.Lock(); |   384     s_criticalSectionBrowser.Lock(); | 
|   499     { |   385     { | 
|   500       m_webBrowser2.Release(); |   386       m_webBrowser2.Release(); | 
|   501     } |   387     } | 
|   502     s_criticalSectionBrowser.Unlock(); |   388     s_criticalSectionBrowser.Unlock(); | 
|   503  |   389  | 
|   504     if (settings->IsMainProcess() && settings->IsMainUiThread()) |   390     DEBUG_GENERAL("=============================================================
      ===================\nNEW TAB UI - END\n=========================================
      =======================================") | 
|   505     { |  | 
|   506       DEBUG_GENERAL("===========================================================
      =====================\nMAIN TAB UI - END\n======================================
      ==========================================") |  | 
|   507     } |  | 
|   508     else |  | 
|   509     { |  | 
|   510       DEBUG_GENERAL("===========================================================
      =====================\nNEW TAB UI - END\n=======================================
      =========================================") |  | 
|   511     } |  | 
|   512  |   391  | 
|   513     ::CoUninitialize(); |   392     ::CoUninitialize(); | 
|   514   } |   393   } | 
|   515  |   394  | 
|   516   return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); |   395   return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); | 
|   517 } |   396 } | 
|   518  |   397  | 
|   519 bool CPluginClass::IsStatusBarEnabled() |   398 bool CPluginClass::IsStatusBarEnabled() | 
|   520 { |   399 { | 
|   521   HKEY pHkey; |   400   HKEY pHkey; | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|   549  |   428  | 
|   550   CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |   429   CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 
|   551   if (browser) |   430   if (browser) | 
|   552   { |   431   { | 
|   553     HRESULT hr = S_OK; |   432     HRESULT hr = S_OK; | 
|   554     hr = browser->get_StatusBar(&isVisible); |   433     hr = browser->get_StatusBar(&isVisible); | 
|   555     if (SUCCEEDED(hr)) |   434     if (SUCCEEDED(hr)) | 
|   556     { |   435     { | 
|   557       if (!isVisible) |   436       if (!isVisible) | 
|   558       { |   437       { | 
|   559         if (!settings->GetBool("statusbarasked", false)) |   438         if (!settings->GetStatusBarAsked()) | 
|   560         { |   439         { | 
|   561           SHANDLE_PTR pBrowserHWnd; |   440           SHANDLE_PTR pBrowserHWnd; | 
|   562           browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); |   441           browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); | 
|   563           Dictionary* dictionary = Dictionary::GetInstance(); |   442           Dictionary* dictionary = Dictionary::GetInstance(); | 
|   564           settings->SetBool("statusbarasked", true); |   443           settings->SetStatusBarAsked(); | 
|   565           settings->Write(); |  | 
|   566  |   444  | 
|   567           HKEY pHkey; |   445           HKEY pHkey; | 
|   568           HKEY pHkeySub; |   446           HKEY pHkeySub; | 
|   569           LSTATUS regRes = 0; |   447           LSTATUS regRes = 0; | 
|   570           regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); |   448           regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); | 
|   571  |   449  | 
|   572           // Do we have enough rights to enable a status bar? |   450           // Do we have enough rights to enable a status bar? | 
|   573           if (regRes != 0) |   451           if (regRes != 0) | 
|   574           { |   452           { | 
|   575             // We use the tab window here and in the next few calls, since the b
      rowser window may still not be available |   453             // We use the tab window here and in the next few calls, since the b
      rowser window may still not be available | 
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   935   // Create status pane |   813   // Create status pane | 
|   936   if (bBHO) |   814   if (bBHO) | 
|   937   { |   815   { | 
|   938     if (!CreateStatusBarPane()) |   816     if (!CreateStatusBarPane()) | 
|   939     { |   817     { | 
|   940       return false; |   818       return false; | 
|   941     } |   819     } | 
|   942   } |   820   } | 
|   943  |   821  | 
|   944   CPluginSettings* settings = CPluginSettings::GetInstance(); |   822   CPluginSettings* settings = CPluginSettings::GetInstance(); | 
|   945  |  | 
|   946   // Create main thread |  | 
|   947   if (GetMainThreadHandle() == NULL && settings->IsMainProcess() && settings->Is
      MainUiThread()) |  | 
|   948   { |  | 
|   949     DWORD id; |  | 
|   950     HANDLE handle = ::CreateThread(NULL, 0, MainThreadProc, (LPVOID)m_tab, CREAT
      E_SUSPENDED, &id); |  | 
|   951     if (handle == NULL) |  | 
|   952     { |  | 
|   953       DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_T
      HREAD_CREATE_PROCESS, "Class::Thread - Failed to create main thread"); |  | 
|   954     } |  | 
|   955  |  | 
|   956     s_hMainThread = handle; |  | 
|   957  |  | 
|   958     ::ResumeThread(handle); |  | 
|   959   } |  | 
|   960  |  | 
|   961   return true; |   823   return true; | 
|   962 } |   824 } | 
|   963  |   825  | 
|   964 bool CPluginClass::CreateStatusBarPane() |   826 bool CPluginClass::CreateStatusBarPane() | 
|   965 { |   827 { | 
|   966   DEBUG_GENERAL(L"Getting client"); |   828   DEBUG_GENERAL(L"Getting client"); | 
|   967  |   829  | 
|   968   CPluginClient* client = CPluginClient::GetInstance(); |   830   CPluginClient* client = CPluginClient::GetInstance(); | 
|   969  |   831  | 
|   970   DEBUG_GENERAL(L"Getting ieversion"); |   832   DEBUG_GENERAL(L"Getting ieversion"); | 
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1127  |   989  | 
|  1128     ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); |   990     ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); | 
|  1129     ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); |   991     ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); | 
|  1130  |   992  | 
|  1131     delete[] pData; |   993     delete[] pData; | 
|  1132   } |   994   } | 
|  1133   HDC hdc = GetWindowDC(m_hStatusBarWnd); |   995   HDC hdc = GetWindowDC(m_hStatusBarWnd); | 
|  1134   SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); |   996   SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); | 
|  1135   ReleaseDC(m_hStatusBarWnd, hdc); |   997   ReleaseDC(m_hStatusBarWnd, hdc); | 
|  1136   return true; |   998   return true; | 
|  1137 }///////////////////////////////////////////////////////////////////////////// |   999 } | 
|  1138 // Implementation |  | 
|  1139  |  1000  | 
|  1140 void CPluginClass::CloseTheme() |  1001 void CPluginClass::CloseTheme() | 
|  1141 { |  1002 { | 
|  1142   if (m_hTheme) |  1003   if (m_hTheme) | 
|  1143   { |  1004   { | 
|  1144     if (pfnClose) |  1005     if (pfnClose) | 
|  1145     { |  1006     { | 
|  1146       pfnClose(m_hTheme); |  1007       pfnClose(m_hTheme); | 
|  1147     } |  1008     } | 
|  1148  |  1009  | 
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1393         else |  1254         else | 
|  1394         { |  1255         { | 
|  1395           s_mimeFilter = NULL; |  1256           s_mimeFilter = NULL; | 
|  1396  |  1257  | 
|  1397           CPluginClientFactory::ReleaseMimeFilterClientInstance(); |  1258           CPluginClientFactory::ReleaseMimeFilterClientInstance(); | 
|  1398         } |  1259         } | 
|  1399       } |  1260       } | 
|  1400       s_criticalSectionLocal.Unlock(); |  1261       s_criticalSectionLocal.Unlock(); | 
|  1401     } |  1262     } | 
|  1402     break; |  1263     break; | 
|  1403 #ifndef ENTERPRISE |  | 
|  1404   case ID_SETTINGS: |  | 
|  1405     { |  | 
|  1406       url = CString(UserSettingsFileUrl().c_str()); |  | 
|  1407     } |  | 
|  1408     break; |  | 
|  1409 #endif |  | 
|  1410   case ID_INVITEFRIENDS: |  | 
|  1411     { |  | 
|  1412       url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_INVITATION); |  | 
|  1413       navigationErrorId = PLUGIN_ERROR_NAVIGATION_INVITATION; |  | 
|  1414     } |  | 
|  1415     break; |  | 
|  1416  |  | 
|  1417   case ID_FAQ: |  | 
|  1418     { |  | 
|  1419       url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_FAQ); |  | 
|  1420       navigationErrorId = PLUGIN_ERROR_NAVIGATION_FAQ; |  | 
|  1421     } |  | 
|  1422     break; |  | 
|  1423  |  | 
|  1424   case ID_FEEDBACK: |  | 
|  1425     { |  | 
|  1426       CPluginHttpRequest httpRequest(USERS_SCRIPT_FEEDBACK); |  | 
|  1427  |  | 
|  1428       httpRequest.AddPluginId(); |  | 
|  1429       httpRequest.Add("reason", 0); |  | 
|  1430       httpRequest.Add(L"url", m_tab->GetDocumentUrl(), false); |  | 
|  1431  |  | 
|  1432       url = httpRequest.GetUrl(); |  | 
|  1433       navigationErrorId = PLUGIN_ERROR_NAVIGATION_FEEDBACK; |  | 
|  1434     } |  | 
|  1435     break; |  | 
|  1436  |  | 
|  1437   case ID_ABOUT: |  | 
|  1438     { |  | 
|  1439       url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_ABOUT); |  | 
|  1440       navigationErrorId = PLUGIN_ERROR_NAVIGATION_ABOUT; |  | 
|  1441     } |  | 
|  1442     break; |  | 
|  1443  |  | 
|  1444   default: |  1264   default: | 
|  1445  |  | 
|  1446     break; |  1265     break; | 
|  1447   } |  1266   } | 
|  1448  |  1267  | 
|  1449   // Invalidate and redraw the control |  1268   // Invalidate and redraw the control | 
|  1450   UpdateStatusBar(); |  1269   UpdateStatusBar(); | 
|  1451  |  1270  | 
|  1452   CComQIPtr<IWebBrowser2> browser = GetBrowser(); |  1271   CComQIPtr<IWebBrowser2> browser = GetBrowser(); | 
|  1453   if (!url.IsEmpty() && browser) |  1272   if (!url.IsEmpty() && browser) | 
|  1454   { |  1273   { | 
|  1455     VARIANT vFlags; |  1274     VARIANT vFlags; | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1498   MENUITEMINFOW miiSep; |  1317   MENUITEMINFOW miiSep; | 
|  1499   memset(&miiSep, 0, sizeof(MENUITEMINFO)); |  1318   memset(&miiSep, 0, sizeof(MENUITEMINFO)); | 
|  1500   miiSep.cbSize = sizeof(MENUITEMINFO); |  1319   miiSep.cbSize = sizeof(MENUITEMINFO); | 
|  1501   miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; |  1320   miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; | 
|  1502   miiSep.fType = MFT_SEPARATOR; |  1321   miiSep.fType = MFT_SEPARATOR; | 
|  1503  |  1322  | 
|  1504   CPluginClient* client = CPluginClient::GetInstance(); |  1323   CPluginClient* client = CPluginClient::GetInstance(); | 
|  1505  |  1324  | 
|  1506   CPluginSettings* settings = CPluginSettings::GetInstance(); |  1325   CPluginSettings* settings = CPluginSettings::GetInstance(); | 
|  1507  |  1326  | 
|  1508   settings->RefreshTab(); |  | 
|  1509  |  | 
|  1510   // Update settings |  | 
|  1511   m_tab->OnUpdateSettings(false); |  | 
|  1512  |  | 
|  1513 #ifdef SUPPORT_WHITELIST |  1327 #ifdef SUPPORT_WHITELIST | 
|  1514   { |  1328   { | 
|  1515     // White list domain |  1329     // White list domain | 
|  1516     ctext = dictionary->Lookup("menu", "disable-on-site"); |  1330     ctext = dictionary->Lookup("menu", "disable-on-site"); | 
|  1517     fmii.fMask = MIIM_STRING | MIIM_STATE; |  1331     fmii.fMask = MIIM_STRING | MIIM_STATE; | 
|  1518     fmii.fState = MFS_DISABLED; |  1332     fmii.fState = MFS_DISABLED; | 
|  1519     fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  1333     fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
|  1520     fmii.cch = ctext.size(); |  1334     fmii.cch = ctext.size(); | 
|  1521  |  1335  | 
|  1522     UINT index = WM_WHITELIST_DOMAIN; |  1336     UINT index = WM_WHITELIST_DOMAIN; | 
|  1523  |  1337  | 
|  1524     ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); |  1338     ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); | 
|  1525   } |  1339   } | 
|  1526 #else |  1340 #else | 
|  1527   { |  1341   { | 
|  1528     ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); |  1342     ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); | 
|  1529   } |  1343   } | 
|  1530 #endif // SUPPORT_WHITELIST |  1344 #endif // SUPPORT_WHITELIST | 
|  1531  |  1345  | 
|  1532   // Invite friends |  | 
|  1533   ctext = dictionary->Lookup("menu", "invite"); |  | 
|  1534   fmii.fMask  = MIIM_STATE | MIIM_STRING; |  | 
|  1535   fmii.fState = MFS_ENABLED; |  | 
|  1536   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  | 
|  1537   fmii.cch = ctext.size(); |  | 
|  1538   ::SetMenuItemInfoW(hMenu, ID_INVITEFRIENDS, FALSE, &fmii); |  | 
|  1539  |  | 
|  1540   // FAQ |  | 
|  1541   ctext = dictionary->Lookup("menu", "faq"); |  | 
|  1542   fmii.fMask  = MIIM_STATE | MIIM_STRING; |  | 
|  1543   fmii.fState = MFS_ENABLED; |  | 
|  1544   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  | 
|  1545   fmii.cch = ctext.size(); |  | 
|  1546   ::SetMenuItemInfoW(hMenu, ID_FAQ, FALSE, &fmii); |  | 
|  1547  |  | 
|  1548   // About |  | 
|  1549   ctext = dictionary->Lookup("menu", "about"); |  | 
|  1550   fmii.fMask = MIIM_STATE | MIIM_STRING; |  | 
|  1551   fmii.fState = MFS_ENABLED; |  | 
|  1552   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  | 
|  1553   fmii.cch = ctext.size(); |  | 
|  1554   ::SetMenuItemInfoW(hMenu, ID_ABOUT, FALSE, &fmii); |  | 
|  1555  |  | 
|  1556   // Feedback |  | 
|  1557   ctext = dictionary->Lookup("menu", "feedback"); |  | 
|  1558   fmii.fMask = MIIM_STATE | MIIM_STRING; |  | 
|  1559   fmii.fState = MFS_ENABLED; |  | 
|  1560   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  | 
|  1561   fmii.cch = ctext.size(); |  | 
|  1562   ::SetMenuItemInfoW(hMenu, ID_FEEDBACK, FALSE, &fmii); |  | 
|  1563  |  | 
|  1564   // Plugin enable |  1346   // Plugin enable | 
|  1565   if (settings->GetPluginEnabled()) |  1347   if (settings->GetPluginEnabled()) | 
|  1566   { |  1348   { | 
|  1567     ctext = dictionary->Lookup("menu", "disable"); |  1349     ctext = dictionary->Lookup("menu", "disable"); | 
|  1568   } |  1350   } | 
|  1569   else |  1351   else | 
|  1570   { |  1352   { | 
|  1571     ctext = dictionary->Lookup("menu", "enable"); |  1353     ctext = dictionary->Lookup("menu", "enable"); | 
|  1572   } |  1354   } | 
|  1573   fmii.fMask  = MIIM_STATE | MIIM_STRING; |  1355   fmii.fMask  = MIIM_STATE | MIIM_STRING; | 
|  1574   fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; |  1356   fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; | 
|  1575   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  1357   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
|  1576   fmii.cch = ctext.size(); |  1358   fmii.cch = ctext.size(); | 
|  1577   ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); |  1359   ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); | 
|  1578  |  1360  | 
|  1579   // Settings |  1361   // Settings | 
|  1580 #ifndef ENTERPRISE |  | 
|  1581   ctext = dictionary->Lookup("menu", "settings"); |  1362   ctext = dictionary->Lookup("menu", "settings"); | 
|  1582   fmii.fMask  = MIIM_STATE | MIIM_STRING; |  1363   fmii.fMask  = MIIM_STATE | MIIM_STRING; | 
|  1583   fmii.fState = MFS_ENABLED; |  1364   fmii.fState = MFS_ENABLED; | 
|  1584   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |  1365   fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
|  1585   fmii.cch = ctext.size(); |  1366   fmii.cch = ctext.size(); | 
|  1586   ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii); |  1367   ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii); | 
|  1587 #else |  | 
|  1588   RemoveMenu(hMenu, ID_SETTINGS, MF_BYCOMMAND); |  | 
|  1589   RemoveMenu(hMenu, 5, MF_BYPOSITION); |  | 
|  1590 #endif |  | 
|  1591  |  1368  | 
|  1592   return true; |  1369   return true; | 
|  1593 } |  1370 } | 
|  1594  |  1371  | 
|  1595  |  1372  | 
|  1596 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V
      ARIANTARG*) |  1373 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V
      ARIANTARG*) | 
|  1597 { |  1374 { | 
|  1598   HWND hBrowserWnd = GetBrowserHWND(); |  1375   HWND hBrowserWnd = GetBrowserHWND(); | 
|  1599   if (!hBrowserWnd) |  1376   if (!hBrowserWnd) | 
|  1600   { |  1377   { | 
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1945           if (FAILED(hr)) |  1722           if (FAILED(hr)) | 
|  1946           { |  1723           { | 
|  1947             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
      _SETTINGS, "Navigation::Failed") |  1724             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
      _SETTINGS, "Navigation::Failed") | 
|  1948           } |  1725           } | 
|  1949         } |  1726         } | 
|  1950       } |  1727       } | 
|  1951 #endif |  1728 #endif | 
|  1952     } |  1729     } | 
|  1953     break; |  1730     break; | 
|  1954  |  1731  | 
|  1955 #ifndef ENTERPRISE |  | 
|  1956  |  1732  | 
|  1957   case WM_LAUNCH_INFO: |  1733     // First run page  | 
 |  1734     case WM_LAUNCH_INFO: | 
|  1958     { |  1735     { | 
|  1959       // Set the status bar visible, if it isn't |  1736       // Set the status bar visible, if it isn't | 
|  1960       // Otherwise the user won't see the icon the first time |  1737       // Otherwise the user won't see the icon the first time | 
|  1961  |  1738  | 
|  1962       if (wParam == 1) |  1739       if (wParam == 1) | 
|  1963       { |  1740       { | 
|  1964         // Redirect to welcome page |  1741         // Redirect to welcome page | 
|  1965         VARIANT_BOOL isVisible; |  1742         VARIANT_BOOL isVisible; | 
|  1966         CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |  1743         CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 
|  1967         if (browser) |  1744         if (browser) | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  1989               } |  1766               } | 
|  1990             } |  1767             } | 
|  1991           } |  1768           } | 
|  1992           else |  1769           else | 
|  1993           { |  1770           { | 
|  1994             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, 
      "Class::Get statusbar state"); |  1771             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, 
      "Class::Get statusbar state"); | 
|  1995           } |  1772           } | 
|  1996  |  1773  | 
|  1997           CPluginSettings* settings = CPluginSettings::GetInstance(); |  1774           CPluginSettings* settings = CPluginSettings::GetInstance(); | 
|  1998  |  1775  | 
|  1999           CPluginHttpRequest httpRequest(USERS_SCRIPT_WELCOME); |  1776           //TODO: Navigate to first run page here | 
|  2000  |  1777 /*        hr = browser->Navigate(CComBSTR("FIRST_RUN_PAGE_URL"), NULL, NULL, NUL
      L, NULL); | 
|  2001           httpRequest.Add("errors", settings->GetErrorList()); |  | 
|  2002  |  | 
|  2003  |  | 
|  2004           hr = browser->Navigate(CComBSTR(httpRequest.GetUrl() + "&src=" + DOWNL
      OAD_SOURCE), NULL, NULL, NULL, NULL); |  | 
|  2005           if (FAILED(hr)) |  1778           if (FAILED(hr)) | 
|  2006           { |  1779           { | 
|  2007             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
      _WELCOME, "Navigation::Welcome page failed") |  1780             DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
      _WELCOME, "Navigation::Welcome page failed") | 
|  2008           } |  1781           } | 
|  2009  |  1782           */ | 
|  2010           // Update settings server side on next IE start, as they have possibly
       changed |  | 
|  2011           settings->ForceConfigurationUpdateOnStart(); |  | 
|  2012         } |  1783         } | 
|  2013       } |  1784       } | 
|  2014       else |  1785       else | 
|  2015       { |  1786       { | 
|  2016         // Redirect to info page |  1787         // Redirect to info page | 
|  2017         CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |  1788         CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 
|  2018         if (browser) |  1789         if (browser) | 
|  2019         { |  1790         { | 
|  2020           CPluginHttpRequest httpRequest(USERS_SCRIPT_INFO); |  | 
|  2021  |  | 
|  2022           httpRequest.Add("info", wParam); |  | 
|  2023  |  | 
|  2024           VARIANT vFlags; |  1791           VARIANT vFlags; | 
|  2025           vFlags.vt = VT_I4; |  1792           vFlags.vt = VT_I4; | 
|  2026           vFlags.intVal = navOpenInNewTab; |  1793           vFlags.intVal = navOpenInNewTab; | 
|  2027  |  1794  | 
|  2028           HRESULT hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags
      , NULL, NULL, NULL); |  1795           // TODO: Navigate to info page here or remove this clause | 
 |  1796 /*          HRESULT hr = browser->Navigate(CComBSTR(INFO_PAGE_URL), &vFlags, NUL
      L, NULL, NULL); | 
|  2029           if (FAILED(hr)) |  1797           if (FAILED(hr)) | 
|  2030           { |  1798           { | 
|  2031             vFlags.intVal = navOpenInNewWindow; |  1799             vFlags.intVal = navOpenInNewWindow; | 
|  2032  |  1800  | 
|  2033             hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags, NULL
      , NULL, NULL); |  1801             hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags, NULL
      , NULL, NULL); | 
|  2034             if (FAILED(hr)) |  1802             if (FAILED(hr)) | 
|  2035             { |  1803             { | 
|  2036               DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI
      ON_INFO, "Navigation::Info page failed") |  1804               DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI
      ON_INFO, "Navigation::Info page failed") | 
|  2037             } |  1805             } | 
|  2038           } |  1806           } | 
 |  1807           */ | 
|  2039         } |  1808         } | 
|  2040       } |  1809       } | 
|  2041     } |  1810     } | 
|  2042     break; |  1811     break; | 
|  2043 #endif |  | 
|  2044  |  1812  | 
|  2045   case WM_DESTROY: |  1813   case WM_DESTROY: | 
|  2046     break; |  1814     break; | 
|  2047   case SC_CLOSE: |  1815   case SC_CLOSE: | 
|  2048     break; |  1816     break; | 
|  2049  |  1817  | 
|  2050   case WM_UPDATEUISTATE: |  1818   case WM_UPDATEUISTATE: | 
|  2051     { |  1819     { | 
|  2052       CPluginTab* tab = GetTab(::GetCurrentThreadId()); |  1820       CPluginTab* tab = GetTab(::GetCurrentThreadId()); | 
|  2053       if (tab) |  1821       if (tab) | 
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2192         } |  1960         } | 
|  2193       } |  1961       } | 
|  2194     } |  1962     } | 
|  2195  |  1963  | 
|  2196     hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); |  1964     hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 
|  2197   } |  1965   } | 
|  2198  |  1966  | 
|  2199   return hTabWnd; |  1967   return hTabWnd; | 
|  2200  |  1968  | 
|  2201 } |  1969 } | 
| OLD | NEW |