| Left: | ||
| Right: |
| 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 #include "PluginFilter.h" | 6 #include "PluginFilter.h" |
| 7 #include "PluginMimeFilterClient.h" | 7 #include "PluginMimeFilterClient.h" |
| 8 #include "PluginClient.h" | 8 #include "PluginClient.h" |
| 9 #include "PluginClientFactory.h" | 9 #include "PluginClientFactory.h" |
| 10 #include "PluginMutex.h" | 10 #include "PluginMutex.h" |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 581 #endif | 581 #endif |
| 582 | 582 |
| 583 UpdateStatusBar(); | 583 UpdateStatusBar(); |
| 584 } | 584 } |
| 585 else | 585 else |
| 586 { | 586 { |
| 587 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) | 587 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) |
| 588 m_tab->CacheFrame(url); | 588 m_tab->CacheFrame(url); |
| 589 } | 589 } |
| 590 } | 590 } |
| 591 STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) | 591 void CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) |
| 592 { | 592 { |
| 593 DEBUG_GENERAL("Tab changed"); | 593 DEBUG_GENERAL("Tab changed"); |
| 594 bool newtabshown = pDispParams->rgvarg[1].intVal==3; | 594 bool newtabshown = pDispParams->rgvarg[1].intVal==3; |
| 595 if (newtabshown) | 595 if (newtabshown) |
| 596 { | 596 { |
| 597 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge tCurrentThreadId()); | 597 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge tCurrentThreadId()); |
| 598 if (it == s_threadInstances.end()) | 598 if (it == s_threadInstances.end()) |
| 599 { | 599 { |
| 600 s_threadInstances[::GetCurrentThreadId()] = this; | 600 s_threadInstances[::GetCurrentThreadId()] = this; |
| 601 | |
| 602 | |
| 603 if (!m_isInitializedOk) | 601 if (!m_isInitializedOk) |
| 604 { | 602 { |
| 605 m_isInitializedOk = true; | 603 m_isInitializedOk = true; |
| 606 if (!InitObject(true)) | 604 if (!InitObject(true)) |
| 607 { | 605 { |
| 608 // Unadvice(); | 606 // Unadvice(); |
| 609 } | 607 } |
| 610 UpdateStatusBar(); | 608 UpdateStatusBar(); |
| 611 } | 609 } |
| 612 } | 610 } |
| 613 } | 611 } |
| 614 notificationMessage.Hide(); | 612 notificationMessage.Hide(); |
| 615 DEBUG_GENERAL("Tab change end"); | 613 DEBUG_GENERAL("Tab change end"); |
| 616 return VARIANT_TRUE; | |
| 617 } | 614 } |
| 618 | 615 |
| 619 // This gets called whenever there's a browser event | 616 // This gets called whenever there's a browser event |
| 620 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) | 617 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) |
| 621 { | 618 { |
| 622 WCHAR tmp[256]; | 619 WCHAR tmp[256]; |
| 623 wsprintf(tmp, L"Invoke: %d\n", dispidMember); | 620 wsprintf(tmp, L"Invoke: %d\n", dispidMember); |
| 624 DEBUG_GENERAL(tmp); | 621 DEBUG_GENERAL(tmp); |
| 625 switch (dispidMember) | 622 switch (dispidMember) |
| 626 { | 623 { |
| 627 | |
| 628 case DISPID_WINDOWSTATECHANGED: | 624 case DISPID_WINDOWSTATECHANGED: |
| 629 return OnTabChanged(pDispParams, wFlags); | 625 OnTabChanged(pDispParams, wFlags); |
| 630 break; | 626 return S_OK; |
| 631 case DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE: | |
| 632 return VARIANT_TRUE; | |
| 633 break; | |
| 634 | |
| 635 case DISPID_HTMLDOCUMENTEVENTS2_ONCLICK: | |
| 636 return VARIANT_TRUE; | |
| 637 break; | |
| 638 | |
| 639 case DISPID_EVMETH_ONLOAD: | |
| 640 DEBUG_NAVI("Navi::OnLoad") | |
| 641 return VARIANT_TRUE; | |
| 642 break; | |
| 643 | |
| 644 case DISPID_EVMETH_ONCHANGE: | |
| 645 return VARIANT_TRUE; | |
| 646 | |
| 647 case DISPID_EVMETH_ONMOUSEDOWN: | |
| 648 return VARIANT_TRUE; | |
| 649 | |
| 650 case DISPID_EVMETH_ONMOUSEENTER: | |
| 651 return VARIANT_TRUE; | |
| 652 | |
| 653 case DISPID_IHTMLIMGELEMENT_START: | |
| 654 return VARIANT_TRUE; | |
| 655 | |
| 656 case STDDISPID_XOBJ_ERRORUPDATE: | |
| 657 return VARIANT_TRUE; | |
| 658 | |
| 659 case STDDISPID_XOBJ_ONPROPERTYCHANGE: | |
| 660 return VARIANT_TRUE; | |
| 661 | |
| 662 case DISPID_READYSTATECHANGE: | |
| 663 DEBUG_NAVI("Navi::ReadyStateChange") | |
| 664 return VARIANT_TRUE; | |
| 665 | |
| 666 case DISPID_BEFORENAVIGATE: | |
| 667 DEBUG_NAVI("Navi::BeforeNavigate") | |
| 668 return VARIANT_TRUE; | |
| 669 case DISPID_COMMANDSTATECHANGE: | 627 case DISPID_COMMANDSTATECHANGE: |
| 670 if (m_hPaneWnd == NULL) | 628 if (m_hPaneWnd == NULL) |
| 671 { | 629 { |
| 672 CreateStatusBarPane(); | 630 CreateStatusBarPane(); |
| 673 } | 631 } |
| 674 else | 632 else |
| 675 { | 633 { |
| 676 if (CPluginClient::GetInstance()->GetIEVersion() > 6) | 634 if (CPluginClient::GetInstance()->GetIEVersion() > 6) |
| 677 { | 635 { |
| 678 RECT rect; | 636 RECT rect; |
| 679 BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect); | 637 BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect); |
| 680 if (rectRes == TRUE) | 638 if (rectRes == TRUE) |
| 681 { | 639 { |
| 682 MoveWindow(m_hPaneWnd, rect.right - 200, 0, m_nPaneWidth, rect.bottom - rect.top, TRUE); | 640 MoveWindow(m_hPaneWnd, rect.right - 200, 0, m_nPaneWidth, rect.bottom - rect.top, TRUE); |
| 683 } | 641 } |
| 684 } | 642 } |
| 685 } | 643 } |
| 686 break; | 644 return S_OK; |
| 687 case DISPID_STATUSTEXTCHANGE: | |
| 688 break; | |
| 689 | |
| 690 case DISPID_BEFORENAVIGATE2: | 645 case DISPID_BEFORENAVIGATE2: |
| 691 BeforeNavigate2(pDispParams); | 646 BeforeNavigate2(pDispParams); |
| 692 break; | 647 return S_OK; |
| 693 | |
| 694 case DISPID_DOWNLOADBEGIN: | |
| 695 { | |
| 696 DEBUG_NAVI("Navi::Download Begin") | |
| 697 } | |
| 698 break; | |
| 699 | |
| 700 case DISPID_DOWNLOADCOMPLETE: | 648 case DISPID_DOWNLOADCOMPLETE: |
| 701 { | 649 { |
| 702 DEBUG_NAVI("Navi::Download Complete") | 650 DEBUG_NAVI("Navi::Download Complete") |
| 703 | 651 ATL::CComQIPtr<IWebBrowser2> browser = GetBrowser(); |
| 704 CComQIPtr<IWebBrowser2> browser = GetBrowser(); | |
| 705 if (browser) | 652 if (browser) |
| 706 { | 653 { |
| 707 m_tab->OnDownloadComplete(browser); | 654 m_tab->OnDownloadComplete(browser); |
| 708 } | 655 } |
| 709 } | 656 } |
| 710 break; | 657 return S_OK; |
| 711 | |
| 712 case DISPID_DOCUMENTCOMPLETE: | 658 case DISPID_DOCUMENTCOMPLETE: |
| 713 { | 659 { |
| 714 DEBUG_NAVI("Navi::Document Complete") | 660 DEBUG_NAVI("Navi::Document Complete") |
| 715 | 661 ATL::CComPtr<IWebBrowser2> browser = GetBrowser(); |
|
Eric
2014/12/30 14:37:50
We could declare this as IWebBrowser2* with one sm
sergei
2015/01/13 13:24:21
I find it as a bad practice, `GetBrowser()` return
| |
| 716 CComQIPtr<IWebBrowser2> browser = GetBrowser(); | |
| 717 | |
| 718 if (browser && pDispParams->cArgs >= 2 && pDispParams->rgvarg[1].vt == VT_ DISPATCH) | 662 if (browser && pDispParams->cArgs >= 2 && pDispParams->rgvarg[1].vt == VT_ DISPATCH) |
| 719 { | 663 { |
| 720 CComQIPtr<IWebBrowser2> pBrowser = pDispParams->rgvarg[1].pdispVal; | 664 ATL::CComQIPtr<IWebBrowser2> pBrowser = pDispParams->rgvarg[1].pdispVal; |
|
Eric
2014/12/30 14:37:50
We can't avoid a QI call to initialize pBrowser2 b
| |
| 721 if (pBrowser) | 665 if (pBrowser) |
| 722 { | 666 { |
| 723 CString url; | 667 CString url; |
| 724 CComBSTR bstrUrl; | 668 ATL::CComBSTR bstrUrl; |
| 725 if (SUCCEEDED(pBrowser->get_LocationURL(&bstrUrl)) && ::SysStringLen(b strUrl) > 0) | 669 if (SUCCEEDED(pBrowser->get_LocationURL(&bstrUrl)) && ::SysStringLen(b strUrl) > 0) |
| 726 { | 670 { |
| 727 url = bstrUrl; | 671 url = bstrUrl; |
| 728 | |
| 729 CPluginClient::UnescapeUrl(url); | 672 CPluginClient::UnescapeUrl(url); |
| 730 | |
| 731 m_tab->OnDocumentComplete(browser, url, browser.IsEqualObject(pBrows er)); | 673 m_tab->OnDocumentComplete(browser, url, browser.IsEqualObject(pBrows er)); |
|
Eric
2014/12/30 14:37:50
Change
browser.IsEqualObject(pBrowser)
to
| |
| 732 } | 674 } |
| 733 } | 675 } |
| 734 } | 676 } |
| 735 } | 677 } |
| 736 break; | 678 return S_OK; |
| 737 | 679 |
| 738 case DISPID_ONQUIT: | 680 case DISPID_ONQUIT: |
| 739 case DISPID_QUIT: | 681 case DISPID_QUIT: |
| 740 { | 682 { |
| 741 Unadvice(); | 683 Unadvice(); |
| 742 } | 684 } |
| 743 break; | 685 return S_OK; |
| 744 | |
| 745 default: | 686 default: |
| 746 { | 687 { |
| 747 CString did; | 688 ATL::CString did; |
| 748 did.Format(L"DispId:%u", dispidMember); | 689 did.Format(L"DispId:%u", dispidMember); |
| 749 | |
| 750 DEBUG_NAVI(L"Navi::Default " + did) | 690 DEBUG_NAVI(L"Navi::Default " + did) |
| 751 } | 691 } |
| 752 | |
| 753 // do nothing | |
| 754 break; | |
| 755 } | 692 } |
| 756 | 693 return DISP_E_MEMBERNOTFOUND; |
|
Eric
2014/12/30 14:37:50
Does this work on all supported versions of IE?
T
| |
| 757 return VARIANT_TRUE; | |
| 758 } | 694 } |
| 759 | 695 |
| 760 bool CPluginClass::InitObject(bool bBHO) | 696 bool CPluginClass::InitObject(bool bBHO) |
| 761 { | 697 { |
| 762 DEBUG_GENERAL("InitObject"); | 698 DEBUG_GENERAL("InitObject"); |
| 763 CPluginSettings* settings = CPluginSettings::GetInstance(); | 699 CPluginSettings* settings = CPluginSettings::GetInstance(); |
| 764 | 700 |
| 765 if (!settings->GetPluginEnabled()) | 701 if (!settings->GetPluginEnabled()) |
| 766 { | 702 { |
| 767 s_mimeFilter->Unregister(); | 703 s_mimeFilter->Unregister(); |
| (...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1864 } | 1800 } |
| 1865 } | 1801 } |
| 1866 } | 1802 } |
| 1867 | 1803 |
| 1868 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 1804 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); |
| 1869 } | 1805 } |
| 1870 | 1806 |
| 1871 return hTabWnd; | 1807 return hTabWnd; |
| 1872 | 1808 |
| 1873 } | 1809 } |
| OLD | NEW |