// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// For open-source builds, the redirect URL ends in /dev. For official builds,
// it ends in /rel/{extension-id}. This distinction is handled by the manifest;
// all we have to do here is check the extension id in the case that there is
// one, to allow the official beta and dev channels to co-exist.

var extensionId = chrome.i18n.getMessage('@@extension_id');
var officialPath = '/talkgadget/oauth/chrome-remote-desktop/rel/' + extensionId;
var unofficialPath = '/talkgadget/oauth/chrome-remote-desktop/dev';

if (window.location.pathname == officialPath ||
    window.location.pathname == unofficialPath) {
  var query = window.location.search.substring(1);
  var parts = query.split('&');
  var queryArgs = {};
  for (var i = 0; i < parts.length; i++) {
    var pair = parts[i].split('=');
    queryArgs[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
  }

  chrome.extension.sendMessage(queryArgs);
  window.close();
}
