Commit 443d39bb authored by sargrass@google.com's avatar sargrass@google.com

Fix a bug in ImportingData Overlay which cause crash when importing data multiple times.

Fix the problem when force closing the tab while importing.

BUG=49095
TEST=None

Review URL: http://codereview.chromium.org/3167028

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56933 0039d316-1c4b-4281-b951-d872f2087c98
parent 2ee2da82
......@@ -22,11 +22,13 @@ ImportDataHandler::ImportDataHandler() {
}
ImportDataHandler::~ImportDataHandler() {
if (importer_host_ != NULL) {
importer_host_->SetObserver(NULL);
importer_host_ = NULL;
}
}
void ImportDataHandler::Initialize() {
importer_host_ = new ImporterHost();
DetectSupportedBrowsers();
}
void ImportDataHandler::GetLocalizedValues(
......@@ -53,10 +55,17 @@ void ImportDataHandler::GetLocalizedValues(
}
void ImportDataHandler::RegisterMessages() {
dom_ui_->RegisterMessageCallback(
"loadImporter", NewCallback(this, &ImportDataHandler::LoadImporter));
dom_ui_->RegisterMessageCallback(
"importData", NewCallback(this, &ImportDataHandler::ImportData));
}
void ImportDataHandler::LoadImporter(const ListValue* args) {
importer_host_ = new ImporterHost();
DetectSupportedBrowsers();
}
void ImportDataHandler::DetectSupportedBrowsers() {
ListValue supported_browsers;
int profiles_count = importer_host_->GetAvailableProfileCount();
......@@ -120,4 +129,5 @@ void ImportDataHandler::ImportItemEnded(importer::ImportItem item) {
void ImportDataHandler::ImportEnded() {
dom_ui_->CallJavascriptFunction(L"ImportDataOverlay.dismiss");
importer_host_ = NULL;
}
......@@ -24,6 +24,7 @@ class ImportDataHandler : public OptionsPageUIHandler,
virtual void RegisterMessages();
private:
void LoadImporter(const ListValue* args);
void DetectSupportedBrowsers();
void ImportData(const ListValue* args);
......@@ -34,7 +35,7 @@ class ImportDataHandler : public OptionsPageUIHandler,
virtual void ImportEnded();
// If non-null it means importing is in progress. ImporterHost takes care
// of deleting itself when done.import.
// of deleting itself when done import.
scoped_refptr<ImporterHost> importer_host_;
DISALLOW_COPY_AND_ASSIGN(ImportDataHandler);
......
......@@ -109,6 +109,10 @@ cr.define('options', function() {
},
};
ImportDataOverlay.loadImporter = function() {
chrome.send('loadImporter');
};
ImportDataOverlay.updateSupportedBrowsers = function(browsers) {
ImportDataOverlay.getInstance().updateSupportedBrowsers_(browsers);
};
......@@ -141,8 +145,8 @@ cr.define('options', function() {
};
ImportDataOverlay.dismiss = function() {
OptionsPage.clearOverlays();
ImportDataOverlay.setImportingState(false);
OptionsPage.clearOverlays();
}
// Export
......
......@@ -68,7 +68,8 @@ cr.define('options', function() {
OptionsPage.showOverlay('stopSyncingOverlay');
};
$('import_data').onclick = function(event) {
OptionsPage.showOverlay('importDataOverlay');
ImportDataOverlay.loadImporter();
OptionsPage.showOverlay('importDataOverlay');
};
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment