mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-07 07:47:30 +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 <shlguid.h>
|
||||
|
||||
#include "nsStringAPI.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsIVariant.h"
|
||||
#include "nsCOMArray.h"
|
||||
#include "nsArrayEnumerator.h"
|
||||
|
||||
namespace {
|
||||
|
||||
PRTime FileTimeToPRTime(FILETIME* filetime)
|
||||
{
|
||||
SYSTEMTIME st;
|
||||
::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.
|
||||
#include "nsCOMArray.h"
|
||||
#include "nsIVariant.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsStringAPI.h"
|
||||
#include "nsWindowsMigrationUtils.h"
|
||||
#include "prtime.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// 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");
|
||||
MOZ_ASSERT(mCachedNextEntry, "Should have instanced a new property bag");
|
||||
if (mCachedNextEntry) {
|
||||
mCachedNextEntry->SetPropertyAsInterface(NS_LITERAL_STRING("uri"), uri);
|
||||
mCachedNextEntry->SetPropertyAsAString(NS_LITERAL_STRING("title"), title);
|
||||
mCachedNextEntry->SetPropertyAsInt64(NS_LITERAL_STRING("time"), lastVisited);
|
||||
if (lastVisitTimeIsValid) {
|
||||
mCachedNextEntry->SetPropertyAsInt64(NS_LITERAL_STRING("time"), lastVisited);
|
||||
}
|
||||
|
||||
*_retval = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@
|
|||
#include <urlhist.h>
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsISimpleEnumerator.h"
|
||||
#include "nsIWritablePropertyBag2.h"
|
||||
#include "nsAutoPtr.h"
|
||||
|
||||
class nsIEHistoryEnumerator final : public nsISimpleEnumerator
|
||||
{
|
||||
|
|
@ -28,8 +28,8 @@ private:
|
|||
*/
|
||||
void EnsureInitialized();
|
||||
|
||||
nsRefPtr<IUrlHistoryStg2> mIEHistory;
|
||||
nsRefPtr<IEnumSTATURL> mURLEnumerator;
|
||||
RefPtr<IUrlHistoryStg2> mIEHistory;
|
||||
RefPtr<IEnumSTATURL> mURLEnumerator;
|
||||
|
||||
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