Skip to content

Commit

Permalink
Bug 1411161 - Adds an initial react/redux template for loading an Eve…
Browse files Browse the repository at this point in the history
…nts View in the inspector sidebar. r=pbro
  • Loading branch information
gabrielluong committed Oct 26, 2017
1 parent c50ffac commit da3c839
Show file tree
Hide file tree
Showing 15 changed files with 198 additions and 0 deletions.
14 changes: 14 additions & 0 deletions devtools/client/inspector/events/actions/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* 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 { createEnum } = require("devtools/client/shared/enum");

createEnum([

// Update the entire events state with the new list of events.
"UPDATE_EVENTS",

], module.exports);
9 changes: 9 additions & 0 deletions devtools/client/inspector/events/actions/moz.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.

DevToolsModules(
'index.js',
)
27 changes: 27 additions & 0 deletions devtools/client/inspector/events/components/EventsApp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* 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 {
DOM: dom,
PureComponent,
} = require("devtools/client/shared/vendor/react");
const { connect } = require("devtools/client/shared/vendor/react-redux");

class EventsApp extends PureComponent {
static get propTypes() {
return {};
}

render() {
return dom.div(
{
id: "events-container",
}
);
}
}

module.exports = connect(state => state)(EventsApp);
9 changes: 9 additions & 0 deletions devtools/client/inspector/events/components/moz.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.

DevToolsModules(
'EventsApp.js',
)
52 changes: 52 additions & 0 deletions devtools/client/inspector/events/events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/* 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 { createFactory, createElement } = require("devtools/client/shared/vendor/react");
const { Provider } = require("devtools/client/shared/vendor/react-redux");

const EventsApp = createFactory(require("./components/EventsApp"));

const { LocalizationHelper } = require("devtools/shared/l10n");
const INSPECTOR_L10N =
new LocalizationHelper("devtools/client/locales/inspector.properties");

class EventsView {

constructor(inspector, window) {
this.document = window.document;
this.inspector = inspector;
this.store = inspector.store;

this.init();
}

init() {
if (!this.inspector) {
return;
}

let eventsApp = EventsApp({});

let provider = createElement(Provider, {
id: "eventsview",
key: "eventsview",
store: this.store,
title: INSPECTOR_L10N.getStr("inspector.sidebar.eventsViewTitle")
}, eventsApp);

// Expose the provider to let inspector.js use it in setupSidebar.
this.provider = provider;
}

destroy() {
this.document = null;
this.inspector = null;
this.store = null;
}

}

module.exports = EventsView;
15 changes: 15 additions & 0 deletions devtools/client/inspector/events/moz.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.

DIRS += [
'actions',
'components',
'reducers',
]

DevToolsModules(
'events.js',
)
19 changes: 19 additions & 0 deletions devtools/client/inspector/events/reducers/events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* 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 INITIAL_EVENTS = [];

let reducers = {

};

module.exports = function (events = INITIAL_EVENTS, action) {
let reducer = reducers[action.type];
if (!reducer) {
return events;
}
return reducer(events, action);
};
7 changes: 7 additions & 0 deletions devtools/client/inspector/events/reducers/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* 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";

exports.events = require("./events");
10 changes: 10 additions & 0 deletions devtools/client/inspector/events/reducers/moz.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.

DevToolsModules(
'events.js',
'index.js',
)
26 changes: 26 additions & 0 deletions devtools/client/inspector/inspector.js
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,32 @@ Inspector.prototype = {
defaultTab == changesId);
}

if (Services.prefs.getBoolPref("devtools.eventsview.enabled")) {
// Inject a lazy loaded react tab by exposing a fake React object
// with a lazy defined Tab thanks to `panel` being a function
let eventsId = "eventsview";
let eventsTitle = INSPECTOR_L10N.getStr("inspector.sidebar.eventsViewTitle");
this.sidebar.addTab(
eventsId,
eventsTitle,
{
props: {
id: eventsId,
title: eventsTitle
},
panel: () => {
if (!this.eventview) {
const EventsView =
this.browserRequire("devtools/client/inspector/events/events");
this.eventsview = new EventsView(this, this.panelWin);
}

return this.eventsview.provider;
}
},
defaultTab == eventsId);
}

if (this.target.form.animationsActor) {
this.sidebar.addFrameTab(
"animationinspector",
Expand Down
1 change: 1 addition & 0 deletions devtools/client/inspector/moz.build
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ DIRS += [
'changes',
'components',
'computed',
'events',
'extensions',
'flexbox',
'fonts',
Expand Down
1 change: 1 addition & 0 deletions devtools/client/inspector/reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

exports.boxModel = require("devtools/client/inspector/boxmodel/reducers/box-model");
exports.changes = require("devtools/client/inspector/changes/reducers/changes");
exports.events = require("devtools/client/inspector/events/reducers/events");
exports.extensionsSidebar = require("devtools/client/inspector/extensions/reducers/sidebar");
exports.flexboxes = require("devtools/client/inspector/flexbox/reducers/flexboxes");
exports.fontOptions = require("devtools/client/inspector/fonts/reducers/font-options");
Expand Down
5 changes: 5 additions & 0 deletions devtools/client/locales/en-US/inspector.properties
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,11 @@ inspector.sidebar.newBadge=new!
# that corresponds to the tool displaying CSS changes.
inspector.sidebar.changesViewTitle=Changes

# LOCALIZATION NOTE (inspector.sidebar.eventsViewTitle):
# This is the title shown in a tab in the side panel of the Inspector panel
# that corresponds to the tool displaying the list of event listeners used in the page.
inspector.sidebar.eventsViewTitle=Events

# LOCALIZATION NOTE (inspector.sidebar.animationInspectorTitle):
# This is the title shown in a tab in the side panel of the Inspector panel
# that corresponds to the tool displaying animations defined in the page.
Expand Down
2 changes: 2 additions & 0 deletions devtools/client/preferences/devtools.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ pref("devtools.inspector.colorWidget.enabled", false);
pref("devtools.inspector.shapesHighlighter.enabled", true);
// Enable the Changes View
pref("devtools.changesview.enabled", false);
// Enable the Events View
pref("devtools.eventsview.enabled", false);
// Enable the Flexbox Inspector
pref("devtools.flexboxinspector.enabled", false);

Expand Down
1 change: 1 addition & 0 deletions devtools/client/shared/browser-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const BROWSER_BASED_DIRS = [
"resource://devtools/client/inspector/boxmodel",
"resource://devtools/client/inspector/changes",
"resource://devtools/client/inspector/computed",
"resource://devtools/client/inspector/events",
"resource://devtools/client/inspector/flexbox",
"resource://devtools/client/inspector/fonts",
"resource://devtools/client/inspector/grids",
Expand Down

0 comments on commit da3c839

Please sign in to comment.