📄 webhistoryitem.cpp
字号:
return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setLastVisitedTimeInterval(DATE time){ m_historyItem->setLastVisitedTime(MarshallingHelpers::DATEToCFAbsoluteTime(time)); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setTitle(BSTR title){ m_historyItem->setTitle(String(title, SysStringLen(title))); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::RSSFeedReferrer(BSTR* url){ BString str(m_historyItem->referrer()); *url = str.release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setRSSFeedReferrer(BSTR url){ m_historyItem->setReferrer(String(url, SysStringLen(url))); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::hasPageCache(BOOL* /*hasCache*/){ // FIXME - TODO ASSERT_NOT_REACHED(); return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setHasPageCache(BOOL /*hasCache*/){ // FIXME - TODO return E_NOTIMPL;}HRESULT STDMETHODCALLTYPE WebHistoryItem::target(BSTR* target){ if (!target) { ASSERT_NOT_REACHED(); return E_POINTER; } *target = BString(m_historyItem->target()).release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::isTargetItem(BOOL* result){ if (!result) { ASSERT_NOT_REACHED(); return E_POINTER; } *result = m_historyItem->isTargetItem() ? TRUE : FALSE; return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::children(unsigned* outChildCount, SAFEARRAY** outChildren){ if (!outChildCount || !outChildren) { ASSERT_NOT_REACHED(); return E_POINTER; } *outChildCount = 0; *outChildren = 0; const HistoryItemVector& coreChildren = m_historyItem->children(); if (coreChildren.isEmpty()) return S_OK; size_t childCount = coreChildren.size(); SAFEARRAY* children = SafeArrayCreateVector(VT_UNKNOWN, 0, static_cast<ULONG>(childCount)); if (!children) return E_OUTOFMEMORY; for (unsigned i = 0; i < childCount; ++i) { WebHistoryItem* item = WebHistoryItem::createInstance(coreChildren[i]); if (!item) { SafeArrayDestroy(children); return E_OUTOFMEMORY; } COMPtr<IUnknown> unknown; HRESULT hr = item->QueryInterface(IID_IUnknown, (void**)&unknown); if (FAILED(hr)) { SafeArrayDestroy(children); return hr; } LONG longI = i; hr = SafeArrayPutElement(children, &longI, unknown.get()); if (FAILED(hr)) { SafeArrayDestroy(children); return hr; } } *outChildCount = static_cast<unsigned>(childCount); *outChildren = children; return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::lastVisitWasFailure(BOOL* wasFailure){ if (!wasFailure) { ASSERT_NOT_REACHED(); return E_POINTER; } *wasFailure = m_historyItem->lastVisitWasFailure(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setLastVisitWasFailure(BOOL wasFailure){ m_historyItem->setLastVisitWasFailure(wasFailure); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::lastVisitWasHTTPNonGet(BOOL* HTTPNonGet){ if (!HTTPNonGet) { ASSERT_NOT_REACHED(); return E_POINTER; } *HTTPNonGet = m_historyItem->lastVisitWasHTTPNonGet(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setLastVisitWasHTTPNonGet(BOOL HTTPNonGet){ m_historyItem->setLastVisitWasHTTPNonGet(HTTPNonGet); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::redirectURLs(IEnumVARIANT** urls){ if (!urls) { ASSERT_NOT_REACHED(); return E_POINTER; } Vector<String>* urlVector = m_historyItem->redirectURLs(); if (!urlVector) { *urls = 0; return S_OK; } COMPtr<COMEnumVariant<Vector<String> > > enumVariant(AdoptCOM, COMEnumVariant<Vector<String> >::createInstance(*urlVector)); *urls = enumVariant.releaseRef(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::visitedWithTitle(BSTR title){ m_historyItem->visited(title, CFAbsoluteTimeGetCurrent()); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::getDailyVisitCounts(int* number, int** counts){ if (!number || !counts) { ASSERT_NOT_REACHED(); return E_POINTER; } *counts = const_cast<int*>(m_historyItem->dailyVisitCounts().data()); *number = m_historyItem->dailyVisitCounts().size(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::getWeeklyVisitCounts(int* number, int** counts){ if (!number || !counts) { ASSERT_NOT_REACHED(); return E_POINTER; } *counts = const_cast<int*>(m_historyItem->weeklyVisitCounts().data()); *number = m_historyItem->weeklyVisitCounts().size(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::recordInitialVisit(){ m_historyItem->recordInitialVisit(); return S_OK;}// IUnknown -------------------------------------------------------------------HRESULT STDMETHODCALLTYPE WebHistoryItem::QueryInterface(REFIID riid, void** ppvObject){ *ppvObject = 0; if (IsEqualGUID(riid, __uuidof(WebHistoryItem))) *ppvObject = this; else if (IsEqualGUID(riid, IID_IUnknown)) *ppvObject = static_cast<IWebHistoryItem*>(this); else if (IsEqualGUID(riid, IID_IWebHistoryItem)) *ppvObject = static_cast<IWebHistoryItem*>(this); else if (IsEqualGUID(riid, IID_IWebHistoryItemPrivate)) *ppvObject = static_cast<IWebHistoryItemPrivate*>(this); else return E_NOINTERFACE; AddRef(); return S_OK;}ULONG STDMETHODCALLTYPE WebHistoryItem::AddRef(void){ return ++m_refCount;}ULONG STDMETHODCALLTYPE WebHistoryItem::Release(void){ ULONG newRef = --m_refCount; if (!newRef) delete(this); return newRef;}// IWebHistoryItem -------------------------------------------------------------HRESULT STDMETHODCALLTYPE WebHistoryItem::initWithURLString( /* [in] */ BSTR urlString, /* [in] */ BSTR title, /* [in] */ DATE lastVisited){ historyItemWrappers().remove(m_historyItem.get()); m_historyItem = HistoryItem::create(String(urlString, SysStringLen(urlString)), String(title, SysStringLen(title)), MarshallingHelpers::DATEToCFAbsoluteTime(lastVisited)); historyItemWrappers().set(m_historyItem.get(), this); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::originalURLString( /* [retval][out] */ BSTR* url){ if (!url) return E_POINTER; BString str = m_historyItem->originalURLString(); *url = str.release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::URLString( /* [retval][out] */ BSTR* url){ if (!url) return E_POINTER; BString str = m_historyItem->urlString(); *url = str.release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::title( /* [retval][out] */ BSTR* pageTitle){ if (!pageTitle) return E_POINTER; BString str(m_historyItem->title()); *pageTitle = str.release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::lastVisitedTimeInterval( /* [retval][out] */ DATE* lastVisited){ if (!lastVisited) return E_POINTER; *lastVisited = MarshallingHelpers::CFAbsoluteTimeToDATE(m_historyItem->lastVisitedTime()); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::setAlternateTitle( /* [in] */ BSTR title){ m_alternateTitle = String(title, SysStringLen(title)); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::alternateTitle( /* [retval][out] */ BSTR* title){ if (!title) { ASSERT_NOT_REACHED(); return E_POINTER; } *title = BString(m_alternateTitle).release(); return S_OK;}HRESULT STDMETHODCALLTYPE WebHistoryItem::icon( /* [out, retval] */ OLE_HANDLE* /*hBitmap*/){ ASSERT_NOT_REACHED(); return E_NOTIMPL;}// WebHistoryItem -------------------------------------------------------------HistoryItem* WebHistoryItem::historyItem() const{ return m_historyItem.get();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -