-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* For #7069: Add Open Tabs widget Fix issue with white border on quickLinks widget (cherry picked from commit 75c6f5ae3d0d2b2802a482f064042bd4d3c1134c) * Updated small widget to use widgetURL as Links work for Medium or larger size widget only * Removed libsync.a * Commented out Tabs and Top sites widget which requires refactoring * nit: remove force unwrap Co-authored-by: Sawyer Blatz <[email protected]> Co-authored-by: Garvan Keeley <[email protected]>
- Loading branch information
1 parent
edd0eb5
commit 7f067dc
Showing
31 changed files
with
916 additions
and
284 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* 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/. */ | ||
|
||
import Foundation | ||
import WebKit | ||
import Storage | ||
import Shared | ||
|
||
// This cannot be easily imported into extension targets, so we break it out here. | ||
extension SavedTab { | ||
convenience init?(tab: Tab, isSelected: Bool) { | ||
assert(Thread.isMainThread) | ||
|
||
var sessionData = tab.sessionData | ||
if sessionData == nil { | ||
let currentItem: WKBackForwardListItem! = tab.webView?.backForwardList.currentItem | ||
|
||
// Freshly created web views won't have any history entries at all. | ||
// If we have no history, abort. | ||
if currentItem != nil { | ||
// The back & forward list keep track of the users history within the session | ||
let backList = tab.webView?.backForwardList.backList ?? [] | ||
let forwardList = tab.webView?.backForwardList.forwardList ?? [] | ||
let urls = (backList + [currentItem] + forwardList).map { $0.url } | ||
let currentPage = -forwardList.count | ||
sessionData = SessionData(currentPage: currentPage, urls: urls, lastUsedTime: tab.lastExecutedTime ?? Date.now()) | ||
} | ||
} | ||
|
||
self.init(screenshotUUID: tab.screenshotUUID, isSelected: isSelected, title: tab.title ?? tab.lastTitle, isPrivate: tab.isPrivate, faviconURL: tab.displayFavicon?.url, url: tab.url, sessionData: sessionData) | ||
} | ||
|
||
func configureSavedTabUsing(_ tab: Tab, imageStore: DiskImageStore? = nil) -> Tab { | ||
// Since this is a restored tab, reset the URL to be loaded as that will be handled by the SessionRestoreHandler | ||
tab.url = nil | ||
|
||
if let faviconURL = faviconURL { | ||
let icon = Favicon(url: faviconURL, date: Date()) | ||
icon.width = 1 | ||
tab.favicons.append(icon) | ||
} | ||
|
||
if let screenshotUUID = screenshotUUID, | ||
let imageStore = imageStore { | ||
tab.screenshotUUID = screenshotUUID | ||
imageStore.get(screenshotUUID.uuidString) >>== { screenshot in | ||
if tab.screenshotUUID == screenshotUUID { | ||
tab.setScreenshot(screenshot, revUUID: false) | ||
} | ||
} | ||
} | ||
|
||
tab.sessionData = sessionData | ||
tab.lastTitle = title | ||
|
||
return tab | ||
} | ||
} |
Oops, something went wrong.