У Вас кажется пропущено в конце "}());" закрытие вызова самой первой функции.
Тут две проблемы.
Во-первых из content_script просто так достучаться до любых методов и объектов из JS окружения веб-страницы нельзя, они специально действуют в разных. Но есть такой прием когда код из content_script уже будет иметь доступ к окружению страницы:
// делаем строку с функцией
var injectedCode = '(' + function(stringParameter) {
// вот этот код уже будет выполняться в контексте целевой страницы
// тут можно вызывать любые глобальные методы, которые были подключены на странице сайта
// даже можно витиевато передать какое-нибудь строковое значение
// например как мы передали в stringParameter
} + ')("' + '12345' + '");';
// создаем script элемент, суем туда эту строку и подключаем его к странице сайта
var script = document.createElement('script');
script.textContent = injectedCode;
(document.head || document.documentElement).appendChild(script);
// можно сразу и выпилить его =)
script.remove();
Вторая проблема это то, что если снаружи самовызывающейся фукнции не "торчит" какого-нибудь глобального объекта, то мы к тому коду не можем обратиться никак. Но обычно снаружи должно быть что-нибудь доступно, иначе в чем смысл создания этих объектов modal и socket.