Chrome App Extension not working with Oauth Javascript-Collection of common programming errors

I’m getting this error “Uncaught TypeError: Cannot call method ‘setBadgeText’ of undefined “

This is my code below:

This used to work in Chrome 27.0, but now with Chrome 29.0 it seems to have stopped functioning. I’m not sure if it’s this or the.. manifest.json file which loads this in the background.

  var DOCLIST_SCOPE = 'https://docs.google.com/feeds';
  var DOCLIST_FEED = DOCLIST_SCOPE + '/default/private/full/';
  var docs = []; // In memory cache for the user's entire doclist.
  var refreshRate = localStorage.refreshRate || 300; // 5 min default.
  var pollIntervalMin = 1000 * refreshRate;
  var requests = [];

  var oauth = ChromeExOAuth.initBackgroundPage({
    'request_url': 'https://www.google.com/accounts/OAuthGetRequestToken',
    'authorize_url': 'https://www.google.com/accounts/OAuthAuthorizeToken',
    'access_url': 'https://www.google.com/accounts/OAuthGetAccessToken',
    'consumer_key': 'anonymous',
    'consumer_secret': 'anonymous',
    'scope': DOCLIST_SCOPE,
    'app_name': 'App Name'
  });

  function setIcon(opt_badgeObj) {
    if (opt_badgeObj) {
      var badgeOpts = {};
      if (opt_badgeObj && opt_badgeObj.text != undefined) {
        badgeOpts['text'] = opt_badgeObj.text;
      }
      if (opt_badgeObj && opt_badgeObj.tabId) {
        badgeOpts['tabId'] = opt_badgeObj.tabId;
      }
      chrome.browserAction.setBadgeText(badgeOpts);
    }
  };

  function clearPendingRequests() {
    for (var i = 0, req; req = requests[i]; ++i) {
      window.clearTimeout(req);
    }
    requests = [];
  };

  function logout() {
    docs = [];
    setIcon({'text': ''});
    oauth.clearTokens();
    clearPendingRequests();
  };