feat(*): implement connection between content script and devTools pane

test-unit-sauce
Carlo s A. Guillen 10 years ago
parent 2ebab66b13
commit e81023bac7

@ -6,6 +6,18 @@ angular.module('ngHintUI')
$scope.module, $scope.type, $scope.isEmpty = ''; $scope.module, $scope.type, $scope.isEmpty = '';
//message data will be an array sent from hint log to batarang to here //message data will be an array sent from hint log to batarang to here
// connect to background page
var port = chrome.extension.connect();
port.onMessage.addListener(function(msg) {
$scope.$apply(function () {
$scope.messageData.Directives['Error-Messages'].push(msg + ' ' + Math.random());
});
});
port.onDisconnect.addListener(function (a) {
console.log(a);
});
$scope.messageData = { $scope.messageData = {
'Modules': { 'Modules': {
'Error-Messages': ['qwer$scope is a message', 'So issdfs $scope', 'Dont forget asdfsbout me too'], 'Error-Messages': ['qwer$scope is a message', 'So issdfs $scope', 'Dont forget asdfsbout me too'],

@ -0,0 +1,8 @@
chrome.runtime.onConnect.addListener(function(port) {
// context script > background
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
port.postMessage(msg);
});
});

2480
dist/hint.js vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,16 @@
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var main = require('./package.json').main;
gulp.task('watch', function(){
gulp.watch(['hint.js', '!./dist/*.js'], ['browserify']);
});
gulp.task('browserify', function() {
var bundleStream = browserify('./' + main).bundle().pipe(source(main));
return bundleStream.pipe(gulp.dest('./dist'));
});
gulp.task('default', ['browserify']);

File diff suppressed because it is too large Load Diff

@ -7,8 +7,6 @@
<script src="HintCtrl.js"></script> <script src="HintCtrl.js"></script>
<!--<script src="hint.js"></script>-->
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="app.css"> <link rel="stylesheet" href="app.css">

@ -1,23 +1,12 @@
require('./bower_components/angular-loader/angular-loader.js'); require('./bower_components/angular-loader/angular-loader.js');
require('angular-hint'); require('angular-hint');
var eventProxyElement = document.getElementById('__ngDebugElement');
// afterThisGetsDefined(window, 'angular', function () { var customEvent = document.createEvent('Event');
// afterThisGetsDefined(angular, 'module', function () { customEvent.initEvent('myCustomEvent', true, true);
// require('angular-hint');
// });
// });
// function afterThisGetsDefined(obj, prop, fn) { angular.hint.onMessage = function (data) {
// Object.defineProperty(obj, prop, { eventProxyElement.innerText = data;
// set: function (val) { eventProxyElement.dispatchEvent(customEvent);
// Object.defineProperty(obj, prop, { };
// configurable: true,
// writable: true
// });
// obj[prop] = val;
// fn();
// },
// configurable: true
// });
// }

@ -1,10 +1,20 @@
var html = document.getElementsByTagName('html')[0];
var eventProxyElement = document.createElement('div');
eventProxyElement.id = '__ngDebugElement';
eventProxyElement.style.display = 'none';
html.appendChild(eventProxyElement);
// inject into the application context from the content script context // inject into the application context from the content script context
var script = window.document.createElement('script'); var script = window.document.createElement('script');
script.src = chrome.extension.getURL('hint.bundle.js'); script.src = chrome.extension.getURL('hint.bundle.js');
var html = document.getElementsByTagName('html')[0]; eventProxyElement.addEventListener('myCustomEvent', function () {
var eventData = eventProxyElement.innerText;
chrome.extension.sendMessage(eventData);
});
html.setAttribute('ng-hint', ''); html.setAttribute('ng-hint', '');
html.appendChild(script); html.appendChild(script);

@ -5,3 +5,4 @@ var angularPanel = panels.create(
"img/angular.png", "img/angular.png",
"hint.html" "hint.html"
); );

@ -8,15 +8,20 @@
"tabs", "tabs",
"<all_urls>" "<all_urls>"
], ],
// "content_scripts": [ "content_scripts": [
// { {
// "matches": ["<all_urls>"], "matches": ["<all_urls>"],
// "js": ["inject.js"], "js": ["inject.js"],
// "run_at": "document_start" "run_at": "document_start"
// } }
// ], ],
"background": {
"scripts": [
"background.js"
]
},
"web_accessible_resources": [ "web_accessible_resources": [
// "hint.bundle.js" "hint.bundle.js"
], ],
"minimum_chrome_version": "21.0.1180.57" "minimum_chrome_version": "21.0.1180.57"
} }

@ -2,10 +2,11 @@
"name": "angularjs-batarang", "name": "angularjs-batarang",
"version": "0.5.0", "version": "0.5.0",
"description": "chrome extension for inspecting angular apps", "description": "chrome extension for inspecting angular apps",
"main": "index.js", "main": "hint.js",
"dependencies": { "dependencies": {
"angular-hint": "^0.0.0", "browserify": "^5.9.1",
"browserify": "^5.9.1" "gulp": "^3.8.7",
"vinyl-source-stream": "^0.1.1"
}, },
"devDependencies": {}, "devDependencies": {},
"scripts": { "scripts": {