mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-07 15:57:31 +09:00
[PALEMOON] Swipe nsIEHistoryEnumerator from Basilisk
This commit is contained in:
parent
0a2d226e8d
commit
b76b957009
3 changed files with 51 additions and 35 deletions
|
|
@ -7,36 +7,13 @@
|
||||||
#include <urlhist.h>
|
#include <urlhist.h>
|
||||||
#include <shlguid.h>
|
#include <shlguid.h>
|
||||||
|
|
||||||
#include "nsStringAPI.h"
|
|
||||||
#include "nsNetUtil.h"
|
|
||||||
#include "nsIVariant.h"
|
|
||||||
#include "nsCOMArray.h"
|
|
||||||
#include "nsArrayEnumerator.h"
|
#include "nsArrayEnumerator.h"
|
||||||
|
#include "nsCOMArray.h"
|
||||||
namespace {
|
#include "nsIVariant.h"
|
||||||
|
#include "nsNetUtil.h"
|
||||||
PRTime FileTimeToPRTime(FILETIME* filetime)
|
#include "nsStringAPI.h"
|
||||||
{
|
#include "nsWindowsMigrationUtils.h"
|
||||||
SYSTEMTIME st;
|
#include "prtime.h"
|
||||||
::FileTimeToSystemTime(filetime, &st);
|
|
||||||
PRExplodedTime prt;
|
|
||||||
prt.tm_year = st.wYear;
|
|
||||||
// SYSTEMTIME's day-of-month parameter is 1-based,
|
|
||||||
// PRExplodedTime's is 0-based.
|
|
||||||
prt.tm_month = st.wMonth - 1;
|
|
||||||
prt.tm_mday = st.wDay;
|
|
||||||
prt.tm_hour = st.wHour;
|
|
||||||
prt.tm_min = st.wMinute;
|
|
||||||
prt.tm_sec = st.wSecond;
|
|
||||||
prt.tm_usec = st.wMilliseconds * 1000;
|
|
||||||
prt.tm_wday = 0;
|
|
||||||
prt.tm_yday = 0;
|
|
||||||
prt.tm_params.tp_gmt_offset = 0;
|
|
||||||
prt.tm_params.tp_dst_offset = 0;
|
|
||||||
return PR_ImplodeTime(&prt);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // Anonymous namespace.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
//// nsIEHistoryEnumerator
|
//// nsIEHistoryEnumerator
|
||||||
|
|
@ -103,16 +80,19 @@ nsIEHistoryEnumerator::HasMoreElements(bool* _retval)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nsDependentString title(statURL.pwcsTitle);
|
nsDependentString title(statURL.pwcsTitle ? statURL.pwcsTitle : L"");
|
||||||
|
|
||||||
PRTime lastVisited = FileTimeToPRTime(&(statURL.ftLastVisited));
|
bool lastVisitTimeIsValid;
|
||||||
|
PRTime lastVisited = WinMigrationFileTimeToPRTime(&(statURL.ftLastVisited), &lastVisitTimeIsValid);
|
||||||
|
|
||||||
mCachedNextEntry = do_CreateInstance("@mozilla.org/hash-property-bag;1");
|
mCachedNextEntry = do_CreateInstance("@mozilla.org/hash-property-bag;1");
|
||||||
MOZ_ASSERT(mCachedNextEntry, "Should have instanced a new property bag");
|
MOZ_ASSERT(mCachedNextEntry, "Should have instanced a new property bag");
|
||||||
if (mCachedNextEntry) {
|
if (mCachedNextEntry) {
|
||||||
mCachedNextEntry->SetPropertyAsInterface(NS_LITERAL_STRING("uri"), uri);
|
mCachedNextEntry->SetPropertyAsInterface(NS_LITERAL_STRING("uri"), uri);
|
||||||
mCachedNextEntry->SetPropertyAsAString(NS_LITERAL_STRING("title"), title);
|
mCachedNextEntry->SetPropertyAsAString(NS_LITERAL_STRING("title"), title);
|
||||||
|
if (lastVisitTimeIsValid) {
|
||||||
mCachedNextEntry->SetPropertyAsInt64(NS_LITERAL_STRING("time"), lastVisited);
|
mCachedNextEntry->SetPropertyAsInt64(NS_LITERAL_STRING("time"), lastVisited);
|
||||||
|
}
|
||||||
|
|
||||||
*_retval = true;
|
*_retval = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@
|
||||||
#include <urlhist.h>
|
#include <urlhist.h>
|
||||||
|
|
||||||
#include "mozilla/Attributes.h"
|
#include "mozilla/Attributes.h"
|
||||||
|
#include "nsCOMPtr.h"
|
||||||
#include "nsISimpleEnumerator.h"
|
#include "nsISimpleEnumerator.h"
|
||||||
#include "nsIWritablePropertyBag2.h"
|
#include "nsIWritablePropertyBag2.h"
|
||||||
#include "nsAutoPtr.h"
|
|
||||||
|
|
||||||
class nsIEHistoryEnumerator final : public nsISimpleEnumerator
|
class nsIEHistoryEnumerator final : public nsISimpleEnumerator
|
||||||
{
|
{
|
||||||
|
|
@ -28,8 +28,8 @@ private:
|
||||||
*/
|
*/
|
||||||
void EnsureInitialized();
|
void EnsureInitialized();
|
||||||
|
|
||||||
nsRefPtr<IUrlHistoryStg2> mIEHistory;
|
RefPtr<IUrlHistoryStg2> mIEHistory;
|
||||||
nsRefPtr<IEnumSTATURL> mURLEnumerator;
|
RefPtr<IEnumSTATURL> mURLEnumerator;
|
||||||
|
|
||||||
nsCOMPtr<nsIWritablePropertyBag2> mCachedNextEntry;
|
nsCOMPtr<nsIWritablePropertyBag2> mCachedNextEntry;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
#ifndef windowsmigrationutils__h__
|
||||||
|
#define windowsmigrationutils__h__
|
||||||
|
|
||||||
|
#include "prtime.h"
|
||||||
|
|
||||||
|
static
|
||||||
|
PRTime WinMigrationFileTimeToPRTime(FILETIME* filetime, bool* isValid)
|
||||||
|
{
|
||||||
|
SYSTEMTIME st;
|
||||||
|
*isValid = ::FileTimeToSystemTime(filetime, &st);
|
||||||
|
if (!*isValid) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
PRExplodedTime prt;
|
||||||
|
prt.tm_year = st.wYear;
|
||||||
|
// SYSTEMTIME's day-of-month parameter is 1-based,
|
||||||
|
// PRExplodedTime's is 0-based.
|
||||||
|
prt.tm_month = st.wMonth - 1;
|
||||||
|
prt.tm_mday = st.wDay;
|
||||||
|
prt.tm_hour = st.wHour;
|
||||||
|
prt.tm_min = st.wMinute;
|
||||||
|
prt.tm_sec = st.wSecond;
|
||||||
|
prt.tm_usec = st.wMilliseconds * 1000;
|
||||||
|
prt.tm_wday = 0;
|
||||||
|
prt.tm_yday = 0;
|
||||||
|
prt.tm_params.tp_gmt_offset = 0;
|
||||||
|
prt.tm_params.tp_dst_offset = 0;
|
||||||
|
return PR_ImplodeTime(&prt);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue