Commit 8dc01e76 authored by dpapad's avatar dpapad Committed by Commit Bot

PDF Viewer update: Use localStorage API to remember sidenav status.

Bug: 1110015
Change-Id: I7978308c2f402f0c221f96131a440c3375aa5726
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2326830Reviewed-by: default avatarJohn Lee <johntlee@chromium.org>
Commit-Queue: dpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793681}
parent a9cf1c51
......@@ -118,6 +118,7 @@
<include name="IDR_PDF_GESTURE_DETECTOR_JS" file="pdf/gesture_detector.js" type="BINDATA" />
<include name="IDR_PDF_BROWSER_API_JS" file="pdf/browser_api.js" type="BINDATA" />
<include name="IDR_PDF_METRICS_JS" file="pdf/metrics.js" type="BINDATA" />
<include name="IDR_PDF_LOCAL_STORAGE_PROXY_JS" file="pdf/local_storage_proxy.js" type="BINDATA" />
<include name="IDR_PDF_ELEMENTS_SHARED_CSS_JS" file="${root_gen_dir}/chrome/browser/resources/pdf/elements/shared-css.js" use_base_dir="false" type="BINDATA" />
<include name="IDR_PDF_SHARED_VARS_JS" file="${root_gen_dir}/chrome/browser/resources/pdf/elements/shared-vars.js" use_base_dir="false" type="BINDATA" />
......
......@@ -113,6 +113,10 @@ js_library("ink_controller") {
]
}
js_library("local_storage_proxy") {
deps = [ "//ui/webui/resources/js:cr.m" ]
}
js_library("controller") {
deps = [
":viewport",
......@@ -150,6 +154,7 @@ js_library("pdf_viewer") {
":constants",
":controller",
":ink_controller",
":local_storage_proxy",
":metrics",
":navigator",
":pdf_scripting_api",
......@@ -214,6 +219,7 @@ js_type_check("pdf_resources") {
":controller",
":gesture_detector",
":ink_controller",
":local_storage_proxy",
":main",
":metrics",
":navigator",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {addSingletonGetter} from 'chrome://resources/js/cr.m.js';
/** @interface */
class LocalStorageProxy {
/**
* @param {string} key
* @return {?string}
*/
getItem(key) {}
/**
* @param {string} key
* @param {string} value
*/
setItem(key, value) {}
}
/** @implements {LocalStorageProxy} */
export class LocalStorageProxyImpl {
/** @override */
getItem(key) {
return window.localStorage.getItem(key);
}
/** @override */
setItem(key, value) {
window.localStorage.setItem(key, value);
}
}
addSingletonGetter(LocalStorageProxyImpl);
......@@ -27,6 +27,7 @@ import {ViewerPdfToolbarNewElement} from './elements/viewer-pdf-toolbar-new.js';
// <if expr="chromeos">
import {InkController} from './ink_controller.js';
//</if>
import {LocalStorageProxyImpl} from './local_storage_proxy.js';
import {PDFMetrics} from './metrics.js';
import {NavigatorDelegate, PdfNavigator} from './navigator.js';
import {OpenPdfParamsParser} from './open_pdf_params_parser.js';
......@@ -85,6 +86,9 @@ export function getFilenameFromURL(url) {
}
}
/** @type {string} */
const LOCAL_STORAGE_SIDENAV_COLLAPSED_KEY = 'sidenavCollapsed';
export class PDFViewerElement extends PDFViewerBaseElement {
static get is() {
return 'pdf-viewer';
......@@ -134,14 +138,7 @@ export class PDFViewerElement extends PDFViewerBaseElement {
isFormFieldFocused_: Boolean,
/** @private */
pdfViewerUpdateEnabled_: {
type: Boolean,
value: function() {
return document.documentElement.hasAttribute(
'pdf-viewer-update-enabled');
},
},
pdfViewerUpdateEnabled_: Boolean,
docLength_: Number,
// <if expr="chromeos">
......@@ -218,9 +215,6 @@ export class PDFViewerElement extends PDFViewerBaseElement {
/** @private {boolean} */
this.hadPassword_ = false;
/** @private {boolean} */
this.sidenavCollapsed_ = false;
/** @private {boolean} */
this.toolbarEnabled_ = false;
......@@ -252,7 +246,19 @@ export class PDFViewerElement extends PDFViewerBaseElement {
this.loadProgress_;
/** @private {boolean} */
this.pdfViewerUpdateEnabled_;
this.pdfViewerUpdateEnabled_ =
document.documentElement.hasAttribute('pdf-viewer-update-enabled');
/** @private {boolean} */
this.sidenavCollapsed_ = false;
if (this.pdfViewerUpdateEnabled_) {
// TODO(dpapad): Add tests after crbug.com/1111459 is fixed.
this.sidenavCollapsed_ = Boolean(Number.parseInt(
LocalStorageProxyImpl.getInstance().getItem(
LOCAL_STORAGE_SIDENAV_COLLAPSED_KEY),
10));
}
}
/** @override */
......@@ -882,7 +888,10 @@ export class PDFViewerElement extends PDFViewerBaseElement {
/** @private */
onSidenavToggleClick_() {
assert(this.pdfViewerUpdateEnabled_);
this.sidenavCollapsed_ = !this.sidenavCollapsed_;
LocalStorageProxyImpl.getInstance().setItem(
LOCAL_STORAGE_SIDENAV_COLLAPSED_KEY, this.sidenavCollapsed_ ? 1 : 0);
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment