Skip to content

Commit

Permalink
Don't report sublayers for non-wms uris
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Apr 4, 2023
1 parent 6cafd48 commit ad7e2a3
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
20 changes: 14 additions & 6 deletions src/providers/wms/qgswmsprovider.cpp
Expand Up @@ -5248,12 +5248,20 @@ QList<QgsProviderSublayerDetails> QgsWmsProviderMetadata::querySublayers( const
const QVariantMap parts = decodeUri( uri );
if ( !parts.contains( QStringLiteral( "path" ) ) )
{
// online wms source
QgsProviderSublayerDetails details;
details.setUri( uri );
details.setProviderKey( key() );
details.setType( Qgis::LayerType::Raster );
return {details};
if ( parts.value( QStringLiteral( "url" ) ).isValid() )
{
// online wms source
QgsProviderSublayerDetails details;
details.setUri( uri );
details.setProviderKey( key() );
details.setType( Qgis::LayerType::Raster );
return {details};
}
else
{
// not a wms uri
return {};
}
}

fileName = parts.value( QStringLiteral( "path" ) ).toString();
Expand Down
11 changes: 7 additions & 4 deletions tests/src/providers/testqgswmsprovider.cpp
Expand Up @@ -194,10 +194,13 @@ class TestQgsWmsProvider: public QgsTest
// not mbtile uris
QCOMPARE( wmsMetadata->priorityForUri( QString() ), 0 );
QCOMPARE( wmsMetadata->validLayerTypesForUri( QString() ), {} );
QVERIFY( wmsMetadata->querySublayers( QString() ).isEmpty() );
QVERIFY( wmsMetadata->querySublayers( QStringLiteral( "xxx" ) ).isEmpty() );

QCOMPARE( wmsMetadata->priorityForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/points.shp" ) ), 0 );
QVERIFY( wmsMetadata->validLayerTypesForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/points.shp" ) ).isEmpty() );
QVERIFY( wmsMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/points.shp" ) ).isEmpty() );
QVERIFY( wmsMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) ).isEmpty() );

QCOMPARE( wmsMetadata->priorityForUri( QStringLiteral( "type=mbtiles&url=%1/points.shp" ).arg( TEST_DATA_DIR ) ), 0 );
QVERIFY( wmsMetadata->validLayerTypesForUri( QStringLiteral( "type=mbtiles&url=%1/points.shp" ).arg( TEST_DATA_DIR ) ).isEmpty() );
Expand Down Expand Up @@ -229,10 +232,10 @@ class TestQgsWmsProvider: public QgsTest
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

// WMS source
sublayers = wmsMetadata->querySublayers( QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
sublayers = wmsMetadata->querySublayers( QStringLiteral( "url=http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.size(), 1 );
QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "wms" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "url=http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

Expand All @@ -255,10 +258,10 @@ class TestQgsWmsProvider: public QgsTest
QVERIFY( sublayers.at( 0 ).skippedContainerScan() );

// WMS source
sublayers = wmsMetadata->querySublayers( QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ), Qgis::SublayerQueryFlag::FastScan );
sublayers = wmsMetadata->querySublayers( QStringLiteral( "url=http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ), Qgis::SublayerQueryFlag::FastScan );
QCOMPARE( sublayers.size(), 1 );
QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "wms" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "url=http://localhost:8380/mapserv?xxx&layers=agri_zones&styles=fb_style&format=image/jpg" ) );
QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::Raster );
QVERIFY( !sublayers.at( 0 ).skippedContainerScan() );

Expand Down

0 comments on commit ad7e2a3

Please sign in to comment.