135 lines
3.6 KiB
JavaScript
135 lines
3.6 KiB
JavaScript
/* 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/. */
|
|
|
|
"use strict";
|
|
|
|
const {
|
|
CHANGE_DISPLAY_PIXEL_RATIO,
|
|
CHANGE_USER_AGENT,
|
|
TOGGLE_LEFT_ALIGNMENT,
|
|
TOGGLE_RELOAD_ON_TOUCH_SIMULATION,
|
|
TOGGLE_RELOAD_ON_USER_AGENT,
|
|
TOGGLE_TOUCH_SIMULATION,
|
|
TOGGLE_USER_AGENT_INPUT,
|
|
} = require("resource://devtools/client/responsive/actions/index.js");
|
|
|
|
const LEFT_ALIGNMENT_ENABLED = "devtools.responsive.leftAlignViewport.enabled";
|
|
const RELOAD_ON_TOUCH_SIMULATION =
|
|
"devtools.responsive.reloadConditions.touchSimulation";
|
|
const RELOAD_ON_USER_AGENT = "devtools.responsive.reloadConditions.userAgent";
|
|
const SHOW_USER_AGENT_INPUT = "devtools.responsive.showUserAgentInput";
|
|
const TOUCH_SIMULATION_ENABLED = "devtools.responsive.touchSimulation.enabled";
|
|
const USER_AGENT = "devtools.responsive.userAgent";
|
|
|
|
const INITIAL_UI = {
|
|
// The pixel ratio of the display.
|
|
displayPixelRatio: 0,
|
|
// Whether or not the viewports are left aligned.
|
|
leftAlignmentEnabled: Services.prefs.getBoolPref(
|
|
LEFT_ALIGNMENT_ENABLED,
|
|
false
|
|
),
|
|
// Whether or not to reload when touch simulation is toggled.
|
|
reloadOnTouchSimulation: Services.prefs.getBoolPref(
|
|
RELOAD_ON_TOUCH_SIMULATION,
|
|
false
|
|
),
|
|
// Whether or not to reload when user agent is changed.
|
|
reloadOnUserAgent: Services.prefs.getBoolPref(RELOAD_ON_USER_AGENT, false),
|
|
// Whether or not to show the user agent input in the toolbar.
|
|
showUserAgentInput: Services.prefs.getBoolPref(SHOW_USER_AGENT_INPUT, false),
|
|
// Whether or not touch simulation is enabled.
|
|
touchSimulationEnabled: Services.prefs.getBoolPref(
|
|
TOUCH_SIMULATION_ENABLED,
|
|
false
|
|
),
|
|
// The user agent of the viewport.
|
|
userAgent: Services.prefs.getCharPref(USER_AGENT, ""),
|
|
};
|
|
|
|
const reducers = {
|
|
[CHANGE_DISPLAY_PIXEL_RATIO](ui, { displayPixelRatio }) {
|
|
return {
|
|
...ui,
|
|
displayPixelRatio,
|
|
};
|
|
},
|
|
|
|
[CHANGE_USER_AGENT](ui, { userAgent }) {
|
|
Services.prefs.setCharPref(USER_AGENT, userAgent);
|
|
|
|
return {
|
|
...ui,
|
|
userAgent,
|
|
};
|
|
},
|
|
|
|
[TOGGLE_LEFT_ALIGNMENT](ui, { enabled }) {
|
|
const leftAlignmentEnabled =
|
|
enabled !== undefined ? enabled : !ui.leftAlignmentEnabled;
|
|
|
|
Services.prefs.setBoolPref(LEFT_ALIGNMENT_ENABLED, leftAlignmentEnabled);
|
|
|
|
return {
|
|
...ui,
|
|
leftAlignmentEnabled,
|
|
};
|
|
},
|
|
|
|
[TOGGLE_RELOAD_ON_TOUCH_SIMULATION](ui, { enabled }) {
|
|
const reloadOnTouchSimulation =
|
|
enabled !== undefined ? enabled : !ui.reloadOnTouchSimulation;
|
|
|
|
Services.prefs.setBoolPref(
|
|
RELOAD_ON_TOUCH_SIMULATION,
|
|
reloadOnTouchSimulation
|
|
);
|
|
|
|
return {
|
|
...ui,
|
|
reloadOnTouchSimulation,
|
|
};
|
|
},
|
|
|
|
[TOGGLE_RELOAD_ON_USER_AGENT](ui, { enabled }) {
|
|
const reloadOnUserAgent =
|
|
enabled !== undefined ? enabled : !ui.reloadOnUserAgent;
|
|
|
|
Services.prefs.setBoolPref(RELOAD_ON_USER_AGENT, reloadOnUserAgent);
|
|
|
|
return {
|
|
...ui,
|
|
reloadOnUserAgent,
|
|
};
|
|
},
|
|
|
|
[TOGGLE_TOUCH_SIMULATION](ui, { enabled }) {
|
|
Services.prefs.setBoolPref(TOUCH_SIMULATION_ENABLED, enabled);
|
|
|
|
return {
|
|
...ui,
|
|
touchSimulationEnabled: enabled,
|
|
};
|
|
},
|
|
|
|
[TOGGLE_USER_AGENT_INPUT](ui, { enabled }) {
|
|
const showUserAgentInput =
|
|
enabled !== undefined ? enabled : !ui.showUserAgentInput;
|
|
|
|
Services.prefs.setBoolPref(SHOW_USER_AGENT_INPUT, showUserAgentInput);
|
|
|
|
return {
|
|
...ui,
|
|
showUserAgentInput,
|
|
};
|
|
},
|
|
};
|
|
|
|
module.exports = function (ui = INITIAL_UI, action) {
|
|
const reducer = reducers[action.type];
|
|
if (!reducer) {
|
|
return ui;
|
|
}
|
|
return reducer(ui, action);
|
|
};
|