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() { ...@@ -22,11 +22,13 @@ ImportDataHandler::ImportDataHandler() {
} }
ImportDataHandler::~ImportDataHandler() { ImportDataHandler::~ImportDataHandler() {
if (importer_host_ != NULL) {
importer_host_->SetObserver(NULL);
importer_host_ = NULL;
}
} }
void ImportDataHandler::Initialize() { void ImportDataHandler::Initialize() {
importer_host_ = new ImporterHost();
DetectSupportedBrowsers();
} }
void ImportDataHandler::GetLocalizedValues( void ImportDataHandler::GetLocalizedValues(
...@@ -53,10 +55,17 @@ void ImportDataHandler::GetLocalizedValues( ...@@ -53,10 +55,17 @@ void ImportDataHandler::GetLocalizedValues(
} }
void ImportDataHandler::RegisterMessages() { void ImportDataHandler::RegisterMessages() {
dom_ui_->RegisterMessageCallback(
"loadImporter", NewCallback(this, &ImportDataHandler::LoadImporter));
dom_ui_->RegisterMessageCallback( dom_ui_->RegisterMessageCallback(
"importData", NewCallback(this, &ImportDataHandler::ImportData)); "importData", NewCallback(this, &ImportDataHandler::ImportData));
} }
void ImportDataHandler::LoadImporter(const ListValue* args) {
importer_host_ = new ImporterHost();
DetectSupportedBrowsers();
}
void ImportDataHandler::DetectSupportedBrowsers() { void ImportDataHandler::DetectSupportedBrowsers() {
ListValue supported_browsers; ListValue supported_browsers;
int profiles_count = importer_host_->GetAvailableProfileCount(); int profiles_count = importer_host_->GetAvailableProfileCount();
...@@ -120,4 +129,5 @@ void ImportDataHandler::ImportItemEnded(importer::ImportItem item) { ...@@ -120,4 +129,5 @@ void ImportDataHandler::ImportItemEnded(importer::ImportItem item) {
void ImportDataHandler::ImportEnded() { void ImportDataHandler::ImportEnded() {
dom_ui_->CallJavascriptFunction(L"ImportDataOverlay.dismiss"); dom_ui_->CallJavascriptFunction(L"ImportDataOverlay.dismiss");
importer_host_ = NULL;
} }
...@@ -24,6 +24,7 @@ class ImportDataHandler : public OptionsPageUIHandler, ...@@ -24,6 +24,7 @@ class ImportDataHandler : public OptionsPageUIHandler,
virtual void RegisterMessages(); virtual void RegisterMessages();
private: private:
void LoadImporter(const ListValue* args);
void DetectSupportedBrowsers(); void DetectSupportedBrowsers();
void ImportData(const ListValue* args); void ImportData(const ListValue* args);
...@@ -34,7 +35,7 @@ class ImportDataHandler : public OptionsPageUIHandler, ...@@ -34,7 +35,7 @@ class ImportDataHandler : public OptionsPageUIHandler,
virtual void ImportEnded(); virtual void ImportEnded();
// If non-null it means importing is in progress. ImporterHost takes care // 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_; scoped_refptr<ImporterHost> importer_host_;
DISALLOW_COPY_AND_ASSIGN(ImportDataHandler); DISALLOW_COPY_AND_ASSIGN(ImportDataHandler);
......
...@@ -109,6 +109,10 @@ cr.define('options', function() { ...@@ -109,6 +109,10 @@ cr.define('options', function() {
}, },
}; };
ImportDataOverlay.loadImporter = function() {
chrome.send('loadImporter');
};
ImportDataOverlay.updateSupportedBrowsers = function(browsers) { ImportDataOverlay.updateSupportedBrowsers = function(browsers) {
ImportDataOverlay.getInstance().updateSupportedBrowsers_(browsers); ImportDataOverlay.getInstance().updateSupportedBrowsers_(browsers);
}; };
...@@ -141,8 +145,8 @@ cr.define('options', function() { ...@@ -141,8 +145,8 @@ cr.define('options', function() {
}; };
ImportDataOverlay.dismiss = function() { ImportDataOverlay.dismiss = function() {
OptionsPage.clearOverlays();
ImportDataOverlay.setImportingState(false); ImportDataOverlay.setImportingState(false);
OptionsPage.clearOverlays();
} }
// Export // Export
......
...@@ -68,7 +68,8 @@ cr.define('options', function() { ...@@ -68,7 +68,8 @@ cr.define('options', function() {
OptionsPage.showOverlay('stopSyncingOverlay'); OptionsPage.showOverlay('stopSyncingOverlay');
}; };
$('import_data').onclick = function(event) { $('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